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