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