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