為了檢驗MAC發(fā)送方的真實性,MAC接收方產(chǎn)生一個隨機數(shù)字并將其作為質(zhì)詢發(fā)送到發(fā)送方。然后,MAC發(fā)送方必須根據(jù)密鑰、信息和接收方的質(zhì)詢計算新的MAC。隨后,發(fā)送方將計算結(jié)果返回給接收方。如果發(fā)送方被證實能夠計算任何質(zhì)詢碼的有效MAC,則可以確認其已知密碼并被視為可靠。這個過程稱為質(zhì)詢-響應(yīng)認證(參見圖1)。
用于計算MAC的算法有多種,例如Gost-Hash、HAS-160、HAVAL、MDC-2、MD2、MD4、MD5、RIPEMD、SHA系列、Tiger和WHIRLPOOL。經(jīng)過仔細審議并被國際認可的一種單向散列算法是SHA-1,這種算法由美國國家標準技術(shù)研究所(NIST)開發(fā)。SHA-1已經(jīng)納入國際標準ISO/IEC 10118-3:2004。
通過NIST網(wǎng)站可以查詢SHA-1算法的數(shù)學(xué)依據(jù)2,SHA-1算法具有以下顯著特征:
不可逆:確定與MAC對應(yīng)的輸入在計算上是不可行的。
防沖突:不能找出多個可產(chǎn)生給定MAC的輸入消息。
高雪崩效應(yīng):輸入的任何改變都將導(dǎo)致MAC結(jié)果的重大改變。
由于上述原因,以及國際上對該算法的認定,SHA-1成為安全存儲器質(zhì)詢-響應(yīng)認證的最佳選擇。
硬件實現(xiàn)
質(zhì)詢-響應(yīng)認證方案可以作為基于SRAM的FPGA系統(tǒng)設(shè)計的一部分實施,這種方式成本低廉(圖2)。該例中,安全存儲器件僅通過一個引腳連接到配置為雙向(開漏)通信的FPGA引腳。連接至VDD的電阻為安全存儲器供電并為漏極開路通信提供偏置。Maxim的DS28E01 1Kb保護型1-Wire EEPROM帶有SHA-1引擎,非常適合這種設(shè)計。該器件包含一個SHA-1引擎、128字節(jié)用戶存儲器、可用于芯片內(nèi)部操作但不能從外部讀取的密鑰以及唯一的、不可更改的識別碼。
圖2. 該簡化框圖中,利用一片1-Wire安全存儲器保護FPGA。
DS28E01的1-Wire接口將通信通道減少至單個FPGA引腳,用于質(zhì)詢-響應(yīng)認證。因為FPGA的I/O引腳常常受限,這種安全方案對系統(tǒng)的影響最小。另一種可構(gòu)建的實施方案是利用FPGA實現(xiàn)通用I2C接口,通過DS28CN01 (等效于DS28E01的I2C器件)進行認證,或通過在小規(guī)模ASIC或CPLD中實現(xiàn)SHA-1引擎和其它功能。但是,如果安全保護是器件的唯一功能,使用ASIC會大大增加成本。
為了加強DS28E01的安全特性,F(xiàn)PGA必須能夠進行以下操作:
產(chǎn)生質(zhì)詢隨機數(shù)(片上隨機數(shù)發(fā)生器通常產(chǎn)生偽隨機數(shù),不具備和真隨機數(shù)同等的安全性)。
已知用于內(nèi)部操作的安全密鑰,但不能從外部偵測。
計算包括密匙、隨機數(shù)及附加數(shù)據(jù)在內(nèi)的SHA-1 MAC,類似于安全存儲器。
逐字節(jié)比較數(shù)據(jù),使用FPGA實現(xiàn)CPU的異或功能。
關(guān)于SHA-1 MAC計算的詳細信息,請查詢安全散列標準2。應(yīng)用筆記3675:“保護您的研發(fā)成果—雙向認證及軟件功能保護”給出了安全存儲器架構(gòu)及其原理的技術(shù)細節(jié)。
一些主要的FPGA供應(yīng)商提供類似于微控制器功能的宏。Xilinx?微控制器功能占用192個邏輯單元,這僅僅是一片Spartan?-3 XC3S50器件的11%。
上電時,F(xiàn)PGA從其配置存儲器開始自行配置。當前的FPGA微控制器功能生效并執(zhí)行質(zhì)詢-響應(yīng)認證,也稱為敵我識別(IFF),這個識別過程包含以下步驟:
產(chǎn)生一個隨機數(shù),將其作為質(zhì)詢(Q)發(fā)送至安全存儲器。
通知安全存儲器根據(jù)其密匙、質(zhì)詢、唯一識別碼及其它固定數(shù)據(jù)計算SHA-1 MAC。
根據(jù)相同輸入、安全存儲器使用的常數(shù)以及FPGA密鑰計算SHA-1 MAC,即所預(yù)期的響應(yīng)(MAC1)。
將安全存儲器計算的SHA-1 MAC (讀取認證MAC)作為響應(yīng)(MAC2)與所預(yù)期的響應(yīng)(MAC1)進行比較。
如果MAC1、MAC2一致,F(xiàn)PGA將其環(huán)境認定為“朋友”,因為它顯然知道密鑰。FPGA轉(zhuǎn)變?yōu)檎9ぷ鳎せ?執(zhí)行所有配置編碼定義的功能。但是,如果兩個MAC不同,環(huán)境則必被認定為“敵人”。這種情況下,F(xiàn)PGA執(zhí)行應(yīng)用相關(guān)的操作而不是正常工作。
為什么該過程是安全的
除了SHA-1提供的固有安全性以外,上述IFF認證過程的主要安全單元是密鑰,安全存儲器或FPGA都不能對其進行讀取。并且,因為比特流中的數(shù)據(jù)雜亂無章,當FPGA自我配置時,對配置流的竊聽不會泄露密鑰??紤]到數(shù)據(jù)字節(jié)的尺寸,對比特流進行逆向工程以推測設(shè)計架構(gòu)非常耗時,幾乎不可能完成該項任務(wù)。
評論