??? 由于很容易捕獲到配置比特流并進(jìn)行復(fù)制,因此,F(xiàn)PGA設(shè)計(jì)很難防范設(shè)計(jì)竊取。對(duì)于竊取知識(shí)產(chǎn)權(quán)(IP)而言,從比特流中提取出IP幾乎不可能,但是卻能從FPGA中克隆整個(gè)設(shè)計(jì)。為了保護(hù)配置比特流,有的FPGA現(xiàn)在能夠?qū)Ρ忍亓鬟M(jìn)行加密。然而,對(duì)于不具備通過嵌入式比特流加密手段來(lái)加密配置比特流的FPGA而言,需要在生產(chǎn)過程中增加步驟對(duì)FPGA中的密鑰進(jìn)行編程,因此提高了成本。對(duì)于大批量應(yīng)用,使用安全輔助芯片" title="輔助芯片">輔助芯片的性價(jià)比會(huì)更高一些。
?? ?本文提供了解決方案來(lái)保護(hù)FPGA設(shè)計(jì)不被克隆。利用“識(shí)別、朋友或者敵人(IFF)”的設(shè)計(jì)安全方法,在FPGA中和安全存儲(chǔ)器" title="安全存儲(chǔ)器">安全存儲(chǔ)器中的哈希計(jì)算結(jié)果匹配之前,這一方案禁用FPGA中的設(shè)計(jì),因此,即使捕獲到配置數(shù)據(jù)比特流,設(shè)計(jì)也是安全的。在這一解決方案中,安全存儲(chǔ)器是FPGA的安全輔助芯片。
設(shè)計(jì)實(shí)現(xiàn)
??? 在IFF概念中,采用了安全輔助器件來(lái)計(jì)算哈希算法。Dallas半導(dǎo)體公司的安全存儲(chǔ)器DS28E01結(jié)合了1024位EEPROM和符合ISO/IEC 10118-3安全哈希算法(SHA-1)的“挑戰(zhàn)-響應(yīng)”認(rèn)證安全方法。DS28E01是一線接口器件,因此這一解決方案只需要一個(gè)FPGA I/O引腳。安全存儲(chǔ)器需要采用上拉電阻和一線I/O引腳連接。
??? 圖1所示為采用了IFF概念的設(shè)計(jì)安全參考設(shè)計(jì)" title="參考設(shè)計(jì)">參考設(shè)計(jì)的頂層結(jié)構(gòu)圖。安全存儲(chǔ)器SHA-1引擎根據(jù)存儲(chǔ)在安全存儲(chǔ)器中的密鑰來(lái)計(jì)算哈希算法,該密鑰是FPGA產(chǎn)生的隨機(jī)數(shù)" title="隨機(jī)數(shù)">隨機(jī)數(shù),在安全存儲(chǔ)器中具有唯一的ID。
?
?
圖1 采用了IFF概念的設(shè)計(jì)安全解決方案
??? 在使用FPGA時(shí),SHA-1 IFF模塊中有安全存儲(chǔ)器中的匹配密鑰,能夠根據(jù)和安全存儲(chǔ)器中SHA-1引擎相同的輸入來(lái)計(jì)算SHA-1算法。配置完FPGA后,不會(huì)啟用用戶設(shè)計(jì)。只有當(dāng)安全存儲(chǔ)器和FPGA中的哈希計(jì)算結(jié)果相匹配時(shí),SHA-1 IFF模塊才會(huì)使能用戶設(shè)計(jì)。
??? 系統(tǒng)一旦上電" title="上電">上電,以嵌有SHA-1 IFF參考設(shè)計(jì)的用戶設(shè)計(jì)配置完FPGA后,F(xiàn)PGA產(chǎn)生一個(gè)隨機(jī)數(shù),把它發(fā)送給安全存儲(chǔ)器。FPGA讀取來(lái)自DS28E01的160位消息認(rèn)證碼(MAC)計(jì)算結(jié)果,將其和FPGA SHA-1 IFF引擎MAC結(jié)果進(jìn)行對(duì)比。如果MAC結(jié)果匹配,SHA-1 IFF模塊使能用戶設(shè)計(jì),如果不匹配,則禁用它。圖2所示為采用了IFF概念的設(shè)計(jì)安全流程。
?
??? 這一參考設(shè)計(jì)為用戶利用FPGA來(lái)設(shè)置DS28E01器件提供了其他方法。FPGA配置完成后,它支持FPGA向安全存儲(chǔ)器發(fā)送密鑰,在生產(chǎn)過程比較安全的地方進(jìn)行設(shè)置。
?? ?圖3所示為通過FPGA對(duì)DS28E01編程的設(shè)計(jì)安全流程。
?
??? 一旦使能用戶設(shè)計(jì)后,關(guān)斷SHA-1 IFF引擎模塊以降低功耗。用戶可以連接外部邏輯或者狀態(tài)機(jī)來(lái)復(fù)位SHA-1 IFF引擎,再次啟動(dòng)工作。一旦使能信號(hào)變?yōu)楦唠娖?,SHA-1 IFF引擎模塊則不斷計(jì)算并檢查SHA-1算法。
設(shè)計(jì)組成模塊
??? 這一解決方案的參考設(shè)計(jì)含有三個(gè)主要模塊:
??? · SHA-1引擎:這一模塊計(jì)算SHA-1算法,進(jìn)行安全認(rèn)證。它接收安全存儲(chǔ)器通過一線接口傳送來(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ì)算。
??? · 一線接口:這一模塊支持FPGA中參考設(shè)計(jì)和安全存儲(chǔ)器之間的數(shù)據(jù)傳送。
用戶設(shè)計(jì)模塊
??? SHA-1 IFF引擎系統(tǒng)時(shí)鐘頻率的典型值FMAX是100MHz,或者更低。用戶必須向參考設(shè)計(jì)輸入SHA-1 IFF引擎頻率,從而保證數(shù)據(jù)在FPGA和安全存儲(chǔ)器之間正確地發(fā)送和接收。用戶可以為SHA-1 IFF引擎和用戶設(shè)計(jì)提供不同的時(shí)鐘。
解決方案的安全性
??? 上電時(shí),當(dāng)FPGA中的配置數(shù)據(jù)比特流在FPGA和外部存儲(chǔ)器之間傳送時(shí),可以捕獲到它。利用捕獲到的配置數(shù)據(jù)比特流,配置另一FPGA器件,就可以復(fù)制這一FPGA設(shè)計(jì)。這一方案可以確??寺∑骷o(wú)法工作,從而保護(hù)了用戶設(shè)計(jì)。如果沒有正確的密鑰和哈希算法計(jì)算結(jié)果,則會(huì)一直禁用FPGA中的用戶設(shè)計(jì)。
????為了將設(shè)計(jì)克隆到另一FPGA設(shè)計(jì)中,必須克隆密鑰和安全存儲(chǔ)器的唯一ID。這很難實(shí)現(xiàn),因?yàn)椴荒茏x出DS28E01密鑰,也無(wú)法從MAC結(jié)果中反向篡改SHA-1算法來(lái)確定密鑰。
結(jié)? 論
??? 即使捕獲了配置數(shù)據(jù)比特流,這一FPGA設(shè)計(jì)安全I(xiàn)FF解決方案也能保護(hù)Altera? FPGA設(shè)計(jì)不被克隆。在FPGA中和安全存儲(chǔ)器中的哈希計(jì)算結(jié)果匹配之前,一直禁止用戶設(shè)計(jì)。這一設(shè)計(jì)安全解決方案保護(hù)了FPGA設(shè)計(jì)人員的IP。