基于fpga的luks認(rèn)證芯片電路及其密碼恢復(fù)方法
【專利摘要】基于FPGA的LUKS認(rèn)證芯片電路及其密碼恢復(fù)方法。芯片電路設(shè)控制、密碼生成、3個(gè)用戶密鑰PBKDF2、用戶密鑰選擇、AES128密鑰擴(kuò)展、AES128解密、BRAM存儲(chǔ)、反取證合并、哈希校驗(yàn)值PBKDF2和比較共12個(gè)模塊。密碼恢復(fù)方法:FPGA處理器解析加密的LUKS鏡像文件獲取認(rèn)證需要的數(shù)據(jù);處理器將認(rèn)證需要的數(shù)據(jù)寫(xiě)入控制模塊的寄存器;處理器向LUKS認(rèn)證芯片電路發(fā)送啟動(dòng)信號(hào),芯片電路進(jìn)行密碼恢復(fù);處理器啟動(dòng)芯片電路后監(jiān)測(cè)芯片電路控制模塊中狀態(tài)寄存器,獲取認(rèn)證是否完畢及認(rèn)證是否成功的信息;處理器監(jiān)測(cè)到認(rèn)證完畢,若成功,向控制臺(tái)輸出認(rèn)證恢復(fù)的密碼;若失敗,輸出密碼恢復(fù)失敗信息。
【專利說(shuō)明】
基于FPGA的LUKS認(rèn)證芯片電路及其密碼恢復(fù)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及信息安全,尤其是涉及一種基于FPGA的LUKS認(rèn)證芯片電路及其密碼恢復(fù)方法?!颈尘凹夹g(shù)】[〇〇〇2] LUKS(Linux Unified Key Setup)是Linux系統(tǒng)下常用的磁盤(pán)加密技術(shù)之一,通用于Linux的各個(gè)版本(Clemens Fruhwirth,LUKS On-Disk Format Specificat1n Vers1n 1.1.1,https://gitlab.com/cryptsetup/cryptsetup/wikis/LUKS-standard/on-disk-format.pdf,0ctober 16,2011)。它是一種數(shù)據(jù)加密標(biāo)準(zhǔn),與平臺(tái)無(wú)關(guān),在Android平臺(tái)都有相關(guān)應(yīng)用,如LUKS Manager。隨著Linux操作系統(tǒng)和手機(jī)Android操作系統(tǒng)的普及,被廣泛使用。
[0003]目前針對(duì)LUKS認(rèn)證機(jī)制的分析研究多基于通用CPU或者GPU(Graphic Processing Unit,圖形處理器)的硬件平臺(tái)下,盡管其運(yùn)行速度較快,但是隨著GPU不斷的更新迭代,目前的性能已經(jīng)受制于高功耗的困擾。由于運(yùn)行速度和能耗比值這個(gè)關(guān)鍵指標(biāo)比較差,使得基于多核CHJ或GPU平臺(tái)方案的小型化和進(jìn)一步提高空間受到限制。
[0004]現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)是在PAL、GAL、CPLD 等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。目前,F(xiàn)PGA芯片中還加入了 ARM等處理器,這種處理器系統(tǒng)與可擴(kuò)展編程邏輯單元的全新組合的設(shè)計(jì)大大方便了專用芯片電路的應(yīng)用開(kāi)發(fā),在具有開(kāi)發(fā)靈活性的同時(shí)又具備強(qiáng)大的并行處理能力。近年來(lái),將特定密碼算法在FPGA中進(jìn)行兌現(xiàn),以提高算法的處理速度是密碼領(lǐng)域的一個(gè)石開(kāi)究熱點(diǎn)(Reza Rezaeian Farashahi,Bahram Rashidi , Sayed Masoud Sayed1.FPGA based fast and high-throughput 2-slow retiming 128-bit AES encrypt1n algorithm,Microelectronics Journal,vol.45,2014,pp.1014-1025)〇
[0005]中國(guó)專利201310310685公開(kāi)了一種電子系統(tǒng)認(rèn)證芯片,數(shù)據(jù)解密采用64位的DES 算法,其認(rèn)證機(jī)制是自行開(kāi)發(fā)并不是一個(gè)公開(kāi)的認(rèn)證機(jī)制規(guī)范。相對(duì)于被Linux和An droid 操作系統(tǒng)廣泛商用的LUKS認(rèn)證機(jī)制而言,其應(yīng)用范圍和實(shí)用性都很有限。
[0006]為了滿足高性能、低功耗的設(shè)計(jì)需求,利用具有高度并行計(jì)算能力的FPGA芯片,來(lái)實(shí)現(xiàn)LUKS認(rèn)證機(jī)制電路并應(yīng)用在其密碼恢復(fù)上,具有非常廣闊的應(yīng)用市場(chǎng)。然而目前還沒(méi)有基于這種方案來(lái)實(shí)現(xiàn)LUKS認(rèn)證機(jī)制的芯片電路及其密碼恢復(fù)方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于提供一種可解決目前缺乏LUKS認(rèn)證機(jī)制專用電路,認(rèn)證運(yùn)算速度和能耗比低等問(wèn)題,可實(shí)現(xiàn)快速、低功耗的LUKS密碼認(rèn)證和密碼恢復(fù)功能的基于FPGA的 LUKS認(rèn)證芯片電路。
[0008]本發(fā)明的另一目的在于提供一種基于FPGA的LUKS認(rèn)證芯片電路的密碼恢復(fù)方法。
[0009]所述基于FPGA的LUKS認(rèn)證芯片電路設(shè)有控制模塊、密碼生成模塊、第一用戶密鑰 PBKDF2模塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊、用戶密鑰選擇模塊、 AES128密鑰擴(kuò)展模塊、AES128解密模塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值 PBKDF2模塊和比較模塊;[〇〇1〇] 通過(guò)FPGA內(nèi)部AXI總線連接FPGA處理器與LUKS認(rèn)證芯片電路,利用運(yùn)行在FPGA處理器上的FPGA處理器,輸入認(rèn)證數(shù)據(jù)、啟動(dòng)LUKS認(rèn)證芯片電路并實(shí)現(xiàn)密碼恢復(fù)方法;
[0011]所述控制模塊分別與密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰 TOKDF2模塊、第三用戶密鑰TOKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128 解密模塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊連接,控制模塊通過(guò)輸入的狀態(tài)信號(hào)對(duì)密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰 TOKDF2模塊、第三用戶密鑰TOKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128 解密模塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊進(jìn)行監(jiān)測(cè), 并生成對(duì)應(yīng)輸出控制信號(hào)對(duì)密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰 TOKDF2模塊、第三用戶密鑰TOKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128 解密模塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊的工作時(shí)序進(jìn)行控制,實(shí)現(xiàn)LUKS認(rèn)證功能;密碼生成模塊的輸出端分別與第一用戶密鑰PBKDF2模塊、第二用戶密鑰TOKDF2模塊、第三用戶密鑰TOKDF2模塊的輸入端連接,為第一用戶密鑰TOKDF2 模塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊分別提供用戶密碼;第一用戶密鑰PBKDF2模塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊的輸出端與用戶密鑰選擇模塊的輸入端連接,用于輸出用戶密鑰;用戶密鑰選擇模塊的輸出端與AES128密鑰擴(kuò)展模塊的輸入端連接,根據(jù)控制模塊的輸出控制信號(hào)選擇輸出對(duì)應(yīng)的用戶密鑰;AES 128密鑰擴(kuò)展模塊的輸出端與AES 128解密模塊的輸入端連接,用于輸出AES 128解密所需密鑰; AES128解密模塊的輸入端與BRAM存儲(chǔ)模塊的輸出端連接,用于讀取BRAM存儲(chǔ)模塊的加密數(shù)據(jù)進(jìn)行解密,AES128解密模塊的輸出端與反取證合并模塊的輸入端連接,為反取證合并模塊輸出待合并的數(shù)據(jù);反取證合并模塊的輸出端與哈希校驗(yàn)值PBKDF2模塊輸入端連接,用于輸出由用戶密碼計(jì)算得來(lái)的主密鑰;哈希校驗(yàn)值PBKDF2模塊的輸出端與比較模塊的輸入端連接,用于輸出由用戶密碼計(jì)算的密鑰的哈希校驗(yàn)值;比較模塊的輸入端與控制模塊的輸出端連接,用于讀取主密鑰的哈希校驗(yàn)值與生成的哈希校驗(yàn)值進(jìn)行比較,并將比較結(jié)果輸出給控制模塊。[〇〇12]所述LUKS認(rèn)證芯片電路中的核心模塊是控制模塊,該控制模塊用于監(jiān)測(cè)和控制其它11個(gè)模塊,完成LUKS認(rèn)證功能,同時(shí)該控制模塊與FPGA處理器進(jìn)行數(shù)據(jù)通信,獲取LUKS認(rèn)證所需初始化數(shù)據(jù)以及配置數(shù)據(jù)供其他模塊調(diào)用;密碼生成模塊,對(duì)密碼空間內(nèi)的密碼進(jìn)行遍歷,生成用戶密碼分別給第一用戶密鑰PBKDF2模塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰TOKDF2模塊;第一用戶密鑰TOKDF2模塊、第二用戶密鑰TOKDF2模塊、第三用戶密鑰 PBKDF2模塊派生出用戶密鑰;用戶密鑰選擇模塊在控制模塊的控制下對(duì)用戶密鑰選擇輸出;AES128密鑰擴(kuò)展模塊針對(duì)用戶密鑰進(jìn)行密鑰擴(kuò)展;AES128解密模塊采用AES128密鑰擴(kuò)展模塊擴(kuò)展的密鑰,對(duì)存儲(chǔ)于BRAM存儲(chǔ)模塊的加密數(shù)據(jù)進(jìn)行設(shè)定模式的解密,并將解密結(jié)果輸出給反取證合并模塊;反取證合并模塊對(duì)解密的數(shù)據(jù)進(jìn)行合并成主密鑰;哈希校驗(yàn)值 PBKDF2模塊將反取證合并模塊合并的密鑰派生出哈希校驗(yàn)值,輸出給比較模塊;比較模塊讀取存儲(chǔ)在控制模塊的主密鑰哈希校驗(yàn)值與生成的哈希校驗(yàn)值進(jìn)行比較,并將比較結(jié)果輸出給控制模塊,控制模塊根據(jù)其比較結(jié)果發(fā)出對(duì)應(yīng)控制信號(hào)。[0013 ]—種基于FPGA的LUKS認(rèn)證芯片電路的密碼恢復(fù)方法,包括以下步驟:[〇〇14]1 )FPGA處理器解析加密的LUKS鏡像文件,獲取認(rèn)證需要的數(shù)據(jù);
[0015]在步驟1)中,所述認(rèn)證需要的數(shù)據(jù)包括迭代次數(shù)、鹽值和哈希校驗(yàn)值等。
[0016]2)FPGA處理器將認(rèn)證需要的數(shù)據(jù)通過(guò)AXI總線接口寫(xiě)入LUKS認(rèn)證芯片電路中控制模塊的寄存器;[0〇17]3 )FPGA處理器通過(guò)AXI總線接口向LUKS認(rèn)證芯片電路發(fā)送啟動(dòng)信號(hào),LUKS認(rèn)證芯片電路開(kāi)始進(jìn)行密碼恢復(fù)工作;
[0018]4)FPGA處理器啟動(dòng)LUKS認(rèn)證芯片電路后通過(guò)AXI總線接口監(jiān)測(cè)LUKS認(rèn)證芯片電路控制模塊中狀態(tài)寄存器,獲取認(rèn)證是否完畢以及認(rèn)證是否成功的信息;
[0019]5 )FPGA處理器監(jiān)測(cè)到認(rèn)證完畢,若認(rèn)證成功,則向控制臺(tái)輸出認(rèn)證恢復(fù)的密碼;若認(rèn)證失敗,則輸出密碼恢復(fù)失敗信息。
[0020]所述密碼恢復(fù)方法基于LUKS認(rèn)證芯片電路設(shè)計(jì)了密碼恢復(fù)FPGA處理器。該方法從 LUKS鏡像文件的卷頭中解析出迭代次數(shù)、鹽值和哈希校驗(yàn)值,并將這些數(shù)據(jù)和設(shè)置通過(guò)AXI 總線輸入控制模塊2的相應(yīng)寄存器,之后啟動(dòng)LUKS認(rèn)證芯片電路。此外,此模塊還負(fù)責(zé)監(jiān)測(cè) LUKS認(rèn)證芯片是否認(rèn)證完畢和認(rèn)證成功,監(jiān)測(cè)到認(rèn)證完畢狀態(tài)后,若認(rèn)證成功,則向控制臺(tái)輸出恢復(fù)的密碼,否則輸出密碼恢復(fù)失敗信息。
[0021]本發(fā)明利用高性能、低功耗、高并行計(jì)算能力的FPGA處理器(軟件功能模塊),給出了一種基于FPGA的LUKS認(rèn)證芯片電路及其密碼恢復(fù)方法。它集成了處理器的軟件可編程性與FPGA的硬件可編程性,還通過(guò)優(yōu)化的架構(gòu)提供系統(tǒng)級(jí)性能提升,并獲得較低系統(tǒng)功耗。 [〇〇22]本發(fā)明實(shí)現(xiàn)了 LUKS認(rèn)證的專用芯片電路及其應(yīng)用開(kāi)發(fā),在具有開(kāi)發(fā)靈活性的同時(shí)又具備強(qiáng)大的并行處理能力,同時(shí)具有高性能、低功耗等優(yōu)點(diǎn)。【附圖說(shuō)明】[〇〇23]圖1為本發(fā)明所述基于FPGA的LUKS認(rèn)證芯片電路的結(jié)構(gòu)組成框圖?!揪唧w實(shí)施方式】[〇〇24]下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述。[〇〇25]如圖1所示,本發(fā)明的基于FPGA的LUKS認(rèn)證芯片電路及其密碼恢復(fù)方法,包括FPGA 處理器和LUKS認(rèn)證芯片電路;LUKS認(rèn)證芯片電路設(shè)有控制模塊2、密碼生成模塊3、第一用戶密鑰PBKDF2模塊4、第二用戶密鑰TOKDF2模塊5、第三用戶密鑰TOKDF2模塊6、用戶密鑰選擇模塊7、AES128密鑰擴(kuò)展模塊8、AES128解密模塊9、BRAM存儲(chǔ)模塊10、反取證合并模塊11、哈希校驗(yàn)值PBKDF2模塊12和比較模塊13; FPGA處理器1通過(guò)AXI總線接口連接LUKS認(rèn)證芯片電路中控制模塊2;LUKS認(rèn)證芯片電路中控制模塊2連接著其它11個(gè)模塊,通過(guò)輸入的狀態(tài)信號(hào)對(duì)其它11個(gè)電路模塊進(jìn)行監(jiān)測(cè),并生成對(duì)應(yīng)輸出控制信號(hào)對(duì)其它11個(gè)電路模塊的工作時(shí)序進(jìn)行控制,從而實(shí)現(xiàn)LUKS認(rèn)證功能;密碼生成模塊3的輸出與第一用戶密鑰PBKDF2模塊4、 第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6的輸入連接,為第一用戶密鑰 PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6分別提供用戶密碼;第一用戶密鑰PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6的輸出與用戶密鑰選擇模塊7的輸入連接,輸出用戶密鑰;用戶密鑰選擇模塊7的輸出與AES 128密鑰擴(kuò)展模塊8的輸入連接,根據(jù)控制模塊2的輸出控制信號(hào)選擇輸出對(duì)應(yīng)的用戶密鑰; AES128密鑰擴(kuò)展模塊8的輸出與AES128解密模塊9的輸入連接,輸出AES128解密所需密鑰; AES 128解密模塊9的輸入與BRAM存儲(chǔ)模塊10的輸出連接,讀取BRAM存儲(chǔ)模塊10的加密數(shù)據(jù)進(jìn)行解密,其輸出與反取證合并模塊11的輸入連接,為反取證合并模塊11輸出待合并的數(shù)據(jù);反取證合并模塊11的輸出與哈希校驗(yàn)值TOKDF2模塊12輸入連接,輸出由用戶密碼計(jì)算得來(lái)的主密鑰;哈希校驗(yàn)值PBKDF2模塊12的輸出與比較模塊13的輸入連接,輸出由用戶密碼計(jì)算的密鑰的哈希校驗(yàn)值;比較模塊13的輸入與控制模塊2的輸出連接,讀取主密鑰的哈希校驗(yàn)值與生成的哈希校驗(yàn)值進(jìn)行比較,并將比較結(jié)果輸出給控制模塊2。[〇〇26]在本發(fā)明實(shí)施例中,用戶密鑰PBKDF2模塊執(zhí)行一次計(jì)算所需要的時(shí)間較長(zhǎng),因此本發(fā)明使用并行的第一用戶密鑰PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5和第三用戶密鑰 PBKDF2模塊6來(lái)生成用戶密鑰,以提高整體系統(tǒng)性能。[〇〇27] FPGA處理器1主要實(shí)現(xiàn)解析LUKS加密鏡像文件獲取認(rèn)證需要的數(shù)據(jù),這些數(shù)據(jù)包括PBKDF2模塊需要的迭代次數(shù)、鹽值和比較模塊13需要的哈希校驗(yàn)值;將解析LUKS加密鏡像文件得到的數(shù)據(jù)輸入LUKS認(rèn)證芯片電路中控制模塊2的相應(yīng)寄存器;數(shù)據(jù)輸入完畢后,向 LUKS認(rèn)證芯片電路輸入啟動(dòng)信號(hào),LUKS認(rèn)證芯片電路開(kāi)始進(jìn)行密碼恢復(fù)工作;通過(guò)獲取 LUKS認(rèn)證芯片電路控制模塊2中狀態(tài)寄存器的值監(jiān)測(cè)LUKS認(rèn)證芯片電路的認(rèn)證狀態(tài);當(dāng)監(jiān)測(cè)到認(rèn)證完畢后,若認(rèn)證成功則向控制臺(tái)輸出恢復(fù)的密碼,否則輸出密碼恢復(fù)失敗信息。 [〇〇28] LUKS認(rèn)證芯片電路,控制模塊2將對(duì)應(yīng)迭代次數(shù),鹽值等數(shù)據(jù)輸入到第一用戶密鑰 PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6和哈希校驗(yàn)值PBKDF2 模塊12,將哈希校驗(yàn)值輸入到比較模塊13,且控制模塊2在接收到FPGA處理器1的啟動(dòng)信號(hào)后啟動(dòng)密碼生成模塊3做密碼生成運(yùn)算。密碼生成模塊3生成三個(gè)密碼,同時(shí)輸出給控制模塊2密碼已經(jīng)生成和密碼空間是否遍歷完成的信息,并將這個(gè)三個(gè)密碼分別輸出給第一用戶密鑰PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6。控制模塊2控制第一用戶密鑰PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、第三用戶密鑰PBKDF2模塊6接收密碼后派生出三個(gè)用戶密鑰,同時(shí)第一用戶密鑰PBKDF2模塊4、第二用戶密鑰PBKDF2模塊5、 第三用戶密鑰PBKDF2模塊6輸出給控制模塊2用戶密鑰已經(jīng)生成的信號(hào)??刂颇K2接收到用戶密鑰已經(jīng)生成的信號(hào)后,控制用戶密鑰選擇模塊7依次選擇生成的用戶密鑰輸入 AES128密鑰擴(kuò)展模塊8??刂颇K2啟動(dòng)AES128密鑰擴(kuò)展模塊8進(jìn)行密鑰擴(kuò)展,AES128密鑰擴(kuò)展模塊8擴(kuò)展出密鑰,并輸出給控制模塊2密鑰擴(kuò)展完畢的信號(hào)??刂颇K2啟動(dòng)AES128解密模塊9,并控制AES128解密模塊9用AES128密鑰擴(kuò)展模塊8擴(kuò)展出的密鑰循環(huán)解密N次(N值根據(jù)LUKS認(rèn)證機(jī)制由控制模塊2配置),每次從BRAM存儲(chǔ)模塊10獲取128密文數(shù)據(jù)進(jìn)行解密得到相應(yīng)的明文,并將明文輸入反取證合并模塊11,然后進(jìn)行下輪解密。控制模塊2控制反取證合并模塊11處理從AES128解密模塊9接收的明文數(shù)據(jù),同樣需要循環(huán)執(zhí)行N次,最終得到主密鑰,將該主密鑰輸入哈希校驗(yàn)值PBKDF2模塊12,同時(shí)輸出給控制模塊2完成N次循環(huán)得到主密鑰的信號(hào)??刂颇K2控制哈希校驗(yàn)值PBKDF2模塊12派生出哈希校驗(yàn)值,并將該值輸入比較模塊13,同時(shí)輸出給控制模塊2哈希校驗(yàn)值生成的信號(hào)。比較模塊13由控制模塊2控制將生成的哈希校驗(yàn)值與控制模塊2輸入的哈希校驗(yàn)值進(jìn)行比較,兩者匹配則認(rèn)證成功,不匹配則認(rèn)證失敗,并將認(rèn)證是否成功的信息輸出給控制模塊2。控制模塊2接收比較模塊13 的認(rèn)證結(jié)果后,若認(rèn)證成功則結(jié)束認(rèn)證,且將認(rèn)證恢復(fù)的密碼和認(rèn)證成功的信息寫(xiě)入狀態(tài)寄存器,等待FPGA處理器1讀取;若認(rèn)證失敗,控制模塊2判斷是否遍歷完整個(gè)密碼空間,若密碼遍歷完畢則將認(rèn)證失敗的信息寫(xiě)入狀態(tài)寄存器,否則控制模塊2控制LUKS認(rèn)證芯片電路進(jìn)入下一個(gè)密碼認(rèn)證操作,并將認(rèn)證未完成的信息寫(xiě)入狀態(tài)寄存器,等待FPGA處理器1讀取。[〇〇29]本發(fā)明的基于FPGA的LUKS認(rèn)證芯片電路的密碼恢復(fù)方法,包括以下步驟:[〇〇3〇] 1 )FPGA處理器解析加密的LUKS鏡像文件,獲取認(rèn)證需要的數(shù)據(jù);所述認(rèn)證需要的數(shù)據(jù)包括迭代次數(shù)、鹽值和哈希校驗(yàn)值等;
[0031] 2)FPGA處理器將認(rèn)證需要的數(shù)據(jù)通過(guò)AXI總線接口寫(xiě)入LUKS認(rèn)證芯片電路中控制模塊的寄存器;[〇〇32] 3)FPGA處理器通過(guò)AXI總線接口向LUKS認(rèn)證芯片電路發(fā)送啟動(dòng)信號(hào),LUKS認(rèn)證芯片電路開(kāi)始進(jìn)行密碼恢復(fù)工作;[〇〇33] 4)FPGA處理器啟動(dòng)LUKS認(rèn)證芯片電路后通過(guò)AXI總線接口監(jiān)測(cè)LUKS認(rèn)證芯片電路控制模塊中狀態(tài)寄存器,獲取認(rèn)證是否完畢以及認(rèn)證是否成功的信息;[〇〇34] 5)FPGA處理器監(jiān)測(cè)到認(rèn)證完畢,若認(rèn)證成功,則向控制臺(tái)輸出認(rèn)證恢復(fù)的密碼;若認(rèn)證失敗,則輸出密碼恢復(fù)失敗信息。[〇〇35] 本發(fā)明利用FPGA中的可編程邏輯電路部分實(shí)現(xiàn)LUKS認(rèn)證芯片電路,通過(guò)FPGA內(nèi)部 AXI總線連接FPGA處理器與LUKS認(rèn)證芯片電路,利用運(yùn)行在FPGA處理器上的FPGA處理器,輸入認(rèn)證數(shù)據(jù)、啟動(dòng)LUKS認(rèn)證芯片電路并實(shí)現(xiàn)密碼恢復(fù)方法。本發(fā)明實(shí)現(xiàn)LUKS認(rèn)證芯片電路在認(rèn)證速度以及功耗上具有良好的性能,并具有靈活性、實(shí)用性,可用于密碼認(rèn)證和恢復(fù)的實(shí)際應(yīng)用中。
【主權(quán)項(xiàng)】
1.基于FPGA的LUKS認(rèn)證芯片電路,其特征在于設(shè)有控制模塊、密碼生成模塊、第一用戶 密鑰TOKDF2模塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊、用戶密鑰選擇模 塊、AES128密鑰擴(kuò)展模塊、AES128解密模塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值 PBKDF2模塊和比較模塊;通過(guò)FPGA內(nèi)部AXI總線連接FPGA處理器與LUKS認(rèn)證芯片電路,利用運(yùn)行在FPGA處理器 上的FPGA處理器,輸入認(rèn)證數(shù)據(jù)、啟動(dòng)LUKS認(rèn)證芯片電路并實(shí)現(xiàn)密碼恢復(fù)方法;所述控制模塊分別與密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰PBKDF2 模塊、第三用戶密鑰PBKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128解密模 塊、BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊連接,控制模塊通 過(guò)輸入的狀態(tài)信號(hào)對(duì)密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰PBKDF2模塊、 第三用戶密鑰PBKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128解密模塊、 BRAM存儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊進(jìn)行監(jiān)測(cè),并生成對(duì)應(yīng) 輸出控制信號(hào)對(duì)密碼生成模塊、第一用戶密鑰PBKDF2模塊、第二用戶密鑰PBKDF2模塊、第三 用戶密鑰TOKDF2模塊、用戶密鑰選擇模塊、AES128密鑰擴(kuò)展模塊、AES128解密模塊、BRAM存 儲(chǔ)模塊、反取證合并模塊、哈希校驗(yàn)值PBKDF2模塊和比較模塊的工作時(shí)序進(jìn)行控制,實(shí)現(xiàn) LUKS認(rèn)證功能;密碼生成模塊的輸出端分別與第一用戶密鑰PBKDF2模塊、第二用戶密鑰 PBKDF2模塊、第三用戶密鑰PBKDF2模塊的輸入端連接,為第一用戶密鑰PBKDF2模塊、第二用 戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊分別提供用戶密碼;第一用戶密鑰PBKDF2模 塊、第二用戶密鑰PBKDF2模塊、第三用戶密鑰PBKDF2模塊的輸出端與用戶密鑰選擇模塊的 輸入端連接,用于輸出用戶密鑰;用戶密鑰選擇模塊的輸出端與AES128密鑰擴(kuò)展模塊的輸 入端連接,根據(jù)控制模塊的輸出控制信號(hào)選擇輸出對(duì)應(yīng)的用戶密鑰;AES128密鑰擴(kuò)展模塊 的輸出端與AES128解密模塊的輸入端連接,用于輸出AES128解密所需密鑰;AES128解密模 塊的輸入端與BRAM存儲(chǔ)模塊的輸出端連接,用于讀取BRAM存儲(chǔ)模塊的加密數(shù)據(jù)進(jìn)行解密, AES128解密模塊的輸出端與反取證合并模塊的輸入端連接,為反取證合并模塊輸出待合并 的數(shù)據(jù);反取證合并模塊的輸出端與哈希校驗(yàn)值PBKDF2模塊輸入端連接,用于輸出由用戶 密碼計(jì)算得來(lái)的主密鑰;哈希校驗(yàn)值TOKDF2模塊的輸出端與比較模塊的輸入端連接,用于 輸出由用戶密碼計(jì)算的密鑰的哈希校驗(yàn)值;比較模塊的輸入端與控制模塊的輸出端連接, 用于讀取主密鑰的哈希校驗(yàn)值與生成的哈希校驗(yàn)值進(jìn)行比較,并將比較結(jié)果輸出給控制模 塊。2.—種基于FPGA的LUKS認(rèn)證芯片電路的密碼恢復(fù)方法,其特征在于包括以下步驟:1 )FPGA處理器解析加密的LUKS鏡像文件,獲取認(rèn)證需要的數(shù)據(jù);2)FPGA處理器將認(rèn)證需要的數(shù)據(jù)通過(guò)AXI總線接口寫(xiě)入LUKS認(rèn)證芯片電路中控制模塊 的寄存器;3)FPGA處理器通過(guò)AXI總線接口向LUKS認(rèn)證芯片電路發(fā)送啟動(dòng)信號(hào),LUKS認(rèn)證芯片電 路開(kāi)始進(jìn)行密碼恢復(fù)工作;4 )FPGA處理器啟動(dòng)LUKS認(rèn)證芯片電路后通過(guò)AXI總線接口監(jiān)測(cè)LUKS認(rèn)證芯片電路控制 模塊中狀態(tài)寄存器,獲取認(rèn)證是否完畢以及認(rèn)證是否成功的信息;5)FPGA處理器監(jiān)測(cè)到認(rèn)證完畢,若認(rèn)證成功,則向控制臺(tái)輸出認(rèn)證恢復(fù)的密碼;若認(rèn)證 失敗,則輸出密碼恢復(fù)失敗信息。3.如權(quán)利要求2所述一種基于FPGA的LUKS認(rèn)證芯片電路的密碼恢復(fù)方法,其特征在于 在步驟1)中,所述認(rèn)證需要的數(shù)據(jù)包括迭代次數(shù)、鹽值和哈希校驗(yàn)值。
【文檔編號(hào)】H04L9/32GK106027261SQ201610329181
【公開(kāi)日】2016年10月12日
【申請(qǐng)日】2016年5月18日
【發(fā)明人】李曉潮, 曹春輝, 吳孔程, 李鵬濤, 李琳, 郭東輝
【申請(qǐng)人】廈門大學(xué)