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