一種基于A(yíng)TSHA204的密鑰認證系統設計
摘要:當前電子系統的設計成本越來(lái)越高,PCB抄板卻變得容易,Flash中的程序也容易被拷貝出來(lái),整個(gè)電子產(chǎn)品系統被克隆的幾率變得越來(lái)越大。針對這種現象,設計了一種基于Atmel公司ATSHA204的嵌入式密鑰認證系統。首先對ATSHA204進(jìn)行簡(jiǎn)單的介紹,然后闡述了其中的關(guān)鍵算法SHA-256,并進(jìn)行了軟件測試,最后使用ATmega128平臺對SD卡進(jìn)行讀取,驗證了整個(gè)認證系統。
本文引用地址:http://dyxdggzs.com/article/245795.htm引言
現代嵌入式軟件系統越來(lái)越復雜,開(kāi)發(fā)成本很高,且都是基于控制器外加Flash存儲芯片的設計方案,上電即從存儲芯片讀取程序運行,放在Flash中的程序容易被拷貝,PCB電路板也很容易被復制。為了更好地保護好產(chǎn)品免遭克隆,保護程序設計者的知識產(chǎn)權免受侵害,有必要在系統中使用密鑰認證技術(shù)。
目前在芯片加密方面主要有使用專(zhuān)用密鑰認證芯片,如Atmel AT88系列;其次就是使用不可破解的芯片,如EPLDEPM7128、Actel公司的CPLD;或使用MASK(掩膜)IC,一般來(lái)說(shuō)MASK IC要比可編程芯片難破解。
本文介紹的ATSHA204是Atmel公司推出的一款專(zhuān)用加密芯片,采用SHA-256公鑰算法,具有體積小、功耗低、安全性高等一系列特點(diǎn),價(jià)格也較低,使用范圍廣泛。
1 ATSHA204加密芯片簡(jiǎn)介
1.1 主要特性
ATSHA204包含一個(gè)可以用來(lái)存儲密鑰數據和關(guān)鍵字的EEPROM陣列,不同陣列區域的訪(fǎng)問(wèn)方式不同,通過(guò)合理配置,可以在實(shí)現認證的同時(shí)防止密鑰被讀取。該芯片能有防范各種物理攻擊的機制,能阻止在主機和芯片間傳輸數據時(shí)受到的邏輯攻擊。每個(gè)ATSHA204出廠(chǎng)時(shí)都具有一個(gè)唯一的9字節的序列號,兼容標準I2C總線(xiàn)通信時(shí)序,也可通過(guò)單線(xiàn)通信的方式。
1.2 認證流程
為了簡(jiǎn)化編程,ATSHA204支持標準的摘要一答應協(xié)議,主機發(fā)送一個(gè)256位的摘要信息(challenage)到ATSHA204芯片,芯片將摘要信息和存儲在芯片內的秘鑰一起通過(guò)哈希算法計算出一個(gè)響應,然后發(fā)回到主機。主機只發(fā)送摘要信息到設備上面,避免了通過(guò)總線(xiàn)時(shí)序觀(guān)察到秘鑰數據的可能性。主機控制器也通過(guò)相關(guān)的公鑰算法計算出響應,與設備發(fā)送回來(lái)的響應對比,實(shí)現認證。
1.3 芯片組成
ATSHA204加密芯片內部包含Static RAM和EEPRO,RAM主要用來(lái)存儲輸入命令以及輸出結果,EEPROM總大小為4.5 Kb,包含數據區、配置區以及OTP(一次性編程)區域。
數據(data)區:數據區的總大小是512 Kb,包含16個(gè)通用的容量為32字節的數據槽。這些數據槽可用來(lái)存儲秘鑰、校準數據以及型號信息。每個(gè)數據槽可通過(guò)配置區配置成只讀、可讀寫(xiě)、不可訪(fǎng)問(wèn)三種方式。
配置(config)區:配置區的大小為88字節,配置區包含芯片的序列號、ID信息以及每個(gè)數據槽的訪(fǎng)問(wèn)權限信息。
一次性編程(OTP)區:大小為64字節,在鎖定OTP區域之前,可以通過(guò)寫(xiě)命令對OTP區域進(jìn)行寫(xiě)入操作。
2 ATSHA204加密芯片配置方法
ATSHA204有兩種與主機通信的方式,可以通過(guò)UART或者I2C總線(xiàn)接口進(jìn)行通信,本沒(méi)訃采用帶有I2C總線(xiàn)接口的芯片。如果主機I/O口在45~85 ms的時(shí)間內沒(méi)有發(fā)出時(shí)序,則ATSHA204芯片會(huì )進(jìn)入休眠狀態(tài),因此在使用前都應當對芯片進(jìn)行喚醒操作。
①配置config區域。config區域的配置是整個(gè)芯片配置的核心,分為對數據槽的配置和對OTP區域的配置。ATSHA204配置區包含對16個(gè)數據槽(data slot)的配置,配置的主要目的是對16個(gè)數據槽的訪(fǎng)問(wèn)進(jìn)行限制,每個(gè)數據槽的配置項為16位,控制著(zhù)對應的數據槽的訪(fǎng)問(wèn)和使用,本設計中對16個(gè)數據槽統一配置如表1所列,每個(gè)數據項的配置值為0x8080。
?

?
OTP區域配置項對應在config區域中的第4個(gè)block中的第3個(gè)字節,有兩種配置模式:0xAA(Read-onlymode),當OTP區域被鎖定時(shí),禁止寫(xiě)入;0x00(Legacymode),當OTP區域被鎖定時(shí),禁止寫(xiě)入,32字節讀也被禁止。本設計中為了保密沒(méi)計,配置為0x00。
②使用LOCK命令鎖定config區域。
③配置data區域。data區域的配置使用標準的write名字將數據寫(xiě)入其中即可,本設計采用32字節一次性寫(xiě)入的方式,每個(gè)data slot可以寫(xiě)入不同的數據,寫(xiě)入data slot中的數據將參與后續的MAC運算,因此對于每組寫(xiě)入data slot中的數據必須謹記。
④寫(xiě)OTP區域。OTP區域屬于一次性編程區域,一次性寫(xiě)入之后便不可更改,因此應當謹慎操作,OTP中存放的秘鑰也將作為SHA-256輸入,在使用MAC方式認證時(shí),只需用到OTP區域中的前11字節,因此只需對前11字節進(jìn)行寫(xiě)入數據操作即可。
⑤使用LOCK命令鎖定數據區和OTP區域。
3 SHA-256認證算法與MAC
3.1 SHA-256算法
SHA(Securc Hash Algorithm,安全散列算法)是美國國家安全局(NSA)設計、美國國家標準與技術(shù)研究院(NIST)發(fā)布的一系列密碼散列函數。SHA-256是NIST發(fā)布了額外的SHA變體,具有256位的信息摘要長(cháng)度。該算法的簡(jiǎn)要處理流程包括以下幾步:消息填充→附加消息長(cháng)度→初始化緩存→迭代壓縮→得出哈希結果(digest)。
3.2 MAC
MAC(消息鑒別碼)實(shí)現鑒別的原理是,用公開(kāi)函數和密鑰產(chǎn)生一個(gè)固定長(cháng)度的值作為認證標識,用這個(gè)標識鑒別消息的完整性。使用一個(gè)密鑰生成一個(gè)固定大小的小數據塊,即MAC,并將其加入到消息中,然后傳輸。接收方利用與發(fā)送方共享的密鑰進(jìn)行鑒別認證。ATSHA204中的MAC命令使用SHA-256哈希算法,以88字節的信息量作為輸入,并產(chǎn)生一個(gè)32字節的報文摘要,以供認證和鑒別。
4 基于A(yíng)Tmega128平臺的實(shí)現
4.1 硬件設計
本設計采用8引腳SOIC封裝的ATSHA204,其中4個(gè)引腳是無(wú)效的,其他4個(gè)引腳對應VCC、GND、一個(gè)同步時(shí)鐘信號SCL、一個(gè)數據信號SDA SCL和SDA分別接到ATmege128的SDL和SDA上,使用ATmege128自帶的I2C總線(xiàn)接口與ATSHA204進(jìn)行通信。接線(xiàn)示意圖如圖1所示。
評論