基于安全散列算法的FPGA加密方法

隨著現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Arrays)技術(shù)的迅速發(fā)展,對(duì)知識(shí)產(chǎn)權(quán)安全性檢測(cè)需要越發(fā)重要。當(dāng)配置比特流在FPGA和外部存儲(chǔ)器之間傳送時(shí),可以被捕獲到。利用該比特流,配置其它FPGA器件,就可以未經(jīng)許可條件下非法拷貝FPGA設(shè)計(jì)。開(kāi)發(fā)基于FPGA的系統(tǒng)的成本是相當(dāng)高昂,因此,應(yīng)當(dāng)防止未經(jīng)授權(quán)的機(jī)構(gòu)對(duì)這些設(shè)計(jì)和配置進(jìn)行非法拷貝,以保護(hù)設(shè)計(jì)者的知識(shí)產(chǎn)權(quán)。在一些高端的FPGA,支持對(duì)配置數(shù)據(jù)流的加密操作。

僅當(dāng)FPGA中含有相同的密鑰時(shí),這些數(shù)據(jù)流才可工作。但這種加密的方法對(duì)更為廣泛的、低成本的應(yīng)用場(chǎng)合不合適。本文利用一種基于安全散列算法(Secure Hash Algorithm,SHA)的方法來(lái)防止非法拷貝。它對(duì)所有FPGA家族都適用。對(duì)于這些低端的、不具備嵌入式比特流加密手段的FPGA,需要在生產(chǎn)過(guò)程中使用安全輔助芯片,以有效保護(hù)FPGA設(shè)計(jì)的知識(shí)產(chǎn)權(quán)。

1工作原理

安全散列算法SHA(Secure Hash Algorithm,SHA)是美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)局發(fā)布的國(guó)家標(biāo)準(zhǔn)FIPS PUB 180-1,一般稱為SHA-1。其可對(duì)長(zhǎng)度不超過(guò)264位的消息產(chǎn)生160位的消息摘要輸出,可在NIST的網(wǎng)站上獲得該算法的數(shù)學(xué)原理。IFF(Identification Friend or Foe, IFF)用于確定輸入密鑰是否正確。

其工作方式如下:

①在FPGA內(nèi)部構(gòu)造隨機(jī)數(shù)生成模塊,用于產(chǎn)生消息Q,并通過(guò)1-Wire總線發(fā)送DS2432芯片;

②DS2432內(nèi)部擁有一個(gè)由設(shè)計(jì)者設(shè)定的密鑰。由該密鑰并結(jié)合一個(gè)散列函數(shù)對(duì)消息Q加密,產(chǎn)生一個(gè)響應(yīng)A;

③與此同時(shí),FPGA內(nèi)部產(chǎn)生一個(gè)期望的響應(yīng)E,判斷該期望響應(yīng)是否與DS2432的真實(shí)響應(yīng)A一致;

④如果E與A吻合,則判斷該設(shè)計(jì)為正版設(shè)計(jì);否則判定為盜版設(shè)計(jì);

⑤最終,FPGA程序可以對(duì)盜版設(shè)計(jì)做出程序鎖止或減少功能。

除了SHA-1本身所具有的安全特性,上述方法的安全特性依賴于密鑰,而該密鑰既不可能從安全存儲(chǔ)器,也不可能從FPGA中讀出。更進(jìn)一步,該密鑰不可能在FPGA進(jìn)行配置時(shí),利用竊聽(tīng)其配置數(shù)據(jù)流的手段發(fā)現(xiàn)。這就如同從一個(gè)可執(zhí)行代碼破解操作系統(tǒng)的C++源代碼一樣,將是一個(gè)難于完成的任務(wù)。另一個(gè)至關(guān)重要的安全因素是隨機(jī)質(zhì)詢機(jī)制。一個(gè)可預(yù)測(cè)的質(zhì)詢機(jī)制會(huì)引發(fā)一個(gè)可預(yù)測(cè)的響應(yīng)結(jié)果,因?yàn)樵摻Y(jié)果可被記錄,然后由一個(gè)微控制器來(lái)取代安全存儲(chǔ)器。在這種可預(yù)測(cè)的情況下,微控制器可以讓FPGA認(rèn)為其是一個(gè)“友方”電路。而隨機(jī)的質(zhì)詢機(jī)制消除了這種可能性。

2系統(tǒng)設(shè)計(jì)

根據(jù)以上介紹可知,為了滿足應(yīng)用所需的安全性。

HASH算法應(yīng)滿足以下條件:

①不可逆,即從一個(gè)HASH結(jié)果逆推出與之相關(guān)的輸入數(shù)據(jù)在計(jì)算上是不可行的。

②防“碰撞”,即使用另外一組輸入數(shù)據(jù)來(lái)產(chǎn)生一個(gè)相同的HASH結(jié)果是不可行的。

③具有極高的雪崩效應(yīng),當(dāng)輸入數(shù)據(jù)的任何變化,都會(huì)極大的影響到HASH運(yùn)算結(jié)果。

DS28E01-100和DS2432是Dallas Semiconductor提供的內(nèi)置SHA-1算法的安全存儲(chǔ)器。這些器件的1-Wire接口非常適合此類(lèi)應(yīng)用,因?yàn)樗麄冎恍鐵PGA的一根引腳就可實(shí)現(xiàn)這些功能。

DS2432有以下幾個(gè)主要的數(shù)據(jù)部件:

1)64位光刻ROM,

2)64位暫存器,

3)四個(gè)32字節(jié)的EEPROM頁(yè),

4)64位寄存器頁(yè),

5)64位密鑰存儲(chǔ)器,

6)一個(gè)512位SHA-1(安全散列算法)引擎。

與此同時(shí),FPGA實(shí)現(xiàn)了下述功能,以利用DS2432的安全特性:

①SHA-1 引擎 :這一模塊計(jì)算SHA-1 算法,進(jìn)行安全認(rèn)證。它接收安全存儲(chǔ)器通過(guò)1 線接口傳送來(lái)的設(shè)計(jì),將其和MAC 結(jié)果進(jìn)行對(duì)比。只有當(dāng)哈希計(jì)算結(jié)果和安全存儲(chǔ)器中SHA-1 引擎的哈希計(jì)算結(jié)果匹配時(shí),才使能用戶設(shè)計(jì)。

②隨機(jī)數(shù)發(fā)生器(RNG):當(dāng)復(fù)位信號(hào)置位SHA-1 引擎模塊時(shí),RNG 為該模塊產(chǎn)生一個(gè)隨機(jī)數(shù)。SHA-1 IFF參考設(shè)計(jì)使用了一個(gè)8 位RNG 塊。SHA-1 引擎模塊處理這一8位隨機(jī)數(shù),轉(zhuǎn)換成40 位隨機(jī)數(shù)據(jù),進(jìn)行哈希計(jì)算。

③1-Wire接口:這一模塊支持FPGA 中參考設(shè)計(jì)和安全存儲(chǔ)器之間的數(shù)據(jù)傳送。1-Wire總線系統(tǒng)由一個(gè)總線主機(jī)和一個(gè)或多個(gè)從器件組成。在該應(yīng)用中,DS2432做為從器件使用,總線主機(jī)通常是一個(gè)微控制器。對(duì)1-Wire總線系統(tǒng)的討論分為3個(gè)部分:硬件配置、處理流程和1-Wire信令(信號(hào)類(lèi)型和時(shí)序)。1-Wire協(xié)議根據(jù)特定時(shí)隙中總線的狀態(tài)來(lái)工作,這些特定時(shí)隙始于總線主機(jī)發(fā)出的同步脈沖的下降沿。

對(duì)于每個(gè)制造單元,設(shè)計(jì)所有者必須為制造帶有嵌入式FPGA產(chǎn)品的一方(生產(chǎn)方)提供一個(gè)正確預(yù)編程的加密EEPROM。這種一對(duì)一的關(guān)系限制了生產(chǎn)方可以制造的授權(quán)產(chǎn)品的數(shù)量。為防止生產(chǎn)方竄改加密EEPROM的內(nèi)容,可對(duì)其中密鑰進(jìn)行寫(xiě)保護(hù)。這樣就在設(shè)計(jì)上保證了只有在知道密鑰的情況才可更改存儲(chǔ)器中的數(shù)據(jù)。并由此對(duì)FPGA產(chǎn)生加密作用,即FPGA可以根據(jù)從受SHA-1保護(hù)的加密存儲(chǔ)器中讀出的數(shù)據(jù)來(lái)開(kāi)啟或關(guān)閉FPGA中的相應(yīng)功能。

這種方法的優(yōu)勢(shì)如下:

①設(shè)計(jì)者無(wú)需向生產(chǎn)方泄漏SHA-1密鑰。

②設(shè)計(jì)者無(wú)需執(zhí)行系統(tǒng)預(yù)編程。

③只有經(jīng)過(guò)設(shè)計(jì)者授權(quán)第三方才可以訪問(wèn)登記的器件。即使捕獲了配置數(shù)據(jù)流,這一FPGA加密方法也能保護(hù)FPGA設(shè)計(jì)不被克隆。在FPGA 中和安全存儲(chǔ)器中的哈希計(jì)算結(jié)果匹配之前,一直禁止用戶設(shè)計(jì)。這一設(shè)計(jì)加密方法有效保護(hù)了FPGA設(shè)計(jì)人員的知識(shí)產(chǎn)權(quán)。

小知識(shí)之FPGA概念:

FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專(zhuān)用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。