• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ATSHA204的密鑰認(rèn)證系統(tǒng)設(shè)計

    2014-09-25 03:05:42劉志軍王建
    關(guān)鍵詞:哈希字節(jié)密鑰

    劉志軍,王建

    (華南農(nóng)業(yè)大學(xué)工程學(xué)院,廣州510642)

    引 言

    現(xiàn)代嵌入式軟件系統(tǒng)越來越復(fù)雜,開發(fā)成本很高,且都是基于控制器外加Flash存儲芯片的設(shè)計方案,上電即從存儲芯片讀取程序運行,放在Flash中的程序容易被拷貝,PCB電路板也很容易被復(fù)制。為了更好地保護(hù)好產(chǎn)品免遭克隆,保護(hù)程序設(shè)計者的知識產(chǎn)權(quán)免受侵害,有必要在系統(tǒng)中使用密鑰認(rèn)證技術(shù)。

    目前在芯片加密方面主要有使用專用密鑰認(rèn)證芯片,如Atmel AT88系列;其次就是使用不可破解的芯片,如EPLDEPM7128、Actel公司的CPLD;或使用MASK(掩膜)IC,一般來說MASK IC要比可編程芯片難破解。

    本文介紹的ATSHA204[1]是Atmel公司推出的一款專用加密芯片,采用SHA-256[2]公鑰算法,具有體積小、功耗低、安全性高等一系列特點,價格也較低,使用范圍廣泛。

    1 ATSHA204加密芯片簡介

    1.1 主要特性

    ATSHA204包含一個可以用來存儲密鑰數(shù)據(jù)和關(guān)鍵字的EEPROM陣列,不同陣列區(qū)域的訪問方式不同,通過合理配置,可以在實現(xiàn)認(rèn)證的同時防止密鑰被讀取。該芯片能有防范各種物理攻擊的機制,能阻止在主機和芯片間傳輸數(shù)據(jù)時受到的邏輯攻擊。每個ATSHA204出廠時都具有一個唯一的9字節(jié)的序列號,兼容標(biāo)準(zhǔn)I2C總線通信時序,也可通過單線通信的方式。

    1.2 認(rèn)證流程

    為了簡化編程,ATSHA204支持標(biāo)準(zhǔn)的摘要—答應(yīng)協(xié)議,主機發(fā)送一個256位的摘要信息(challenage)到ATSHA204芯片,芯片將摘要信息和存儲在芯片內(nèi)的秘鑰一起通過哈希算法計算出一個響應(yīng),然后發(fā)回到主機。主機只發(fā)送摘要信息到設(shè)備上面,避免了通過總線時序觀察到秘鑰數(shù)據(jù)的可能性。主機控制器也通過相關(guān)的公鑰算法計算出響應(yīng),與設(shè)備發(fā)送回來的響應(yīng)對比,實現(xiàn)認(rèn)證。

    1.3 芯片組成

    ATSHA204加密芯片內(nèi)部包含Static RAM和EEPROM,RAM主要用來存儲輸入命令以及輸出結(jié)果,EEPROM總大小為4.5Kb,包含數(shù)據(jù)區(qū)、配置區(qū)以及OTP[1](一次性編程)區(qū)域。

    數(shù)據(jù)(data)區(qū):數(shù)據(jù)區(qū)的總大小是512Kb,包含16個通用的容量為32字節(jié)的數(shù)據(jù)槽。這些數(shù)據(jù)槽可用來存儲秘鑰、校準(zhǔn)數(shù)據(jù)以及型號信息。每個數(shù)據(jù)槽可通過配置區(qū)配置成只讀、可讀寫、不可訪問三種方式。

    配置(config)區(qū):配置區(qū)的大小為88字節(jié),配置區(qū)包含芯片的序列號、ID信息以及每個數(shù)據(jù)槽的訪問權(quán)限信息。

    一次性編程(OTP)區(qū):大小為64字節(jié),在鎖定OTP區(qū)域之前,可以通過寫命令對OTP區(qū)域進(jìn)行寫入操作。

    2 ATSHA204加密芯片配置方法

    ATSHA204有兩種與主機通信的方式,可以通過UART或者I2C總線接口進(jìn)行通信,本設(shè)計采用帶有I2C總線接口的芯片。如果主機I/O口在45~85ms的時間內(nèi)沒有發(fā)出時序,則ATSHA204芯片會進(jìn)入休眠狀態(tài),因此在使用前都應(yīng)當(dāng)對芯片進(jìn)行喚醒操作。

    ①配置config區(qū)域。config區(qū)域的配置是整個芯片配置的核心,分為對數(shù)據(jù)槽的配置和對OTP區(qū)域的配置。ATSHA204配置區(qū)包含對16個數(shù)據(jù)槽(data slot)的配置,配置的主要目的是對16個數(shù)據(jù)槽的訪問進(jìn)行限制,每個數(shù)據(jù)槽的配置項為16位,控制著對應(yīng)的數(shù)據(jù)槽的訪問和使用,本設(shè)計中對16個數(shù)據(jù)槽統(tǒng)一配置如表1所列,每個數(shù)據(jù)項的配置值為0x8080。

    表1 數(shù)據(jù)區(qū)配置表

    OTP區(qū)域配置項對應(yīng)在config區(qū)域中的第4個block中的第3個字節(jié),有兩種配置模式:0xAA(Read-only mode),當(dāng)OTP區(qū)域被鎖定時,禁止寫入;0x00(Legacy mode),當(dāng)OTP區(qū)域被鎖定時,禁止寫入,32字節(jié)讀也被禁止。本設(shè)計中為了保密設(shè)計,配置為0x00。

    ②使用LOCK命令鎖定config區(qū)域。

    ③配置data區(qū)域。data區(qū)域的配置使用標(biāo)準(zhǔn)的write名字將數(shù)據(jù)寫入其中即可,本設(shè)計采用32字節(jié)一次性寫入的方式,每個data slot可以寫入不同的數(shù)據(jù),寫入data slot中的數(shù)據(jù)將參與后續(xù)的MAC[8]運算,因此對于每組寫入data slot中的數(shù)據(jù)必須謹(jǐn)記。

    ④寫OTP區(qū)域。OTP區(qū)域?qū)儆谝淮涡跃幊虆^(qū)域,一次性寫入之后便不可更改,因此應(yīng)當(dāng)謹(jǐn)慎操作,OTP中存放的秘鑰也將作為SHA-256輸入,在使用MAC方式認(rèn)證時,只需用到OTP區(qū)域中的前11字節(jié),因此只需對前11字節(jié)進(jìn)行寫入數(shù)據(jù)操作即可。

    ⑤使用LOCK命令[1]鎖定數(shù)據(jù)區(qū)和OTP區(qū)域。

    3 SHA-256認(rèn)證算法與MAC

    3.1 SHA-256算法

    SHA(Secure Hash Algorithm,安全散列算法)是美國國家安全局(NSA)設(shè)計、美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布的一系列密碼散列函數(shù)。SHA-256是NIST發(fā)布了額外的SHA變體,具有256位的信息摘要長度。該算法的簡要處理流程包括以下幾步[3]:消息填充→附加消息長度→初始化緩存→迭代壓縮→得出哈希結(jié)果(digest)。

    3.2 MAC

    MAC(消息鑒別碼)實現(xiàn)鑒別的原理是,用公開函數(shù)和密鑰產(chǎn)生一個固定長度的值作為認(rèn)證標(biāo)識,用這個標(biāo)識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數(shù)據(jù)塊,即MAC,并將其加入到消息中,然后傳輸。接收方利用與發(fā)送方共享的密鑰進(jìn)行鑒別認(rèn)證。ATSHA204中的MAC命令使用SHA-256哈希算法,以88字節(jié)的信息量作為輸入,并產(chǎn)生一個32字節(jié)的報文摘要,以供認(rèn)證和鑒別。

    4 基于ATmega128[4]平臺的實現(xiàn)

    4.1 硬件設(shè)計

    本設(shè)計采用8引腳SOIC封裝的ATSHA204,其中4個引腳是無效的,其他4個引腳對應(yīng)VCC、GND、一個同步時鐘信號SCL、一個數(shù)據(jù)信號SDA。SCL和SDA分別接到ATmege128的SDL和SDA上,使用ATmege128自帶的I2C總線接口與ATSHA204進(jìn)行通信。接線示意圖如圖1所示。

    圖1 硬件接線圖

    4.2 軟件設(shè)計

    系統(tǒng)運行原理圖如圖2所示,在ATmega128平臺上面,通過程序的方式實現(xiàn)SHA-256算法,同時,將challenge(消息摘要)發(fā)送到ATSHA204,ATSHA204計算好之后,發(fā)回response,再在ATmega128平臺上面實現(xiàn)對比,如果匹配成功,則程序繼續(xù)運行,如果失敗,則程序終止運行,從而實現(xiàn)加密的目的。通信方式采用基礎(chǔ)的I2C通信。整個程序包括兩部分:認(rèn)證程序設(shè)計和SHA-256程序設(shè)計。下面分別描述。

    圖2 系統(tǒng)軟件結(jié)構(gòu)圖

    4.2.1 MAC(消息認(rèn)證)程序設(shè)計

    MAC認(rèn)證程序使用上面提及的標(biāo)準(zhǔn)的TWI[5]讀寫函數(shù)接口,通過發(fā)送0x00信號使SDA保持一段時間的低電平信號,以wakeup加密芯片、challenge數(shù)組中的格式和response數(shù)組的大小詳見datasheet?;竞瘮?shù)流程如下:

    4.2.2 ATmega128平臺SHA-256計算程序

    SHA-256計算程序[7]需要和ATSHA204芯片上面的哈希算法保持一致,因此需要移植Atmel公司提供的算法[6],移植之后的主程序如下:

    函數(shù)形參中的message指針指向一個88字節(jié)的輸入數(shù)組,len的值本設(shè)計中賦值88,digest指針指向返回的response數(shù)組。

    4.3 功能測試

    為了測試系統(tǒng)的可行性,驗證哈希計算結(jié)果,本設(shè)計采用將哈希計算結(jié)果輸出到串口端的方法來測試整個程序在ATmega128平臺上面的運行。在實際系統(tǒng)運行時,為了保證高強度加密,消息摘要應(yīng)該采用隨機數(shù),但為了測試方便,暫時采用固定不變的摘要信息。

    SHA-256輸入的整個消息的序列(88字節(jié))如下:

    輸入到ATSHA204的41字節(jié)的摘要信息如下:

    圖3 串口調(diào)試截圖

    通過串口接收到的主機計算的結(jié)果(digest)和ATSHA204發(fā)送回來的結(jié)果截圖如圖3所示。圖中前32字節(jié)為SHA-256計算所得的digest,后面為device發(fā)回來的count(1字節(jié))+response(32字節(jié))+crc(2字節(jié)),可以看出中間的32字節(jié)和SHA-256計算所得相同,因此便可認(rèn)證成功。反之,如果芯片中的密鑰數(shù)據(jù)不是用戶定義的,那么返回的response和SHA-256計算的不同,則認(rèn)證不成功,從而實現(xiàn)了程序加密。

    5 測 試

    為了更好地驗證加密系統(tǒng)的可靠性與可行性,在測試認(rèn)證基本功能之后,將其嵌入到一個實際系統(tǒng)中,對加密性能進(jìn)行測試?;谝延械腁Tmega128硬件平臺,選取SD卡文件系統(tǒng)讀取程序作為測試,系統(tǒng)的運行流程如圖4所示。

    圖4 測試系統(tǒng)運行流程圖

    本系統(tǒng)采用開源的Fatfs文件系統(tǒng)作為SD卡的文件系統(tǒng),SD卡與ATmega128的通信方式采用傳統(tǒng)的SPI方式,SD卡中存放已經(jīng)轉(zhuǎn)換好的單色分辨率為128×64的位圖bin文件,認(rèn)證部分只作為一個具有返回值的子函數(shù),根據(jù)返回值確定是否成功。

    如果成功,則程序繼續(xù)執(zhí)行;如果不成功,延時1s再次啟動加密芯片進(jìn)行認(rèn)證。如果成功,則視同認(rèn)證成功;如果還是不成功,則通過液晶顯示屏提示不成功,使用assert語句終止程序。

    測試中采用置換不同配置的加密芯片來測試加密的可靠性,認(rèn)證成功和失敗時的情況分別如圖5和圖6所示。

    圖5 認(rèn)證成功

    圖6 認(rèn)證失敗

    結(jié) 語

    本文主要介紹了Atmel公司最新加密芯片ATSHA204的原理和使用方法,初步對其中使用到的加密算法SHA-256進(jìn)行了簡單介紹,最后在ATmega128平臺使用I2C總線接口模塊,利用中斷方式實現(xiàn)SD卡的數(shù)據(jù)發(fā)送與接收,并通過MAC方式實現(xiàn)了認(rèn)證,并詳細(xì)描述了程序流程,解析了部分程序語句。本設(shè)計具有很強的實用性,ATSHA204是目前廣泛使用的加密芯片,是Atmel公司加密芯片的典型產(chǎn)品,本設(shè)計對于指導(dǎo)實際應(yīng)用具有參考意義。

    [1] Atmel corporation.Atmel ATSHA204Atmel Crypto Authentication Datasheet,2013.

    [2] SHA-2[EB/OL] .[2013-08] .http://en.wikipedia.org/wiki/SHA-256.

    [3] 須磊.HMAC-SHA256算法的優(yōu)化設(shè)計[J] .價值工程,2012(29):202-204.

    [4] Atmel corporation.ATmega128datasheet,2009.

    [5] Atmel corporation.AVR315:using the TWI module as I2C master on tinyavr and megaavrdevices,2010.

    [6] Atmel corporation.Atmel crypto authentication ATSHA204 development source code template library,2012.

    [7] 何青春,馬治國.HMAC-SHA-256算法在TB-LTE系統(tǒng)中的應(yīng)用[J] .現(xiàn)代電信科技,2012(4):32-35.

    [8] Media access control[EB/OL] .[2013-08] .http://en.wikipedia.org/wiki/Media_Access_Control.

    猜你喜歡
    哈希字節(jié)密鑰
    探索企業(yè)創(chuàng)新密鑰
    No.8 字節(jié)跳動將推出獨立出口電商APP
    密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
    No.10 “字節(jié)跳動手機”要來了?
    一種對稱密鑰的密鑰管理方法及系統(tǒng)
    簡談MC7字節(jié)碼
    基于ECC的智能家居密鑰管理機制的實現(xiàn)
    基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
    基于維度分解的哈希多維快速流分類算法
    計算機工程(2015年8期)2015-07-03 12:20:04
    基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
    計算機工程(2014年6期)2014-02-28 01:25:40
    台南市| 延吉市| 化州市| 思茅市| 浙江省| 天峨县| 闸北区| 弋阳县| 四川省| 和政县| 波密县| 米林县| 新和县| 图木舒克市| 梁平县| 来凤县| 阿巴嘎旗| 滨海县| 邢台市| 肥乡县| 侯马市| 谢通门县| 武夷山市| 安平县| 米脂县| 安义县| 循化| 神木县| 孟村| 北宁市| 禄丰县| 南城县| 西藏| 广安市| 富民县| 平安县| 延川县| 连州市| 鄂伦春自治旗| 姜堰市| 红安县|