基于FPGA的身份認(rèn)證智能卡設(shè)計(jì)
3 智能卡軟件結(jié)構(gòu)
身份認(rèn)證智能卡的軟件結(jié)構(gòu)主要包括頂層身份認(rèn)證系統(tǒng)應(yīng)用程序、PCI接口驅(qū)動程序和FPGA內(nèi)部加密算法模塊三部份。其結(jié)構(gòu)如圖2所示:
3.1 認(rèn)證系統(tǒng)頂層應(yīng)用程序
系統(tǒng)頂層的應(yīng)用程序主要是提供給用戶一個GUI界面接口,以便用戶直接通過GUI接口進(jìn)行身份認(rèn)證相關(guān)操作,避免用戶直接調(diào)用底層驅(qū)動函數(shù),方便用戶使用智能卡。頂層應(yīng)用程序調(diào)用相應(yīng)的智能卡驅(qū)動程序接口,發(fā)送相應(yīng)的指令并從底層硬件獲得加密后數(shù)據(jù),同時(shí)按照通信協(xié)議規(guī)定的數(shù)據(jù)格式和發(fā)送順序通過網(wǎng)絡(luò)傳送到遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。
3.2 PCI接口驅(qū)動程序
在windows操作系統(tǒng)下,執(zhí)行于用戶態(tài)的應(yīng)用程序不能直接訪問硬件,而必須通過調(diào)用執(zhí)行于核心態(tài)的設(shè)備驅(qū)動程序提供的各種服務(wù)間接地對硬件資源進(jìn)行訪問,從而確保系統(tǒng)的安全。設(shè)備驅(qū)動程序是提供給硬件設(shè)備連接到計(jì)算機(jī)系統(tǒng)的軟件接口,它使用戶應(yīng)用程序可以用一種規(guī)范的方式訪問硬件,而不必考慮如何控制硬件。WDM設(shè)備驅(qū)動程序模型就是windows環(huán)境下設(shè)備驅(qū)動程序模型。
目前常見的驅(qū)動開發(fā)軟件如NuMega公司的DriverStudio提供了封裝各種通用操作的驅(qū)動程序類庫以及大量參考代碼,方便用戶進(jìn)行WDM驅(qū)動程序的設(shè)計(jì),有效縮短了驅(qū)動程序開發(fā)周期。
3.3 FPGA加密模塊
FPGA是身份認(rèn)證智能卡的核心部件,身份認(rèn)證系統(tǒng)的數(shù)據(jù)加密、用戶身份信息碼驗(yàn)證以及數(shù)據(jù)接口控制邏輯均在FPGA中完成。FPGA內(nèi)部模塊結(jié)構(gòu)如圖3所示:
認(rèn)證方提供的128 bit隨機(jī)數(shù)N經(jīng)過State矩陣產(chǎn)生模塊分解為一個4×4的矩陣。當(dāng)數(shù)據(jù)讀寫模塊從FLASH存儲器中讀出128 bit的共享加密密鑰K和S盒變換矩陣后,密鑰擴(kuò)展模塊首先將128 bit的加密密鑰K按密鑰擴(kuò)展算法產(chǎn)生一個擴(kuò)展密鑰,再從擴(kuò)展密鑰中選擇每輪運(yùn)算的輪密鑰。在迭代控制模塊管理下,128 bit隨機(jī)數(shù)N經(jīng)過ByteSub模塊、ShiftRow模塊、MixColumn模塊、AddRoundKey模塊多輪迭代運(yùn)算,并在最后一輪運(yùn)算結(jié)束后從AddRoundKey模塊輸出加密后的密文數(shù)據(jù)。PCI 9054接口模塊主要實(shí)現(xiàn)FPGA芯片和PCI9054本地總線之間的數(shù)據(jù)交換。FLASH接口模塊將用戶讀寫操作轉(zhuǎn)換為FLASH存儲器的讀寫操作時(shí)序。數(shù)據(jù)讀寫模塊負(fù)責(zé)向FLASH接口模塊發(fā)送數(shù)據(jù)讀寫和擦除信息。命令解釋模塊和其他所有模塊相連,完成用戶命令譯碼工作。所有模塊均在Verilog HDL語言設(shè)計(jì)的有限狀態(tài)機(jī)(FSM)控制下運(yùn)行。
4 總結(jié)
基于FPGA的智能卡提供了一種新的身份認(rèn)證方式,本文作者創(chuàng)新點(diǎn)如下:
(1) 設(shè)計(jì)了一種基于FPGA的身份認(rèn)證智能卡。身份信息加密運(yùn)算均在智能卡內(nèi)部完成,除加密結(jié)果外其他所有運(yùn)算的中間狀態(tài)值均不會出現(xiàn)在計(jì)算機(jī)系統(tǒng)中,有效地提高了認(rèn)證系統(tǒng)的安全性。
(2) 利用Verilog HDL語言設(shè)計(jì)有限狀態(tài)機(jī)在FPGA中實(shí)現(xiàn)128 bit Rijndael算法。在系統(tǒng)時(shí)鐘頻率為50 MHz時(shí)測得智能卡加密速度達(dá)962.03 Mbits/s,在效率和速度上均優(yōu)于軟件加密方式,并且可以方便地?cái)U(kuò)展到192 bit或256 bit密鑰,使用靈活。
(3) 利用PCI 9054 實(shí)現(xiàn)FPGA與PCI總線之間的高速數(shù)據(jù)傳輸,降低了PCI接口設(shè)計(jì)的復(fù)雜性,保證大量并發(fā)認(rèn)證請求服務(wù)下系統(tǒng)的性能。
在基于智能卡的身份認(rèn)證系統(tǒng)中,認(rèn)證方和被認(rèn)證方均采用同樣硬件結(jié)構(gòu)的身份認(rèn)證智能卡[6],F(xiàn)LASH內(nèi)部存放相同的一組密鑰,可以根據(jù)需要靈活地選擇密鑰。在需要多方進(jìn)行身份認(rèn)證的系統(tǒng)中,可以在FLASH內(nèi)部同時(shí)存放多組密鑰,對于不同的認(rèn)證操作選擇與之對應(yīng)的加密密鑰,利用一塊智能卡完成多方身份認(rèn)證,具有廣闊的應(yīng)用前景。基于FPGA的身份認(rèn)證智能卡已在物流防偽系統(tǒng)中得到了應(yīng)用,測試結(jié)果表明,該身份認(rèn)證智能卡安全、可靠、高效。
評論