《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于FPGA安全封裝的身份認(rèn)證模型研究

基于FPGA安全封裝的身份認(rèn)證模型研究

2009-05-26
作者:嚴(yán) 博, 歐慶于, 吳曉平

??? 摘? 要: 在深入分析基于FPGA的安全封裝結(jié)構(gòu)的基礎(chǔ)上,針對其實際應(yīng)用中身份認(rèn)證的安全性要求,重點研究并設(shè)計了一種適用于FPGA安全封裝結(jié)構(gòu)的身份認(rèn)證模型。該模型通過利用RSA公鑰密碼算法和SHA-1算法,實現(xiàn)了對用戶及FPGA的雙向認(rèn)證。該模型具備良好的可移植性和安全性,能夠有效抵御多種攻擊,為基于FPGA的安全封裝應(yīng)用提供了強有力的用戶權(quán)限認(rèn)證。?

??? 關(guān)鍵詞: FPGA; 安全封裝; 身份認(rèn)證?

?

??? 隨著嵌入式技術(shù)的推廣,F(xiàn)PGA在各種嵌入式系統(tǒng)中得到了廣泛應(yīng)用。在各種嵌入式系統(tǒng)應(yīng)用中,F(xiàn)PGA往往用于實現(xiàn)整個系統(tǒng)的核心功能[1]。因此,如何保證FPGA內(nèi)部功能構(gòu)造的安全性成為保護(hù)整個嵌入式系統(tǒng)核心知識產(chǎn)權(quán)的關(guān)鍵性問題。針對FPGA內(nèi)部構(gòu)造碼安全性的問題,各FPGA廠家推出了多種具有特殊安全功能的產(chǎn)品[2-3]。但是,先進(jìn)的數(shù)據(jù)分析技術(shù)及工具使得攻擊者可以很容易地對芯片管腳的輸出信號(如地址總線、數(shù)據(jù)總線)進(jìn)行行為探測或數(shù)據(jù)竊取,并且根據(jù)探測結(jié)果推導(dǎo)出FPGA內(nèi)部功能模塊的實現(xiàn)機理。?

??? 基于FPGA的安全封裝技術(shù)正是為了解決對芯片管腳輸出信號的攻擊而產(chǎn)生的一種安全防護(hù)技術(shù),通過在FPGA芯片內(nèi)的功能模塊外加上一層安全封裝,保證功能模塊運行時的不可探測性。而作為整個安全防護(hù)機制的啟用入口,身份認(rèn)證機制關(guān)系整個安全封裝結(jié)構(gòu)的有效性,必須保證認(rèn)證信息在靜態(tài)存儲及認(rèn)證過程中的有效性及安全性[4]。本文通過對FPGA安全封裝進(jìn)行剖析,重點研究并設(shè)計了一種基于FPGA安全封裝的身份認(rèn)證機制。該身份認(rèn)證機制能夠保證認(rèn)證過程的有效性及認(rèn)證信息的安全性,具有良好的可移植性,能夠集成到各種安全封裝結(jié)構(gòu)中。?

1 FPGA安全封裝技術(shù)?

??? 如圖1所示,基于FPGA的安全封裝結(jié)構(gòu)可以看作是在功能模塊外加上一層保護(hù)層,功能模塊所有與外界的I/O端口通信都必須通過安全封裝結(jié)構(gòu)。當(dāng)功能模塊需要對外部器件進(jìn)行通信時,所有功能模塊接收/發(fā)送的數(shù)據(jù)均被安全封裝模塊進(jìn)行加/脫密處理。通過這種方法,攻擊者在FPGA管腳上所截獲的信息均為密文信息,從而達(dá)到保護(hù)FPGA內(nèi)部功能模塊的目的。?

??? 安全封裝結(jié)構(gòu)主要由三個功能單元組成,分別為FPGA功能模塊單元、身份認(rèn)證單元和加密單元。其中,功能模塊單元為具體實現(xiàn)系統(tǒng)中FPGA功能的部分,是實現(xiàn)FPGA芯片應(yīng)用的核心單元;身份認(rèn)證單元主要負(fù)責(zé)對用戶的合法身份進(jìn)行認(rèn)證并啟用安全封裝;加密單元負(fù)責(zé)對功能單元的輸入/輸出數(shù)據(jù)進(jìn)行加/脫密處理,保證FPGA輸入/輸出數(shù)據(jù)的安全性。用戶接口便于用戶插入智能卡等設(shè)備,進(jìn)行身份認(rèn)證。安全封裝組成結(jié)構(gòu)如圖2所示。?

??? 安全封裝未啟用前,F(xiàn)PGA芯片內(nèi)的功能模塊單元處于等待狀態(tài)。當(dāng)用戶需要啟用FPGA內(nèi)部的安全封裝時,利用智能卡與FPGA芯片進(jìn)行身份認(rèn)證。如果認(rèn)證失敗,則芯片拒絕該用戶的訪問,如果認(rèn)證成功,身份認(rèn)證單元會將用戶ID發(fā)送給加密單元。接收到用戶ID后,加密單元將啟動功能模塊單元。當(dāng)功能模塊單元對外部進(jìn)行寫/讀操作時,加密單元從功能模塊單元獲得數(shù)據(jù)的地址信息,結(jié)合用戶ID,作為產(chǎn)生加/解密密鑰的根向量,并利用所產(chǎn)生的密鑰對功能模塊單元輸入/輸出的數(shù)據(jù)進(jìn)行加/解密。?

2 基于FPGA安全封裝的身份認(rèn)證?

2.1 基于FPGA安全封裝的雙向認(rèn)證方案?

??? 身份認(rèn)證是通過將一個證據(jù)與實體身份綁定實現(xiàn)的。在FPGA安全封裝應(yīng)用中,實體為智能卡及FPGA。為了確保安全封裝應(yīng)用的安全性,在認(rèn)證過程中,一方面智能卡必須向FPGA提供證據(jù)證明自己的合法身份;另一方面,F(xiàn)PGA芯片也必須向智能卡提供證據(jù)證明自己的合法性。因此,基于FPGA安全封裝的身份認(rèn)證機制必須是雙向的。為了降低身份認(rèn)證機制實現(xiàn)的復(fù)雜度并節(jié)省FPGA內(nèi)部資源,選擇了RSA密碼算法并輔助以SHA-1算法作為實現(xiàn)雙向認(rèn)證方案的密碼學(xué)基礎(chǔ)。?

??? RSA密碼的安全性基于大合數(shù)因子分解的困難性[5],當(dāng)大合數(shù)取1 024位或2 048位時,破譯RSA密碼的代價將是非常巨大的。SHA-1算法是一種單向的Hash函數(shù),通過輸入一組小于264位的報文,得到一組160位的報文摘要[6],并且算法滿足下面兩條性質(zhì):(1)通過報文摘要推算出原報文在計算上是不可行的,即算法具備不可逆性; (2)不同的兩段報文所產(chǎn)生的報文摘要是不相同的,即算法具備抗沖擊性。?

??? 雙向認(rèn)證方案的密鑰配置如表1所示。假設(shè)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, 則雙向認(rèn)證過程可分為以下幾個步驟:?

?

?

??? (1) 用戶將記錄有用戶ID信息的智能卡插入用戶接口。?

??? (2) FPGA芯片探測到智能卡的插入,啟動身份認(rèn)證單元。?

??? (3) 智能卡產(chǎn)生一個隨機數(shù)mu,并用ef和nf對其進(jìn)行加密,然后將加密后的結(jié)果發(fā)給FPGA芯片中的身份認(rèn)證單元。?

??? (4) 身份認(rèn)證單元使用df和nf對cu進(jìn)行解密,得到解密結(jié)果mu′。?

??? (5) 身份認(rèn)證單元使用eu和nu對mu′進(jìn)行加密,并將加密結(jié)果cf′回傳給智能卡。?

??? (6) 智能卡使用du和nu對cf′進(jìn)行解密,并將解密結(jié)果與mu進(jìn)行對比。若正確,則確認(rèn)FPGA芯片對于用戶的合法性,并繼續(xù)下一步的操作;若不正確,智能卡將與FPGA芯片斷開連接。?

??? (7) 身份認(rèn)證單元產(chǎn)生一隨機數(shù)mf,并使用eu和nu對其進(jìn)行加密,并將加密結(jié)果cf傳遞給智能卡。?

??? (8) 智能卡使用du和nu對cf進(jìn)行解密,得到解密結(jié)果mf。?

??? (9) 智能卡使用ef和nf對(ID+mu+mf)進(jìn)行加密,得到加密結(jié)果cID,并將cID發(fā)送給身份認(rèn)證單元。?

??? (10) 身份認(rèn)證單元使用df和nf對cID進(jìn)行解密,并將解密結(jié)果減去mu和mf得到ID。?

??? (11) 身份認(rèn)證單元使用SHA-1算法對ID進(jìn)行Hash運算,得到chash。?

??? (12) 身份認(rèn)證單元將與ID Hash表寄存器中的值進(jìn)行匹配,若匹配成功,則證明智能卡對于FPGA芯片的合法性,ID Hash將作為根向量的一部分參與到加密單元的加解密操作中去,若匹配不成功,F(xiàn)PGA芯片將斷開與智能卡的連接。?

2.2 身份認(rèn)證單元模型設(shè)計?

??? 在FPGA安全封裝結(jié)構(gòu)中,身份認(rèn)證單元的一端與加密單元相連,另一端與用戶接口相連。為了滿足雙向認(rèn)證過程中智能卡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)雙向認(rèn)證過程,F(xiàn)PGA安全封裝中的身份認(rèn)證單元模型由一個xe mod n計算器、隨機數(shù)發(fā)生器、RSA引擎、RSA密鑰寄存器、SHA-1計算器及ID Hash表寄存器組成。其中,xe mod n計算器負(fù)責(zé)RSA密碼的模冪運算,隨機數(shù)發(fā)生器負(fù)責(zé)產(chǎn)生隨機數(shù),RSA引擎負(fù)責(zé)FPGA端的RSA運算,RSA密鑰寄存器存儲RSA密碼的密鑰,SHA-1計算器負(fù)責(zé)對用戶ID信息進(jìn)行單向Hash運算,ID Hash表寄存器存儲合法的用戶ID的Hash值。身份認(rèn)證單元模型如圖3所示。?

?

?

3 安全性分析?

??? 身份認(rèn)證單元模型的安全性主要基于三點:(1)密鑰及用戶ID靜態(tài)存放的安全性; (2)所使用的加密算法的安全性;(3)認(rèn)證方案抵御各種攻擊的能力。其中第二點不屬于本文討論的范圍。假定所使用的算法總是安全的,以下將具體分析第一點和第三點。?

??? (1)針對于密鑰和用戶ID的靜態(tài)存放,一方面由于智能卡采用了防止物理探測的封裝形式,并對智能卡內(nèi)的數(shù)據(jù)進(jìn)行密封存儲的方式進(jìn)行保存,攻擊者難以通過物理探測或軟件探測盜取存儲在智能卡上的密鑰及用戶ID信息[7-8]。另一方面,F(xiàn)PGA內(nèi)部由大規(guī)模邏輯門陣列組成,要從中單獨提取出密鑰等敏感數(shù)據(jù)非常困難。此外,大部分FPGA已經(jīng)具備對比特流及其內(nèi)部結(jié)構(gòu)的保護(hù)功能。因此,能夠確保身份認(rèn)證過程中所使用密鑰及用戶ID的靜態(tài)安全性。?

??? (2)在認(rèn)證過程中,最有可能遭受到的攻擊手段有冒充實體攻擊、重放攻擊、唯密文攻擊。針對這些攻擊,認(rèn)證方案都具備相應(yīng)的防范策略。?

3.1 冒充實體攻擊?

??? 假設(shè)攻擊者盜取了用戶的智能卡,為了獲得智能卡上的ID信息,利用一個設(shè)備冒充合法的FPGA與智能卡連接。但由于在認(rèn)證過程中,該冒充的設(shè)備無法成功地向智能卡證明其身份的合法性,使智能卡不會向該設(shè)備發(fā)送包含用戶ID的相關(guān)信息,所以該安全封裝結(jié)構(gòu)能夠抵抗“冒充實體攻擊”。?

3.2 重放攻擊?

??? 假設(shè)攻擊者截獲了身份認(rèn)證單元發(fā)送的認(rèn)證信息cf′和cf,并對智能卡發(fā)動重發(fā)攻擊。?

??? (1) 在認(rèn)證過程的步驟(3)中,智能卡產(chǎn)生一個新的隨機數(shù)mu2,并用ef和nf對其進(jìn)行加密,然后將加密后的結(jié)果cu2發(fā)給FPGA芯片中的身份認(rèn)證單元。?

??? (2) 攻擊者將cf′發(fā)回給智能卡。?

??? (3) 智能卡使用du和nu對cf′進(jìn)行解密,得到mu,由于mu≠mu2,認(rèn)證失敗。?

??? 假設(shè)攻擊者截獲了智能卡發(fā)送的認(rèn)證信息cu和cID,并對FPGA發(fā)動重發(fā)攻擊:?

??? (1) 在認(rèn)證過程步驟(7)中,身份認(rèn)證單元產(chǎn)生了一個新的隨機數(shù)mf 2,并使用eu和nu對其進(jìn)行加密,并將加密結(jié)果cf2傳遞給智能卡;?

??? (2) 攻擊者將cID發(fā)回給FPGA;?

??? (3) 身份認(rèn)證單元使用df和nf對cID進(jìn)行解密,并將解密結(jié)果減去mu和mf2得到ID2;?

??? (4) 身份認(rèn)證單元使用SHA-1算法對ID2進(jìn)行Hash運算,得到chash′;?

??? (5) 由于chash′顯然不能與ID Hash表寄存器中的值匹配成功,認(rèn)證失敗。?

??? 因此該安全封裝結(jié)構(gòu)能夠抵抗“重放攻擊”。?

3.3 唯密文攻擊?

??? 假設(shè)攻擊者通過信道竊聽截獲了雙方傳遞的所有認(rèn)證信息,由于認(rèn)證信息都是基于隨機數(shù)產(chǎn)生的,所以每次傳遞的認(rèn)證信息都不相同,這極大增加了攻擊者分析密文的難度。而在認(rèn)證過程的步驟(9)中,由于CID是通過對(ID+mu+mf)加密后得到,mu和mf都是隨機數(shù),所以每次認(rèn)證的結(jié)果都不同,使攻擊者也不能也通過分析CID獲得用戶ID的相關(guān)信息。?

??? 本文針對FPGA芯片內(nèi)部功能單元的安全性問題,深入剖析了基于FPGA的安全封裝結(jié)構(gòu),并對基于該結(jié)構(gòu)的身份認(rèn)證機制進(jìn)行了重點研究,設(shè)計并實現(xiàn)了一種基于FPGA安全封裝結(jié)構(gòu)的身份認(rèn)證模型。該模型采用基于公鑰體制的雙向認(rèn)證機制,能夠有效保證認(rèn)證信息靜態(tài)及動態(tài)的安全,從而達(dá)到確保安全封裝結(jié)構(gòu)有效性及芯片內(nèi)部功能單元安全的目的。?

參考文獻(xiàn)?

[1] 曾志廉,何清平,鄒候文.通用FPGA實驗系統(tǒng)的設(shè)計與應(yī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] 張偉麗,楊鼎才,亓文華.智能卡雙向認(rèn)證協(xié)議的改進(jìn)[J],微計算機信息,2007,23(9):78-79.?

[5] 王超,沈海斌,孟慶.RSA密碼算法的硬件實現(xiàn)[J],計算機工程與應(yīng)用,2004(14).?

[6] 黃諄,白國強,陳弘毅.快速實現(xiàn)SHA-1算法的硬件結(jié)構(gòu). 清華大學(xué)學(xué)報(自然科學(xué)版),2005,45(1).?

[7] 李美峰,戴冠中,劉航,等. 加密芯片中密鑰獲取模塊的設(shè)計與FPGA實現(xiàn).計算機工程與應(yīng)用,2006(9).?

[8] 吳成波,寇雅楠,湯黎.基于智能卡的嵌入式網(wǎng)絡(luò)加密安全系統(tǒng)設(shè)計. 計算機工程與設(shè)計,2007,28(14):3436-3439.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。