基于1-Wire總線的DS28E01加密芯片原理研究及其在FPGA加密系統(tǒng)中的應(yīng)用
本文引用地址:http://2s4d.com/article/233871.htm
FPGA的應(yīng)用越來越廣泛,但也出現(xiàn)了一個問題,那就是FPGA設(shè)計(jì)的產(chǎn)權(quán)保護(hù)問題。因?yàn)?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/FPGA">FPGA的工作原理是在系統(tǒng)上電時將片外PROM中的BIT數(shù)據(jù)流加載到片內(nèi)的SRAM中,完成對FPGA的編程,從而實(shí)現(xiàn)設(shè)計(jì)者的不同功能,即所謂的可重構(gòu)技術(shù)。這就使得監(jiān)測FPGA加載管腳的數(shù)據(jù)流就可實(shí)現(xiàn)對FPGA功能設(shè)計(jì)的復(fù)制。因此非常有必要采用加密的技術(shù)來保護(hù)設(shè)計(jì)者的知識產(chǎn)權(quán)。美國Dallas公司生產(chǎn)的DS28E01就是這樣的一款采用1-Wire總線的加密產(chǎn)品。
1 DS28E01芯片介紹
DS28E01采用1-Wire總線串行傳送數(shù)據(jù),只需要一根數(shù)據(jù)線和一根地線,最大限度地節(jié)省了對被加密器件I/O管腳的占用。DS28E01將1024位EEPROM與符合ISO/IEC110118-3 SHA-1算法的質(zhì)詢響應(yīng)安全認(rèn)證結(jié)合在一起。該器件能夠處理64位或320位長密鑰、40位長隨機(jī)質(zhì)詢碼和器件其它數(shù)據(jù)的SHA-1計(jì)算,以提供它和被加密器件之間更高級的安全認(rèn)證。1024位的EEPROM分為4頁,每頁256位,帶64位暫存器以執(zhí)行寫操作。
SHA-1算法是HASH函數(shù)算法中的一種,是一種單向密碼體制。它通過直接構(gòu)造復(fù)雜的非線性關(guān)系達(dá)到從明文到密文的不可逆映射。具有“防碰撞”以及良好的“雪崩效應(yīng)”,防止了盜竊者利用相似的輸入來達(dá)到破解密碼的可能性。
DS28E01包括6個主要數(shù)據(jù)部件:1)64位光刻碼, 2)64位暫存器,3)四個EEPROM頁,每頁256位,4)寄存器頁,5)64位密鑰存儲器,6)512位SHA(安全散列算法)引擎。
1-Wire 協(xié)議的層次結(jié)構(gòu)中,主機(jī)必須首先發(fā)送以下七條ROM操作命令中的一條:1) Read ROM,2) Match ROM,3) Search ROM,4) Skip ROM,5) Resume ommunication,6) Overdrive-Skip ROM,7) Overdrive-Match ROM。當(dāng)以標(biāo)準(zhǔn)速度執(zhí)行完Overdrive ROM 命令后,器件進(jìn)入高速模式,所有后續(xù)通信均以高速模式進(jìn)行。成功執(zhí)行完ROM操作命令后,就可以進(jìn)行存儲器和SHA-1操作,主機(jī)可發(fā)出9條有效功能命令中的任一條。
2 DS28E01基于1-Wire總線進(jìn)行FPGA加密的工作原理
圖1是利用DS28E01加密用戶FPGA設(shè)計(jì)的系統(tǒng)框圖。DS28E01通過1-Wire總線和FPGA相連,F(xiàn)PGA內(nèi)嵌一個SHA-1引擎和DS28E01握手。引擎中攜帶有和DS28E01相同的密鑰,這是由用戶預(yù)先配置好的。1-Wire總線上必須外接一個不大于2.2kΩ的上拉電阻。
具體的加密工作原理如下:
1.上電后,PROM中的用戶設(shè)計(jì)被下載到FPGA中。此時FOE=1,用戶設(shè)計(jì)處于關(guān)閉狀態(tài)。
2.FPGA中的SHA-1引擎產(chǎn)生一個隨機(jī)數(shù),通過1-Wire總線發(fā)送給DS28E01。
3.FPGA中的SHA-1引擎通過1-Wire總線讀取DS28E01的器件序列號。
4.DS28E01利用僅僅對用戶開放的密鑰、器件序列號、隨機(jī)數(shù)、附加常數(shù)等通過SHA-1算法來產(chǎn)生一個160位的MAC值。同時FPGA中的SHA-1引擎此時也利用相同的信息通過SHA-1計(jì)算來得到相同的160位MAC值。
5.FPGA中的SHA-1引擎通過1-Wire總線讀取DS28E01計(jì)算出來的160位MAC值。
6.在FPGA的SHA-1引擎中比較兩個160位的MAC值,如果相同則FOE=0,用戶設(shè)計(jì)功能被打開。
按照這樣的過程即只有SHA-1引擎中的密鑰和DS28E01中的密鑰完全相同時,用戶設(shè)計(jì)才會開放,這樣就可完成對用戶設(shè)計(jì)的IP產(chǎn)權(quán)保護(hù)。
3 通過1-Wire總線訪問DS28E01的協(xié)議分析
3.1 通過1-Wire訪問DS28E01的協(xié)議如下:
1.初始化命令;
2.ROM功能命令;
3.存儲器/SHA-1命令;
4.根據(jù)命令數(shù)據(jù)的輸入輸出。
要通過1-Wire總線訪問DS28E01,總線上的數(shù)據(jù)必須滿足協(xié)議要求,并符合1-Wire的時序。Wire總線上所有的傳輸操作均從初始化過程開始。初始化過程由主機(jī)發(fā)出的復(fù)位脈沖和從機(jī)發(fā)出的在線應(yīng)答脈沖組成。在線應(yīng)答脈沖通知主機(jī)DS28E01掛接在總線上,并且已經(jīng)準(zhǔn)備就緒。
一旦主機(jī)檢測到在線應(yīng)答脈沖,就可以發(fā)出DS28E01支持的七條ROM 功能命令中的一條:1) Read ROM,2) Match ROM,3) Search ROM,4) Skip ROM,5) Resume Communication,6) Overdrive-Skip ROM,7) Overdrive-Match ROM。
成功執(zhí)行完ROM操作命令后,就可以進(jìn)行存儲器和SHA-1操作,F(xiàn)PGA中的SHA-1引擎可發(fā)出9條有效功能命令中的任一條:1)Write Scratchpad,2) Read ScratchPad,3) Load first Secret,4)Compute Next Secret,5)Copy ScratchPad,6) Read AuthPage,7)Anonymous Read Auth.Page, 8) Read Memory ,9)Refresh ScratchPad。
3.2 1-Wire 信令
為了保證數(shù)據(jù)的完整性,DS28E01具有嚴(yán)格的信號協(xié)議。該協(xié)議在一條線上定義了四種類型的信號:包括復(fù)位脈沖和在線應(yīng)答脈沖的復(fù)位序列、寫0、寫1 和讀數(shù)據(jù)。除在線應(yīng)答脈沖以外,所有其它信號下降沿均由總線主機(jī)發(fā)出。DS28E01 能夠以兩種不同速率通信:標(biāo)準(zhǔn)速率和高速模式。如果沒有明確設(shè)定為高速模式,DS28E01就以標(biāo)準(zhǔn)速率通信。高速模式下,所有波形均采用快速定時。啟動與DS28E01的任何通信都需要初始化過程。
3.3 1-Wire總線上的DS28E01加密指令說明
DS28E01提供7條ROM指令和9條MEM指令,在FPGA加密系統(tǒng)中一般只用到幾條就夠了。
根據(jù)FPGA加密原理所述,F(xiàn)PGA中SHA-1引擎所使用的密鑰是由設(shè)計(jì)者預(yù)先配置好的,DS28E01中的密鑰也是由設(shè)計(jì)者在出廠前通過燒寫器寫好的。為了完成加密過程,F(xiàn)PGA中的SHA-1引擎只需要對DS28E01進(jìn)行3個操作過程即可:1)寫隨機(jī)數(shù),2)讀DS28E01器件ID,3)讀DS28E01 SHA-1運(yùn)算結(jié)果,即160位的MAC值。
3.3.1 寫隨機(jī)數(shù)
指令格式和時序分析波形如圖2 所示,F(xiàn)PGA先發(fā)送ROM命令碼Skip ROM(CCH),接著發(fā)送MEM命令碼Write Scratchpad(0F)以及目標(biāo)地址。
RST為FPGA產(chǎn)生的1-Wire復(fù)位脈沖,PD為DS28E01產(chǎn)生的在線應(yīng)答脈沖,Select是ROM功能命令,WSP為MEM功能命令,TA是目標(biāo)地址TA1和TA2,之后為要寫入的64位隨機(jī)數(shù),之后是從Select命令到隨機(jī)數(shù)所有字節(jié)的8位的CRC16校驗(yàn)值的反碼,其后是無效的數(shù)據(jù)FF。每個字段的數(shù)據(jù)都是低位在前傳輸。以下所有命令格式都類似。
1-Wire總線上數(shù)據(jù)如圖中ibo所示,data為將1-Wire總線數(shù)據(jù)根據(jù)協(xié)議正序并轉(zhuǎn)成為并行數(shù)據(jù),Select=CCh、WSP=0Fh,TA=8000h,64位隨機(jī)數(shù)為40h、70h、BEh、3Dh、78h、95h、F7h、D8h,8位CRC16校驗(yàn)的反碼為85h。
3.3.2 讀DS28E01器件ID
指令格式和時序分析波形如圖3 所示,F(xiàn)PGA發(fā)送ROM命令碼Read ROM(33H),此條命令允許主機(jī)讀取DS28E01的八位家族碼,48位唯一序列號和8位CRC校驗(yàn)碼。
1-Wire總線上數(shù)據(jù)根據(jù)協(xié)議被正序并行化后在圖3波形中顯示為:Select=33h、8位家族碼為2Fh、48位唯一的器件ID=00000022FCD0h,8位CRC16校驗(yàn)的反碼=99。
3.3.3 讀160位MAC碼
指令格式和時序分析波形如圖4 所示。 FPGA先發(fā)送ROM命令碼Skip ROM(CCH),接著發(fā)送MEM命令碼Write Scratchpad(A5)以及目標(biāo)地址,之后,F(xiàn)PGA將接收DS28E01中從目標(biāo)地址開始到數(shù)據(jù)頁末尾存儲器頁中數(shù)據(jù),一個FFh 字節(jié)和CRC反碼。 CRC校驗(yàn)碼接收完畢后,F(xiàn)PGA等待一段時間。此時, DS28E01中的SHA 引擎利用相同的密鑰、隨機(jī)數(shù)、附加數(shù)據(jù)及器件識別號來計(jì)算160位的MAC。等待SHA-1運(yùn)算周期結(jié)束后,就可讀到160位MAC,隨后是CRC反碼。如果在CRC 校驗(yàn)碼后主機(jī)繼續(xù)讀取數(shù)據(jù),將會到讀到無效數(shù)據(jù)AAh。
從圖4中我們可以看到,當(dāng)讀到AAh時,F(xiàn)OE=0,這表明加密芯片計(jì)算的MAC值與FPGA中SHA-1引擎計(jì)算的MAC值一致。用戶設(shè)計(jì)將開始工作,至此加密過程全部結(jié)束。
5 FPGA驗(yàn)證和結(jié)論
本加密系統(tǒng)在Xilinx公司 Spartan-6的XA6SLX45-3上進(jìn)行了FPGA驗(yàn)證。FPGA中的SHA-1引擎采用了Xilinx公司提供的免費(fèi)IP。采用Verilog語言完成了1-Wire總線的相關(guān)分析功能的設(shè)計(jì)。調(diào)試中使用了Xilinx公司的硬件Debug軟件ChipScope,抓出了1-Wire總線的相關(guān)波形,完成了時序分析。最后該加密系統(tǒng)成功應(yīng)用于西安某知名IC設(shè)計(jì)公司的一款FPGA推廣產(chǎn)品中??梢钥闯觯贗C設(shè)計(jì)競爭日益強(qiáng)烈的今天,利用FPGA加密系統(tǒng)來保護(hù)知識產(chǎn)權(quán),為公司產(chǎn)品搶占市場先機(jī)是IC設(shè)計(jì)的必由之路。
參考文獻(xiàn):
[1]DS28E01-100 帶SHA-1引擎保護(hù)的1K位1-Wire EEPROM[R/OL].www.maxim-ic.com.cn
[2]張斌,徐名揚(yáng).SHA-1算法及其在FPGA加密認(rèn)證系統(tǒng)中的應(yīng)用.中國集成電路,2011(6)
[3]楊春林,張春雷,高山,等.基于DS28E01的FPGA加密認(rèn)證系統(tǒng)的設(shè)計(jì).微計(jì)算機(jī)信息,2009(23)
[4]劉軍志,黃進(jìn).基于DS2432和FPGA的IFF加密方法.微計(jì)算機(jī)信息[J],2007(7):201-202
[5]伍家滿,虞禮貞,劉小燕,等.基于1-Wire接口的總線技術(shù)即其應(yīng)用,南昌大學(xué)學(xué)報,2005,27(1)
fpga相關(guān)文章:fpga是什么
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理 上拉電阻相關(guān)文章:上拉電阻原理
評論