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