Atmel加密認證芯片的應(yīng)用實例
作者 貝能國際
本文引用地址:http://www.ex-cimer.com/article/201806/382310.htm摘要:介紹了基于Atmel加密認證芯片的應(yīng)用實例。
大概所有工程師最痛恨的莫過于自己的產(chǎn)品被山寨,自己的代碼無法被保護,成為網(wǎng)上公開資源。也或者服務(wù)器被黑客攻擊,無法正常運營,造成惡劣影響甚至安全隱患。有沒有辦法來阻止上述現(xiàn)象的發(fā)生或者減少類似事情發(fā)生呢?
有!從加密學的角度來講有三個層次:數(shù)據(jù)加密、數(shù)據(jù)完整性和身份認證。三者之中哪一個最重要呢?身份認證,如果對方不是我要通訊的目標,干脆拒絕與之溝通,是不是更安全?
Atmel公司提供的身份加密認證分兩種,一種是非對稱加密算法,如ATECC508A。這一類產(chǎn)品功能強大,每個器件都可以有一對自己的公私鑰,兩兩不同,適用于做網(wǎng)絡(luò)云端的身份認證。另一種是對稱加密算法,如ATSHA204A, 該器件適合用作產(chǎn)品防拷貝、軟件IP核保護、或配件防偽,防止贗品的應(yīng)用風險。
1 ATSHA204A功能特點
ATSHA204A具有以下功能特點:支持SHA-256算法;內(nèi)置16*32字節(jié)的slot(EEPROM),存儲用戶數(shù)據(jù)和秘鑰;唯一的9字節(jié)序列號;512 bits的OTP區(qū)用于保存固定信息;兩種通信方式支持單總線和I2C;2.0~5.5 V供電;休眠<150 nA;片上主動屏蔽層;所有存儲器內(nèi)部加密;內(nèi)部狀態(tài)一致性檢查;電源篡改保護;溫度鎖定;內(nèi)部時鐘產(chǎn)生;沒有封裝或晶粒識別;設(shè)計目的是防御多種攻擊,如圖1所示。
2 功能簡介
加密認證芯片內(nèi)部有三個區(qū)域: Configuration、Data和OTP。關(guān)鍵性能如下所示:
1)與芯片的通訊,都是基于“命令”來進行;
2)Configuration和Data區(qū)一旦鎖定,沒有辦法解鎖,鎖定的方法是通過lock命令;
3)Configuration區(qū)在未鎖定的時候,可以使用write 命令來寫操作,但0x00-0x03地址不能寫,序列號和版本號出廠固定。0x15地址不能用write命令來寫;
4)在Configuration鎖定前,Data和OTP區(qū)既不能寫也不能讀。而在Configuration鎖定后,Data區(qū)鎖定前,Data區(qū)只能寫不能讀,在Data區(qū)鎖定后,是否可讀寫由Configuration中的配置來決定。
5)配置區(qū)與秘鑰存儲區(qū)有嚴格的對應(yīng)關(guān)系,秘鑰區(qū)的使用需要遵守配置區(qū)的配置參數(shù),不匹配的話會導(dǎo)致命令執(zhí)行失敗。
3 配置應(yīng)用
配置有兩種方法:一是利用上位機配置軟件,配合燒寫器工具進行配置,如圖2所示。
這種方式可視化,界面直觀好理解。同時提供多種插件驗證工具,使用便捷。但需要配合硬件的工具來實現(xiàn)。
另一種方法,使用MCU程序配置。優(yōu)點是可以在電路板上操作,不需要額外的工具。相對繁瑣的是,需要一個單獨的配置程序在MCU上運行一下,完成配置功能后,才能再燒寫用戶的應(yīng)用程序。以上兩種方法各有利弊,需要權(quán)衡使用。不管采用哪種方式,對秘鑰的保護是至關(guān)重要的,尤其是對稱加密認證的方式,一旦泄露,防護功能就會形同虛設(shè)。
具體到產(chǎn)品應(yīng)用時,可以所有產(chǎn)品都用同一個秘鑰,這樣秘鑰管理簡單,但風險相對較高。也可以每個產(chǎn)品都用不同的秘鑰,只是秘鑰管理相對麻煩。也可以巧妙的利用芯片本身的唯一序列號,配合根秘鑰來派生不同的秘鑰,將這個派生秘鑰用于產(chǎn)品,這樣既方便管理,又不至于使所有產(chǎn)品都用一個秘鑰。如圖3所示即為一種典型的利用派生秘鑰做加密認證的應(yīng)用。
4 軟件實現(xiàn)
Microchip公司官方提供開源軟件包,版本為Cryptoauthlib-20171117。該軟件包支持ATECC608A。下載時郵箱注冊即可。
CryptoAuthLib分三個部分,它們是庫的主要接口,分別為atcab、atcah和atcac。
1)atcab是ATCA設(shè)備的主要接口。這部分包含所有的初始化,芯片配置和設(shè)置。
2) atcah提供在ATCA設(shè)備上執(zhí)行的命令,這些命令支持高級調(diào)試和MCU的模擬。
3)atcac提供對在軟件中實現(xiàn)的加密命令的訪問。
5 對稱加密認證實例
對稱身份驗證是一個挑戰(zhàn)/響應(yīng)過程,主機設(shè)備挑戰(zhàn)遠程設(shè)備,例如附件(如電池)或可消耗設(shè)備(墨盒),以確保真實可信。被挑戰(zhàn)的設(shè)備對預(yù)期的結(jié)果作出反應(yīng)。該方法要求主機和遠程設(shè)備共享相同的密鑰。開發(fā)人員面臨的問題是如何安全地將這些秘密嵌入到主機和遠程設(shè)備中,解決方案是使用一個安全的硬件密鑰存儲設(shè)備,來包含主機和遠程設(shè)備中的共享密鑰和惟一序列號。這個實驗室我們將使用ATECC508A來實現(xiàn),如圖4、圖5和圖6所示。
在本實驗室中,將模擬一個包含以下內(nèi)容的系統(tǒng):
1)主機裝置,包含一個微控制器和一個安全的硬件加密授權(quán)設(shè)備,ECC508A。
2)遠程設(shè)備,只包含一個安全的硬件加密授權(quán)設(shè)備,在ECC508A(無微控制器)。
主機和遠程設(shè)備的ECC508A都需要配置共享密鑰,所有ECC508都包含一個惟一的序列號。
配置共享密鑰:
芯片在使用前需要進行配置,配置的內(nèi)容包括,對配置區(qū)進行寫操作,內(nèi)容是設(shè)置秘鑰槽的使用和訪問權(quán)限,之后對配置區(qū)進行鎖定。鎖定配置區(qū)后才可以寫數(shù)據(jù)區(qū),對數(shù)據(jù)區(qū)的操作就是寫秘鑰槽,這時數(shù)據(jù)區(qū)為只讀,通過返回值判斷寫入是否成功。
注意事項:
第一步,MCU從主機端ATECC508讀取序列號,由它生產(chǎn)一個隨機數(shù);
第二步,MCU切換到與從機ATECC508A通訊,讀取序列號,再由從機ATECC508A利用自己的序列號,剛才生產(chǎn)的隨機數(shù)和保存在它里面的秘鑰進行硬件哈希運算,運算結(jié)果發(fā)給主機MCU;
第三步,MCU重新切換回與主機ATECC508的通訊,把剛剛得到的哈希運算結(jié)果,隨機數(shù)和序列號給它。由它再根據(jù)自己保存的秘鑰和隨機數(shù)、序列號一起來驗證從機端計算完的結(jié)果是否和自己計算的一致,來最終判定是否驗證通過。
6 結(jié)論
Atmel的加密認證芯片本身具有一系列的防護措施,在增加成本不多的前提下,可以給客戶帶來極高的安全價值體驗。在配件防偽和防抄板方面表現(xiàn)優(yōu)異,使得產(chǎn)品仿制變得難度更高,可以更好的保護產(chǎn)品,避免不必要的損失。
本文來源于《電子產(chǎn)品世界》2018年第7期第79頁,歡迎您寫論文時引用,并注明出處。
評論