??? 摘? 要: 在深入分析基于FPGA的安全封裝結構的基礎上,針對其實際應用中身份認證的安全性要求,重點研究并設計了一種適用于FPGA安全封裝結構的身份認證模型。該模型通過利用RSA公鑰密碼算法和SHA-1算法,實現(xiàn)了對用戶及FPGA的雙向認證。該模型具備良好的可移植性和安全性,能夠有效抵御多種攻擊,為基于FPGA的安全封裝應用提供了強有力的用戶權限認證。?
??? 關鍵詞: FPGA; 安全封裝; 身份認證?
?
??? 隨著嵌入式技術的推廣,F(xiàn)PGA在各種嵌入式系統(tǒng)中得到了廣泛應用。在各種嵌入式系統(tǒng)應用中,F(xiàn)PGA往往用于實現(xiàn)整個系統(tǒng)的核心功能[1]。因此,如何保證FPGA內(nèi)部功能構造的安全性成為保護整個嵌入式系統(tǒng)核心知識產(chǎn)權的關鍵性問題。針對FPGA內(nèi)部構造碼安全性的問題,各FPGA廠家推出了多種具有特殊安全功能的產(chǎn)品[2-3]。但是,先進的數(shù)據(jù)分析技術及工具使得攻擊者可以很容易地對芯片管腳的輸出信號(如地址總線、數(shù)據(jù)總線)進行行為探測或數(shù)據(jù)竊取,并且根據(jù)探測結果推導出FPGA內(nèi)部功能模塊的實現(xiàn)機理。?
??? 基于FPGA的安全封裝技術正是為了解決對芯片管腳輸出信號的攻擊而產(chǎn)生的一種安全防護技術,通過在FPGA芯片內(nèi)的功能模塊外加上一層安全封裝,保證功能模塊運行時的不可探測性。而作為整個安全防護機制的啟用入口,身份認證機制關系整個安全封裝結構的有效性,必須保證認證信息在靜態(tài)存儲及認證過程中的有效性及安全性[4]。本文通過對FPGA安全封裝進行剖析,重點研究并設計了一種基于FPGA安全封裝的身份認證機制。該身份認證機制能夠保證認證過程的有效性及認證信息的安全性,具有良好的可移植性,能夠集成到各種安全封裝結構中。?
1 FPGA安全封裝技術?
??? 如圖1所示,基于FPGA的安全封裝結構可以看作是在功能模塊外加上一層保護層,功能模塊所有與外界的I/O端口通信都必須通過安全封裝結構。當功能模塊需要對外部器件進行通信時,所有功能模塊接收/發(fā)送的數(shù)據(jù)均被安全封裝模塊進行加/脫密處理。通過這種方法,攻擊者在FPGA管腳上所截獲的信息均為密文信息,從而達到保護FPGA內(nèi)部功能模塊的目的。?
??? 安全封裝結構主要由三個功能單元組成,分別為FPGA功能模塊單元、身份認證單元和加密單元。其中,功能模塊單元為具體實現(xiàn)系統(tǒng)中FPGA功能的部分,是實現(xiàn)FPGA芯片應用的核心單元;身份認證單元主要負責對用戶的合法身份進行認證并啟用安全封裝;加密單元負責對功能單元的輸入/輸出數(shù)據(jù)進行加/脫密處理,保證FPGA輸入/輸出數(shù)據(jù)的安全性。用戶接口便于用戶插入智能卡等設備,進行身份認證。安全封裝組成結構如圖2所示。?
??? 安全封裝未啟用前,F(xiàn)PGA芯片內(nèi)的功能模塊單元處于等待狀態(tài)。當用戶需要啟用FPGA內(nèi)部的安全封裝時,利用智能卡與FPGA芯片進行身份認證。如果認證失敗,則芯片拒絕該用戶的訪問,如果認證成功,身份認證單元會將用戶ID發(fā)送給加密單元。接收到用戶ID后,加密單元將啟動功能模塊單元。當功能模塊單元對外部進行寫/讀操作時,加密單元從功能模塊單元獲得數(shù)據(jù)的地址信息,結合用戶ID,作為產(chǎn)生加/解密密鑰的根向量,并利用所產(chǎn)生的密鑰對功能模塊單元輸入/輸出的數(shù)據(jù)進行加/解密。?
2 基于FPGA安全封裝的身份認證?
2.1 基于FPGA安全封裝的雙向認證方案?
??? 身份認證是通過將一個證據(jù)與實體身份綁定實現(xiàn)的。在FPGA安全封裝應用中,實體為智能卡及FPGA。為了確保安全封裝應用的安全性,在認證過程中,一方面智能卡必須向FPGA提供證據(jù)證明自己的合法身份;另一方面,F(xiàn)PGA芯片也必須向智能卡提供證據(jù)證明自己的合法性。因此,基于FPGA安全封裝的身份認證機制必須是雙向的。為了降低身份認證機制實現(xiàn)的復雜度并節(jié)省FPGA內(nèi)部資源,選擇了RSA密碼算法并輔助以SHA-1算法作為實現(xiàn)雙向認證方案的密碼學基礎。?
??? RSA密碼的安全性基于大合數(shù)因子分解的困難性[5],當大合數(shù)取1 024位或2 048位時,破譯RSA密碼的代價將是非常巨大的。SHA-1算法是一種單向的Hash函數(shù),通過輸入一組小于264位的報文,得到一組160位的報文摘要[6],并且算法滿足下面兩條性質(zhì):(1)通過報文摘要推算出原報文在計算上是不可行的,即算法具備不可逆性; (2)不同的兩段報文所產(chǎn)生的報文摘要是不相同的,即算法具備抗沖擊性。?
??? 雙向認證方案的密鑰配置如表1所示。假設ef和eu分別為智能卡和FPGA的RSA私鑰,df和du分別為智能卡和FPGA的RSA公鑰,nf和nu分別為智能卡和FPGA所使用的RSA大合數(shù)。FPGA擁有自己的私鑰eu和智能卡的公鑰df及雙方所使用的大合數(shù)nf、nu;同樣智能卡也擁有自己的私鑰ef和FPGA的公鑰du及雙方所使用的大合數(shù)nf、nu, 則雙向認證過程可分為以下幾個步驟:?
?
?
??? (1) 用戶將記錄有用戶ID信息的智能卡插入用戶接口。?
??? (2) FPGA芯片探測到智能卡的插入,啟動身份認證單元。?
??? (3) 智能卡產(chǎn)生一個隨機數(shù)mu,并用ef和nf對其進行加密,然后將加密后的結果發(fā)給FPGA芯片中的身份認證單元。?
??? (4) 身份認證單元使用df和nf對cu進行解密,得到解密結果mu′。?
??? (5) 身份認證單元使用eu和nu對mu′進行加密,并將加密結果cf′回傳給智能卡。?
??? (6) 智能卡使用du和nu對cf′進行解密,并將解密結果與mu進行對比。若正確,則確認FPGA芯片對于用戶的合法性,并繼續(xù)下一步的操作;若不正確,智能卡將與FPGA芯片斷開連接。?
??? (7) 身份認證單元產(chǎn)生一隨機數(shù)mf,并使用eu和nu對其進行加密,并將加密結果cf傳遞給智能卡。?
??? (8) 智能卡使用du和nu對cf進行解密,得到解密結果mf。?
??? (9) 智能卡使用ef和nf對(ID+mu+mf)進行加密,得到加密結果cID,并將cID發(fā)送給身份認證單元。?
??? (10) 身份認證單元使用df和nf對cID進行解密,并將解密結果減去mu和mf得到ID。?
??? (11) 身份認證單元使用SHA-1算法對ID進行Hash運算,得到chash。?
??? (12) 身份認證單元將與ID Hash表寄存器中的值進行匹配,若匹配成功,則證明智能卡對于FPGA芯片的合法性,ID Hash將作為根向量的一部分參與到加密單元的加解密操作中去,若匹配不成功,F(xiàn)PGA芯片將斷開與智能卡的連接。?
2.2 身份認證單元模型設計?
??? 在FPGA安全封裝結構中,身份認證單元的一端與加密單元相連,另一端與用戶接口相連。為了滿足雙向認證過程中智能卡RSA運算及用戶ID存儲安全性的要求,選用DS1957B實現(xiàn)智能卡。DS1957B使用防止物理探測的封裝方式,內(nèi)置Java處理器、1 024位密碼加速器、隨機數(shù)發(fā)生器及134 KB的非易失性RAM,能夠非常方便地實現(xiàn)RSA運算,并且能夠?qū)▋?nèi)保存的密鑰及用戶ID信息實施密封存儲。?
??? 為了實現(xiàn)雙向認證過程,F(xiàn)PGA安全封裝中的身份認證單元模型由一個xe mod n計算器、隨機數(shù)發(fā)生器、RSA引擎、RSA密鑰寄存器、SHA-1計算器及ID Hash表寄存器組成。其中,xe mod n計算器負責RSA密碼的模冪運算,隨機數(shù)發(fā)生器負責產(chǎn)生隨機數(shù),RSA引擎負責FPGA端的RSA運算,RSA密鑰寄存器存儲RSA密碼的密鑰,SHA-1計算器負責對用戶ID信息進行單向Hash運算,ID Hash表寄存器存儲合法的用戶ID的Hash值。身份認證單元模型如圖3所示。?
?
?
3 安全性分析?
??? 身份認證單元模型的安全性主要基于三點:(1)密鑰及用戶ID靜態(tài)存放的安全性; (2)所使用的加密算法的安全性;(3)認證方案抵御各種攻擊的能力。其中第二點不屬于本文討論的范圍。假定所使用的算法總是安全的,以下將具體分析第一點和第三點。?
??? (1)針對于密鑰和用戶ID的靜態(tài)存放,一方面由于智能卡采用了防止物理探測的封裝形式,并對智能卡內(nèi)的數(shù)據(jù)進行密封存儲的方式進行保存,攻擊者難以通過物理探測或軟件探測盜取存儲在智能卡上的密鑰及用戶ID信息[7-8]。另一方面,F(xiàn)PGA內(nèi)部由大規(guī)模邏輯門陣列組成,要從中單獨提取出密鑰等敏感數(shù)據(jù)非常困難。此外,大部分FPGA已經(jīng)具備對比特流及其內(nèi)部結構的保護功能。因此,能夠確保身份認證過程中所使用密鑰及用戶ID的靜態(tài)安全性。?
??? (2)在認證過程中,最有可能遭受到的攻擊手段有冒充實體攻擊、重放攻擊、唯密文攻擊。針對這些攻擊,認證方案都具備相應的防范策略。?
3.1 冒充實體攻擊?
??? 假設攻擊者盜取了用戶的智能卡,為了獲得智能卡上的ID信息,利用一個設備冒充合法的FPGA與智能卡連接。但由于在認證過程中,該冒充的設備無法成功地向智能卡證明其身份的合法性,使智能卡不會向該設備發(fā)送包含用戶ID的相關信息,所以該安全封裝結構能夠抵抗“冒充實體攻擊”。?
3.2 重放攻擊?
??? 假設攻擊者截獲了身份認證單元發(fā)送的認證信息cf′和cf,并對智能卡發(fā)動重發(fā)攻擊。?
??? (1) 在認證過程的步驟(3)中,智能卡產(chǎn)生一個新的隨機數(shù)mu2,并用ef和nf對其進行加密,然后將加密后的結果cu2發(fā)給FPGA芯片中的身份認證單元。?
??? (2) 攻擊者將cf′發(fā)回給智能卡。?
??? (3) 智能卡使用du和nu對cf′進行解密,得到mu,由于mu≠mu2,認證失敗。?
??? 假設攻擊者截獲了智能卡發(fā)送的認證信息cu和cID,并對FPGA發(fā)動重發(fā)攻擊:?
??? (1) 在認證過程步驟(7)中,身份認證單元產(chǎn)生了一個新的隨機數(shù)mf 2,并使用eu和nu對其進行加密,并將加密結果cf2傳遞給智能卡;?
??? (2) 攻擊者將cID發(fā)回給FPGA;?
??? (3) 身份認證單元使用df和nf對cID進行解密,并將解密結果減去mu和mf2得到ID2;?
??? (4) 身份認證單元使用SHA-1算法對ID2進行Hash運算,得到chash′;?
??? (5) 由于chash′顯然不能與ID Hash表寄存器中的值匹配成功,認證失敗。?
??? 因此該安全封裝結構能夠抵抗“重放攻擊”。?
3.3 唯密文攻擊?
??? 假設攻擊者通過信道竊聽截獲了雙方傳遞的所有認證信息,由于認證信息都是基于隨機數(shù)產(chǎn)生的,所以每次傳遞的認證信息都不相同,這極大增加了攻擊者分析密文的難度。而在認證過程的步驟(9)中,由于CID是通過對(ID+mu+mf)加密后得到,mu和mf都是隨機數(shù),所以每次認證的結果都不同,使攻擊者也不能也通過分析CID獲得用戶ID的相關信息。?
??? 本文針對FPGA芯片內(nèi)部功能單元的安全性問題,深入剖析了基于FPGA的安全封裝結構,并對基于該結構的身份認證機制進行了重點研究,設計并實現(xiàn)了一種基于FPGA安全封裝結構的身份認證模型。該模型采用基于公鑰體制的雙向認證機制,能夠有效保證認證信息靜態(tài)及動態(tài)的安全,從而達到確保安全封裝結構有效性及芯片內(nèi)部功能單元安全的目的。?
參考文獻?
[1] 曾志廉,何清平,鄒候文.通用FPGA實驗系統(tǒng)的設計與應用. 微計算機信息,2007,23(4):234-235.?
[2] KEAN T. Secure configuration of field programmable gate?arrays, in LNCS 2147,FPL2001,Springer-Verlag, 2001.?
[3] WOLLINGER T, PAAR C. How secure are FPGAs in?cryptographic application,Inernational Conference on Field?Programmable Logic and Application. FPL, 2003(9).?
[4] 張偉麗,楊鼎才,亓文華.智能卡雙向認證協(xié)議的改進[J],微計算機信息,2007,23(9):78-79.?
[5] 王超,沈海斌,孟慶.RSA密碼算法的硬件實現(xiàn)[J],計算機工程與應用,2004(14).?
[6] 黃諄,白國強,陳弘毅.快速實現(xiàn)SHA-1算法的硬件結構. 清華大學學報(自然科學版),2005,45(1).?
[7] 李美峰,戴冠中,劉航,等. 加密芯片中密鑰獲取模塊的設計與FPGA實現(xiàn).計算機工程與應用,2006(9).?
[8] 吳成波,寇雅楠,湯黎.基于智能卡的嵌入式網(wǎng)絡加密安全系統(tǒng)設計. 計算機工程與設計,2007,28(14):3436-3439.