在深入分析基于FPGA的安全封裝結(jié)構(gòu)的基礎(chǔ)上,針對(duì)其實(shí)際應(yīng)用中身份認(rèn)證的安全性要求,重點(diǎn)研究并設(shè)計(jì)了一種適用于FPGA安全封裝結(jié)構(gòu)的身份認(rèn)證模型。該模型通過(guò)利用RSA公鑰密碼算法和SHA-1算法,實(shí)現(xiàn)了對(duì)用戶及FPGA的雙向認(rèn)證。該模型具備良好的可移植性和安全性,能夠有效抵御多種攻擊,為基于FPGA的安全封裝應(yīng)用提供了強(qiáng)有力的用戶權(quán)限認(rèn)證。
隨著嵌入式技術(shù)的推廣,F(xiàn)PGA在各種嵌入式系統(tǒng)中得到了廣泛應(yīng)用。在各種嵌入式系統(tǒng)應(yīng)用中,F(xiàn)PGA往往用于實(shí)現(xiàn)整個(gè)系統(tǒng)的核心功能。因此,如何保證FPGA內(nèi)部功能構(gòu)造的安全性成為保護(hù)整個(gè)嵌入式系統(tǒng)核心知識(shí)產(chǎn)權(quán)的關(guān)鍵性問(wèn)題。針對(duì)FPGA內(nèi)部構(gòu)造碼安全性的問(wèn)題,各FPGA廠家推出了多種具有特殊安全功能的產(chǎn)品。但是,先進(jìn)的數(shù)據(jù)分析技術(shù)及工具使得攻擊者可以很容易地對(duì)芯片管腳的輸出信號(hào)(如地址總線、數(shù)據(jù)總線)進(jìn)行行為探測(cè)或數(shù)據(jù)竊取,并且根據(jù)探測(cè)結(jié)果推導(dǎo)出FPGA內(nèi)部功能模塊的實(shí)現(xiàn)機(jī)理。
基于FPGA的安全封裝技術(shù)正是為了解決對(duì)芯片管腳輸出信號(hào)的攻擊而產(chǎn)生的一種安全防護(hù)技術(shù),通過(guò)在FPGA芯片內(nèi)的功能模塊外加上一層安全封裝,保證功能模塊運(yùn)行時(shí)的不可探測(cè)性。而作為整個(gè)安全防護(hù)機(jī)制的啟用入口,身份認(rèn)證機(jī)制關(guān)系整個(gè)安全封裝結(jié)構(gòu)的有效性,必須保證認(rèn)證信息在靜態(tài)存儲(chǔ)及認(rèn)證過(guò)程中的有效性及安全性。本文通過(guò)對(duì)FPGA安全封裝進(jìn)行剖析,重點(diǎn)研究并設(shè)計(jì)了一種基于FPGA安全封裝的身份認(rèn)證機(jī)制。該身份認(rèn)證機(jī)制能夠保證認(rèn)證過(guò)程的有效性及認(rèn)證信息的安全性,具有良好的可移植性,能夠集成到各種安全封裝結(jié)構(gòu)中。
1 FPGA安全封裝技術(shù)
如圖1所示,基于FPGA的安全封裝結(jié)構(gòu)可以看作是在功能模塊外加上一層保護(hù)層,功能模塊所有與外界的I/O端口通信都必須通過(guò)安全封裝結(jié)構(gòu)。當(dāng)功能模塊需要對(duì)外部器件進(jìn)行通信時(shí),所有功能模塊接收/發(fā)送的數(shù)據(jù)均被安全封裝模塊進(jìn)行加/脫密處理。通過(guò)這種方法,攻擊者在FPGA管腳上所截獲的信息均為密文信息,從而達(dá)到保護(hù)FPGA內(nèi)部功能模塊的目的。
安全封裝結(jié)構(gòu)主要由三個(gè)功能單元組成,分別為FPGA功能模塊單元、身份認(rèn)證單元和加密單元。其中,功能模塊單元為具體實(shí)現(xiàn)系統(tǒng)中FPGA功能的部分,是實(shí)現(xiàn)FPGA芯片應(yīng)用的核心單元;身份認(rèn)證單元主要負(fù)責(zé)對(duì)用戶的合法身份進(jìn)行認(rèn)證并啟用安全封裝;加密單元負(fù)責(zé)對(duì)功能單元的輸入/輸出數(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)部的安全封裝時(shí),利用智能卡與FPGA芯片進(jìn)行身份認(rèn)證。如果認(rèn)證失敗,則芯片拒絕該用戶的訪問(wèn),如果認(rèn)證成功,身份認(rèn)證單元會(huì)將用戶ID發(fā)送給加密單元。接收到用戶ID后,加密單元將啟動(dòng)功能模塊單元。當(dāng)功能模塊單元對(duì)外部進(jìn)行寫(xiě)/讀操作時(shí),加密單元從功能模塊單元獲得數(shù)據(jù)的地址信息,結(jié)合用戶ID,作為產(chǎn)生加/解密密鑰的根向量,并利用所產(chǎn)生的密鑰對(duì)功能模塊單元輸入/輸出的數(shù)據(jù)進(jìn)行加/解密。
2 基于FPGA安全封裝的身份認(rèn)證
2.1 基于FPGA安全封裝的雙向認(rèn)證方案
身份認(rèn)證是通過(guò)將一個(gè)證據(jù)與實(shí)體身份綁定實(shí)現(xiàn)的。在FPGA安全封裝應(yīng)用中,實(shí)體為智能卡及FPGA。為了確保安全封裝應(yīng)用的安全性,在認(rèn)證過(guò)程中,一方面智能卡必須向FPGA提供證據(jù)證明自己的合法身份;另一方面,F(xiàn)PGA芯片也必須向智能卡提供證據(jù)證明自己的合法性。因此,基于FPGA安全封裝的身份認(rèn)證機(jī)制必須是雙向的。為了降低身份認(rèn)證機(jī)制實(shí)現(xiàn)的復(fù)雜度并節(jié)省FPGA內(nèi)部資源,選擇了RSA密碼算法并輔助以SHA-1算法作為實(shí)現(xiàn)雙向認(rèn)證方案的密碼學(xué)基礎(chǔ)。
RSA密碼的安全性基于大合數(shù)因子分解的困難性,當(dāng)大合數(shù)取1 024位或2 048位時(shí),破譯RSA密碼的代價(jià)將是非常巨大的。SHA-1算法是一種單向的Hash函數(shù),通過(guò)輸入一組小于264位的報(bào)文,得到一組160位的報(bào)文摘要,并且算法滿足下面兩條性質(zhì):(1)通過(guò)報(bào)文摘要推算出原報(bào)文在計(jì)算上是不可行的,即算法具備不可逆性; (2)不同的兩段報(bào)文所產(chǎn)生的報(bào)文摘要是不相同的,即算法具備抗沖擊性。
雙向認(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)證過(guò)程可分為以下幾個(gè)步驟:
(1) 用戶將記錄有用戶ID信息的智能卡插入用戶接口。
(2) FPGA芯片探測(cè)到智能卡的插入,啟動(dòng)身份認(rèn)證單元。
(3) 智能卡產(chǎn)生一個(gè)隨機(jī)數(shù)mu,并用ef和nf對(duì)其進(jìn)行加密,然后將加密后的結(jié)果發(fā)給FPGA芯片中的身份認(rèn)證單元。
(4) 身份認(rèn)證單元使用df和nf對(duì)cu進(jìn)行解密,得到解密結(jié)果mu′。
(5) 身份認(rèn)證單元使用eu和nu對(duì)mu′進(jìn)行加密,并將加密結(jié)果cf′回傳給智能卡。
(6) 智能卡使用du和nu對(duì)cf′進(jìn)行解密,并將解密結(jié)果與mu進(jìn)行對(duì)比。若正確,則確認(rèn)FPGA芯片對(duì)于用戶的合法性,并繼續(xù)下一步的操作;若不正確,智能卡將與FPGA芯片斷開(kāi)連接。
(7) 身份認(rèn)證單元產(chǎn)生一隨機(jī)數(shù)mf,并使用eu和nu對(duì)其進(jìn)行加密,并將加密結(jié)果cf傳遞給智能卡。
(8) 智能卡使用du和nu對(duì)cf進(jìn)行解密,得到解密結(jié)果mf。
(9) 智能卡使用ef和nf對(duì)(ID+mu+mf)進(jìn)行加密,得到加密結(jié)果cID,并將cID發(fā)送給身份認(rèn)證單元。
(10) 身份認(rèn)證單元使用df和nf對(duì)cID進(jìn)行解密,并將解密結(jié)果減去mu和mf得到ID。
(11) 身份認(rèn)證單元使用SHA-1算法對(duì)ID進(jìn)行Hash運(yùn)算,得到chash。
(12) 身份認(rèn)證單元將與ID Hash表寄存器中的值進(jìn)行匹配,若匹配成功,則證明智能卡對(duì)于FPGA芯片的合法性,ID Hash將作為根向量的一部分參與到加密單元的加解密操作中去,若匹配不成功,F(xiàn)PGA芯片將斷開(kāi)與智能卡的連接。
2.2 身份認(rèn)證單元模型設(shè)計(jì)
在FPGA安全封裝結(jié)構(gòu)中,身份認(rèn)證單元的一端與加密單元相連,另一端與用戶接口相連。為了滿足雙向認(rèn)證過(guò)程中智能卡RSA運(yùn)算及用戶ID存儲(chǔ)安全性的要求,選用DS1957B實(shí)現(xiàn)智能卡。DS1957B使用防止物理探測(cè)的封裝方式,內(nèi)置Java處理器、1 024位密碼加速器、隨機(jī)數(shù)發(fā)生器及134KB的非易失性RAM,能夠非常方便地實(shí)現(xiàn)RSA運(yùn)算,并且能夠?qū)▋?nèi)保存的密鑰及用戶ID信息實(shí)施密封存儲(chǔ)。
為了實(shí)現(xiàn)雙向認(rèn)證過(guò)程,F(xiàn)PGA安全封裝中的身份認(rèn)證單元模型由一個(gè)xe mod n計(jì)算器、隨機(jī)數(shù)發(fā)生器、RSA引擎、RSA密鑰寄存器、SHA-1計(jì)算器及ID Hash表寄存器組成。其中,xemodn計(jì)算器負(fù)責(zé)RSA密碼的模冪運(yùn)算,隨機(jī)數(shù)發(fā)生器負(fù)責(zé)產(chǎn)生隨機(jī)數(shù),RSA引擎負(fù)責(zé)FPGA端的RSA運(yùn)算,RSA密鑰寄存器存儲(chǔ)RSA密碼的密鑰,SHA-1計(jì)算器負(fù)責(zé)對(duì)用戶ID信息進(jìn)行單向Hash運(yùn)算,ID Hash表寄存器存儲(chǔ)合法的用戶ID的Hash值。身份認(rèn)證單元模型如圖3所示。
3 安全性分析
身份認(rèn)證單元模型的安全性主要基于三點(diǎn):(1)密鑰及用戶ID靜態(tài)存放的安全性; (2)所使用的加密算法的安全性;(3)認(rèn)證方案抵御各種攻擊的能力。其中第二點(diǎn)不屬于本文討論的范圍。假定所使用的算法總是安全的,以下將具體分析第一點(diǎn)和第三點(diǎn)。
(1)針對(duì)于密鑰和用戶ID的靜態(tài)存放,一方面由于智能卡采用了防止物理探測(cè)的封裝形式,并對(duì)智能卡內(nèi)的數(shù)據(jù)進(jìn)行密封存儲(chǔ)的方式進(jìn)行保存,攻擊者難以通過(guò)物理探測(cè)或軟件探測(cè)盜取存儲(chǔ)在智能卡上的密鑰及用戶ID信息[7-8]。另一方面,F(xiàn)PGA內(nèi)部由大規(guī)模邏輯門陣列組成,要從中單獨(dú)提取出密鑰等敏感數(shù)據(jù)非常困難。此外,大部分FPGA已經(jīng)具備對(duì)比特流及其內(nèi)部結(jié)構(gòu)的保護(hù)功能。因此,能夠確保身份認(rèn)證過(guò)程中所使用密鑰及用戶ID的靜態(tài)安全性。
(2)在認(rèn)證過(guò)程中,最有可能遭受到的攻擊手段有冒充實(shí)體攻擊、重放攻擊、唯密文攻擊。針對(duì)這些攻擊,認(rèn)證方案都具備相應(yīng)的防范策略。
3.1 冒充實(shí)體攻擊
假設(shè)攻擊者盜取了用戶的智能卡,為了獲得智能卡上的ID信息,利用一個(gè)設(shè)備冒充合法的FPGA與智能卡連接。但由于在認(rèn)證過(guò)程中,該冒充的設(shè)備無(wú)法成功地向智能卡證明其身份的合法性,使智能卡不會(huì)向該設(shè)備發(fā)送包含用戶ID的相關(guān)信息,所以該安全封裝結(jié)構(gòu)能夠抵抗“冒充實(shí)體攻擊”。
3.2 重放攻擊
假設(shè)攻擊者截獲了身份認(rèn)證單元發(fā)送的認(rèn)證信息cf′和cf,并對(duì)智能卡發(fā)動(dòng)重發(fā)攻擊。
(1) 在認(rèn)證過(guò)程的步驟(3)中,智能卡產(chǎn)生一個(gè)新的隨機(jī)數(shù)mu2,并用ef和nf對(duì)其進(jìn)行加密,然后將加密后的結(jié)果cu2發(fā)給FPGA芯片中的身份認(rèn)證單元。
(2) 攻擊者將cf′發(fā)回給智能卡。
(3) 智能卡使用du和nu對(duì)cf′進(jìn)行解密,得到mu,由于mu≠mu2,認(rèn)證失敗。
假設(shè)攻擊者截獲了智能卡發(fā)送的認(rèn)證信息cu和cID,并對(duì)FPGA發(fā)動(dòng)重發(fā)攻擊:
(1) 在認(rèn)證過(guò)程步驟(7)中,身份認(rèn)證單元產(chǎn)生了一個(gè)新的隨機(jī)數(shù)mf 2,并使用eu和nu對(duì)其進(jìn)行加密,并將加密結(jié)果cf2傳遞給智能卡;
(2) 攻擊者將cID發(fā)回給FPGA;
(3) 身份認(rèn)證單元使用df和nf對(duì)cID進(jìn)行解密,并將解密結(jié)果減去mu和mf2得到ID2;
(4) 身份認(rèn)證單元使用SHA-1算法對(duì)ID2進(jìn)行Hash運(yùn)算,得到chash′;
(5) 由于chash′顯然不能與ID Hash表寄存器中的值匹配成功,認(rèn)證失敗。
因此該安全封裝結(jié)構(gòu)能夠抵抗“重放攻擊”。
3.3 唯密文攻擊
假設(shè)攻擊者通過(guò)信道竊聽(tīng)截獲了雙方傳遞的所有認(rèn)證信息,由于認(rèn)證信息都是基于隨機(jī)數(shù)產(chǎn)生的,所以每次傳遞的認(rèn)證信息都不相同,這極大增加了攻擊者分析密文的難度。而在認(rèn)證過(guò)程的步驟(9)中,由于CID是通過(guò)對(duì)(ID+mu+mf)加密后得到,mu和mf都是隨機(jī)數(shù),所以每次認(rèn)證的結(jié)果都不同,使攻擊者也不能也通過(guò)分析CID獲得用戶ID的相關(guān)信息。
本文針對(duì)FPGA芯片內(nèi)部功能單元的安全性問(wèn)題,深入剖析了基于FPGA的安全封裝結(jié)構(gòu),并對(duì)基于該結(jié)構(gòu)的身份認(rèn)證機(jī)制進(jìn)行了重點(diǎn)研究,設(shè)計(jì)并實(shí)現(xiàn)了一種基于FPGA安全封裝結(jié)構(gòu)的身份認(rèn)證模型。該模型采用基于公鑰體制的雙向認(rèn)證機(jī)制,能夠有效保證認(rèn)證信息靜態(tài)及動(dòng)態(tài)的安全,從而達(dá)到確保安全封裝結(jié)構(gòu)有效性及芯片內(nèi)部功能單元安全的目的。
責(zé)任編輯:gt
評(píng)論
查看更多