一種基于ATSHA204的密鑰認(rèn)證系統(tǒng)設(shè)計(jì)
摘要:當(dāng)前電子系統(tǒng)的設(shè)計(jì)成本越來越高,PCB抄板卻變得容易,F(xiàn)lash中的程序也容易被拷貝出來,整個(gè)電子產(chǎn)品系統(tǒng)被克隆的幾率變得越來越大。針對(duì)這種現(xiàn)象,設(shè)計(jì)了一種基于Atmel公司ATSHA204的嵌入式密鑰認(rèn)證系統(tǒng)。首先對(duì)ATSHA204進(jìn)行簡(jiǎn)單的介紹,然后闡述了其中的關(guān)鍵算法SHA-256,并進(jìn)行了軟件測(cè)試,最后使用ATmega128平臺(tái)對(duì)SD卡進(jìn)行讀取,驗(yàn)證了整個(gè)認(rèn)證系統(tǒng)。
本文引用地址:http://m.butianyuan.cn/article/245795.htm引言
現(xiàn)代嵌入式軟件系統(tǒng)越來越復(fù)雜,開發(fā)成本很高,且都是基于控制器外加Flash存儲(chǔ)芯片的設(shè)計(jì)方案,上電即從存儲(chǔ)芯片讀取程序運(yùn)行,放在Flash中的程序容易被拷貝,PCB電路板也很容易被復(fù)制。為了更好地保護(hù)好產(chǎn)品免遭克隆,保護(hù)程序設(shè)計(jì)者的知識(shí)產(chǎn)權(quán)免受侵害,有必要在系統(tǒng)中使用密鑰認(rèn)證技術(shù)。
目前在芯片加密方面主要有使用專用密鑰認(rèn)證芯片,如Atmel AT88系列;其次就是使用不可破解的芯片,如EPLDEPM7128、Actel公司的CPLD;或使用MASK(掩膜)IC,一般來說MASK IC要比可編程芯片難破解。
本文介紹的ATSHA204是Atmel公司推出的一款專用加密芯片,采用SHA-256公鑰算法,具有體積小、功耗低、安全性高等一系列特點(diǎn),價(jià)格也較低,使用范圍廣泛。
1 ATSHA204加密芯片簡(jiǎn)介
1.1 主要特性
ATSHA204包含一個(gè)可以用來存儲(chǔ)密鑰數(shù)據(jù)和關(guān)鍵字的EEPROM陣列,不同陣列區(qū)域的訪問方式不同,通過合理配置,可以在實(shí)現(xiàn)認(rèn)證的同時(shí)防止密鑰被讀取。該芯片能有防范各種物理攻擊的機(jī)制,能阻止在主機(jī)和芯片間傳輸數(shù)據(jù)時(shí)受到的邏輯攻擊。每個(gè)ATSHA204出廠時(shí)都具有一個(gè)唯一的9字節(jié)的序列號(hào),兼容標(biāo)準(zhǔn)I2C總線通信時(shí)序,也可通過單線通信的方式。
1.2 認(rèn)證流程
為了簡(jiǎn)化編程,ATSHA204支持標(biāo)準(zhǔn)的摘要一答應(yīng)協(xié)議,主機(jī)發(fā)送一個(gè)256位的摘要信息(challenage)到ATSHA204芯片,芯片將摘要信息和存儲(chǔ)在芯片內(nèi)的秘鑰一起通過哈希算法計(jì)算出一個(gè)響應(yīng),然后發(fā)回到主機(jī)。主機(jī)只發(fā)送摘要信息到設(shè)備上面,避免了通過總線時(shí)序觀察到秘鑰數(shù)據(jù)的可能性。主機(jī)控制器也通過相關(guān)的公鑰算法計(jì)算出響應(yīng),與設(shè)備發(fā)送回來的響應(yīng)對(duì)比,實(shí)現(xiàn)認(rèn)證。
1.3 芯片組成
ATSHA204加密芯片內(nèi)部包含Static RAM和EEPRO,RAM主要用來存儲(chǔ)輸入命令以及輸出結(jié)果,EEPROM總大小為4.5 Kb,包含數(shù)據(jù)區(qū)、配置區(qū)以及OTP(一次性編程)區(qū)域。
數(shù)據(jù)(data)區(qū):數(shù)據(jù)區(qū)的總大小是512 Kb,包含16個(gè)通用的容量為32字節(jié)的數(shù)據(jù)槽。這些數(shù)據(jù)槽可用來存儲(chǔ)秘鑰、校準(zhǔn)數(shù)據(jù)以及型號(hào)信息。每個(gè)數(shù)據(jù)槽可通過配置區(qū)配置成只讀、可讀寫、不可訪問三種方式。
配置(config)區(qū):配置區(qū)的大小為88字節(jié),配置區(qū)包含芯片的序列號(hào)、ID信息以及每個(gè)數(shù)據(jù)槽的訪問權(quán)限信息。
一次性編程(OTP)區(qū):大小為64字節(jié),在鎖定OTP區(qū)域之前,可以通過寫命令對(duì)OTP區(qū)域進(jìn)行寫入操作。
2 ATSHA204加密芯片配置方法
ATSHA204有兩種與主機(jī)通信的方式,可以通過UART或者I2C總線接口進(jìn)行通信,本沒訃采用帶有I2C總線接口的芯片。如果主機(jī)I/O口在45~85 ms的時(shí)間內(nèi)沒有發(fā)出時(shí)序,則ATSHA204芯片會(huì)進(jìn)入休眠狀態(tài),因此在使用前都應(yīng)當(dāng)對(duì)芯片進(jìn)行喚醒操作。
①配置config區(qū)域。config區(qū)域的配置是整個(gè)芯片配置的核心,分為對(duì)數(shù)據(jù)槽的配置和對(duì)OTP區(qū)域的配置。ATSHA204配置區(qū)包含對(duì)16個(gè)數(shù)據(jù)槽(data slot)的配置,配置的主要目的是對(duì)16個(gè)數(shù)據(jù)槽的訪問進(jìn)行限制,每個(gè)數(shù)據(jù)槽的配置項(xiàng)為16位,控制著對(duì)應(yīng)的數(shù)據(jù)槽的訪問和使用,本設(shè)計(jì)中對(duì)16個(gè)數(shù)據(jù)槽統(tǒng)一配置如表1所列,每個(gè)數(shù)據(jù)項(xiàng)的配置值為0x8080。
?
?
OTP區(qū)域配置項(xiàng)對(duì)應(yīng)在config區(qū)域中的第4個(gè)block中的第3個(gè)字節(jié),有兩種配置模式:0xAA(Read-onlymode),當(dāng)OTP區(qū)域被鎖定時(shí),禁止寫入;0x00(Legacymode),當(dāng)OTP區(qū)域被鎖定時(shí),禁止寫入,32字節(jié)讀也被禁止。本設(shè)計(jì)中為了保密沒計(jì),配置為0x00。
②使用LOCK命令鎖定config區(qū)域。
③配置data區(qū)域。data區(qū)域的配置使用標(biāo)準(zhǔn)的write名字將數(shù)據(jù)寫入其中即可,本設(shè)計(jì)采用32字節(jié)一次性寫入的方式,每個(gè)data slot可以寫入不同的數(shù)據(jù),寫入data slot中的數(shù)據(jù)將參與后續(xù)的MAC運(yùn)算,因此對(duì)于每組寫入data slot中的數(shù)據(jù)必須謹(jǐn)記。
④寫OTP區(qū)域。OTP區(qū)域?qū)儆谝淮涡跃幊虆^(qū)域,一次性寫入之后便不可更改,因此應(yīng)當(dāng)謹(jǐn)慎操作,OTP中存放的秘鑰也將作為SHA-256輸入,在使用MAC方式認(rèn)證時(shí),只需用到OTP區(qū)域中的前11字節(jié),因此只需對(duì)前11字節(jié)進(jìn)行寫入數(shù)據(jù)操作即可。
⑤使用LOCK命令鎖定數(shù)據(jù)區(qū)和OTP區(qū)域。
3 SHA-256認(rèn)證算法與MAC
3.1 SHA-256算法
SHA(Securc Hash Algorithm,安全散列算法)是美國(guó)國(guó)家安全局(NSA)設(shè)計(jì)、美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布的一系列密碼散列函數(shù)。SHA-256是NIST發(fā)布了額外的SHA變體,具有256位的信息摘要長(zhǎng)度。該算法的簡(jiǎn)要處理流程包括以下幾步:消息填充→附加消息長(zhǎng)度→初始化緩存→迭代壓縮→得出哈希結(jié)果(digest)。
3.2 MAC
MAC(消息鑒別碼)實(shí)現(xiàn)鑒別的原理是,用公開函數(shù)和密鑰產(chǎn)生一個(gè)固定長(zhǎng)度的值作為認(rèn)證標(biāo)識(shí),用這個(gè)標(biāo)識(shí)鑒別消息的完整性。使用一個(gè)密鑰生成一個(gè)固定大小的小數(shù)據(jù)塊,即MAC,并將其加入到消息中,然后傳輸。接收方利用與發(fā)送方共享的密鑰進(jìn)行鑒別認(rèn)證。ATSHA204中的MAC命令使用SHA-256哈希算法,以88字節(jié)的信息量作為輸入,并產(chǎn)生一個(gè)32字節(jié)的報(bào)文摘要,以供認(rèn)證和鑒別。
4 基于ATmega128平臺(tái)的實(shí)現(xiàn)
4.1 硬件設(shè)計(jì)
本設(shè)計(jì)采用8引腳SOIC封裝的ATSHA204,其中4個(gè)引腳是無效的,其他4個(gè)引腳對(duì)應(yīng)VCC、GND、一個(gè)同步時(shí)鐘信號(hào)SCL、一個(gè)數(shù)據(jù)信號(hào)SDA SCL和SDA分別接到ATmege128的SDL和SDA上,使用ATmege128自帶的I2C總線接口與ATSHA204進(jìn)行通信。接線示意圖如圖1所示。
評(píng)論