基于DS28E01的FPGA加密認(rèn)證系統(tǒng)的設(shè)計(jì)
在現(xiàn)代電子系統(tǒng)的設(shè)計(jì)中,高速 FPGA運(yùn)行時(shí)需將其配置數(shù)據(jù)加載到內(nèi)部SRAM 中,改變SDRAM 里面的數(shù)據(jù),從而使FPGA實(shí)現(xiàn)不同的功能,即所謂的可重構(gòu)技術(shù)。但是由于其采用的是基于SRAM的技術(shù),每次上電的時(shí)候都會(huì)重新配置FPGA,這就可以通過(guò)監(jiān)視FPGA配置引腳位流的方法來(lái)實(shí)現(xiàn)對(duì)設(shè)計(jì)的復(fù)制,因此,在關(guān)鍵設(shè)備的設(shè)計(jì)中,有必要采取加密的技術(shù)來(lái)保護(hù)設(shè)計(jì)者的知識(shí)產(chǎn)權(quán)。
本文引用地址:http://butianyuan.cn/article/191429.htm1、加密問(wèn)題的提出
由于 FPGA基于SRAM,所以掉電以后,其內(nèi)部的數(shù)據(jù)必然丟失,為了讓系統(tǒng)正常運(yùn)行,就需要在系統(tǒng)上電的時(shí)候給FPGA加載程序,目前對(duì)FPGA加載程序的方法主要有以下幾種 :
第一、 采用邊界掃描的方式,這種方法主要用于產(chǎn)品調(diào)試期間用;
第二、 采用專(zhuān)用配置芯片配置,主要用于升級(jí)次數(shù)少的產(chǎn)品;
第三、 采用存儲(chǔ)器+微控制器的配置方法,這種配置方法靈活,使用方便,便于升級(jí),多用于需要多次升級(jí)的產(chǎn)品。
以上幾種 FPGA配置方法在上電加載程序的時(shí)候,都需要將配置的數(shù)據(jù)通過(guò)配置管腳下載到 FPGA中,這樣,就可以利用一定的電路對(duì)這些引腳進(jìn)行采樣來(lái)獲得 FPGA的配置信息,就可以對(duì)另一款同樣的 FPGA來(lái)進(jìn)行配置,這樣,就不需要知道設(shè)計(jì)的具體原理而實(shí)現(xiàn)了同樣的功能,從而達(dá)到了克隆設(shè)計(jì)的目的,對(duì)設(shè)計(jì)者造成了巨大的損失,所以,我們有必要對(duì)我們的設(shè)計(jì)采取加密認(rèn)證技術(shù)。
MAXIM公司生產(chǎn)的 DS28E01將 1024位 EEPROM與符合 ISO/IEC110118-3安全散列算法(SHA-1)的質(zhì)詢(xún)響應(yīng)安全認(rèn)證結(jié)合在一起。在單個(gè)芯片內(nèi)集成了 1024位 EEPROM(分為 4頁(yè),每頁(yè) 256位)、64位密鑰、一個(gè)寄存器頁(yè)、512位 SHA-1引擎和 64位 ROM序列碼。 DS28E01對(duì)數(shù)據(jù)按照 1-Wire協(xié)議串行傳送,通信速率為15.3kbps(標(biāo)準(zhǔn)速率模式)或125kbps(高速模式),只需要一根數(shù)據(jù)線和一根返回地線,最大限度的節(jié)省了對(duì)控制器 I/O口的占用 。
HASH加密函數(shù)是一種單向散列函數(shù),是一種單向密碼體制,即它是一種從明文到密文的不可逆映射,只有加密過(guò)程,不能解密,也就是說(shuō),從數(shù)學(xué)上不能由密文反過(guò)來(lái)推算出明文的任何消息。其中常見(jiàn)的 HASH函數(shù)的算法有:MD5、SHA、N-Hash、RIPE-MD、HAVAL等 。
SHA-1算法是一種通過(guò)直接構(gòu)造復(fù)雜的非線性關(guān)系達(dá)到單向要求,設(shè)計(jì)單向散列函數(shù)的算法,具有“不可逆”、“防碰撞”以及良好的“雪崩效應(yīng)” ,防止了盜竊者利用相近的輸入來(lái)達(dá)到破解密碼的可能性。
DS28E01內(nèi)部的加密過(guò)程是在內(nèi)部的加密引擎中進(jìn)行的,其加密引擎利用的是 HSAH函數(shù)的 SHA-1算法,但是和標(biāo)準(zhǔn)的 SHA-1算法又有幾點(diǎn)不一樣。標(biāo)準(zhǔn)算法的輸入值可以小于、等于或大于分組長(zhǎng)度512bit,但是 SHA-1引擎的 SHA-1算法輸入的是固定的512bit,也就是標(biāo)準(zhǔn) SHA-1算法的分組長(zhǎng)度。并且標(biāo)準(zhǔn) SHA-1算法每個(gè)分組的最后一次循環(huán)體的輸出都要和輸入每個(gè)分組的初始常量做MOD232加法,而在 DS28E01的 SHA-1引擎中由于只有一個(gè)512bit的循環(huán)體,最后就省略了將初始常量添加回結(jié)果的最終步驟。至于引擎的 SHA-1算法的其他步驟則與標(biāo)準(zhǔn)的 SHA-1算法相同。
3、加密模塊設(shè)計(jì)
目前由很多能實(shí)現(xiàn) FPGA加密的方法,如在 Xilinx Virtex-II和 Virtex-4這類(lèi)的高端FPGA中,支持對(duì)配置數(shù)據(jù)流的加密操作。這樣僅當(dāng) FPGA中含有相同的密鑰時(shí),這些數(shù)據(jù)流才可以工作。但是這種加密的方法對(duì)更為廣泛的、對(duì)成本比較敏感的應(yīng)用場(chǎng)合來(lái)說(shuō)不甚合適。因此,這里利用另一種可行的身份識(shí)別法來(lái)防止意外拷貝。這種方法對(duì)所有 FPGA家族都使用,包括低端的 Xilinx Spartan-3系列FPGA。
3.1、加密模塊的原理圖設(shè)計(jì)
本次設(shè)計(jì)中的加密模塊的原理圖如圖1。硬件部分主要由 Xilinx公司 Spartan-3系列的X3CS500E以及MAXIM公司的DS28E01芯片組成。DS28E01芯片和FPGA之間是通過(guò)DS28E01的第二引腳的 1-Wire通信總線進(jìn)行通信的。
評(píng)論