姚 霽
(西安郵電大學(xué) 自動(dòng)化學(xué)院,陜西 西安 710121)
?
基于FPGA的加密算法驗(yàn)證平臺(tái)設(shè)計(jì)
姚 霽
(西安郵電大學(xué) 自動(dòng)化學(xué)院,陜西 西安 710121)
為加快加密算法芯片的設(shè)計(jì)周期,提出了一種基于FPGA的設(shè)計(jì)驗(yàn)證平臺(tái),即將加密算法用FPGA加以實(shí)現(xiàn),并利用數(shù)碼顯示直觀觀測結(jié)果,以驗(yàn)證設(shè)計(jì)的正確性。以DES算法為例,詳細(xì)論述了該平臺(tái)的系統(tǒng)結(jié)構(gòu),控制原理以及加密算法的設(shè)計(jì)驗(yàn)證過程。實(shí)驗(yàn)結(jié)果表明,該FPGA設(shè)計(jì)驗(yàn)證平臺(tái)不僅縮短了加密算法的硬件開發(fā)開發(fā)周期,還為加密算法的開發(fā)提供了靈活性和實(shí)用性。
加密算法;FPGA;驗(yàn)證平臺(tái)
高密度、高復(fù)雜度、高安全性已成為加密芯片設(shè)計(jì)的主流趨勢,但同時(shí)也提高了設(shè)計(jì)和驗(yàn)證的復(fù)雜度。它將系統(tǒng)概念設(shè)計(jì)、建模與架構(gòu)設(shè)計(jì)、RTL設(shè)計(jì)、物理實(shí)現(xiàn)等需求集中在一起,所有流程都必須經(jīng)過嚴(yán)格縝密的仿真和驗(yàn)證。因此加密芯片設(shè)計(jì)約70%的工作量是在驗(yàn)證環(huán)節(jié)。而設(shè)計(jì)實(shí)現(xiàn)基于加密算法的FPGA驗(yàn)證平臺(tái)不僅能夠研究特定的加密芯片算法,而且利用該平臺(tái)可擴(kuò)展性好、可移植性強(qiáng)的特點(diǎn),能夠在該平臺(tái)上實(shí)現(xiàn)多種加密算法[1]。
為了提高加密算法芯片設(shè)計(jì)的驗(yàn)證速度和質(zhì)量,以FPGA為原型設(shè)計(jì)的驗(yàn)證平臺(tái)無疑是好的選擇。把加密算法用FPGA進(jìn)行實(shí)現(xiàn),在FPGA的驗(yàn)證平臺(tái)平臺(tái)中預(yù)留出加密算法的接口,即可在平臺(tái)上直觀驗(yàn)證加密算法的正確性[2]。同時(shí)在實(shí)驗(yàn)多種加密算法時(shí),只需要把各種加密算法“插入”到FPGA中,即可直觀快速的實(shí)現(xiàn)各種算法的驗(yàn)證。
1.1 驗(yàn)證平臺(tái)的設(shè)計(jì)及系統(tǒng)框圖
基于FPGA的加密算法硬件設(shè)計(jì)驗(yàn)證平臺(tái)系統(tǒng)由平臺(tái)控制電路和算法設(shè)計(jì)實(shí)現(xiàn)兩大模塊組成。加密算法設(shè)計(jì)模塊完成算法的硬件實(shí)現(xiàn),是算法設(shè)計(jì)的核心,也是該FPGA驗(yàn)證平臺(tái)可移植擴(kuò)展的部分,為嘗試不同的加密算法實(shí)現(xiàn)提供了可行性。平臺(tái)控制電路包括分頻模塊、掃描控制模塊、編碼顯示控制模塊,它是整個(gè)FPGA驗(yàn)證平臺(tái)的核心,為算法模塊提供時(shí)鐘輸入源,以及對(duì)算法的操縱和顯示控制。當(dāng)加密算法完成,并在FPGA平臺(tái)上實(shí)現(xiàn)后,可以清楚地通過電子數(shù)碼顯示來驗(yàn)證加密算法的正確性。系統(tǒng)框圖如圖1所示[3]。
時(shí)鐘控制部分采用片上OSC供入,利用FPGA的DCM專用時(shí)鐘管理資源進(jìn)行時(shí)鐘管理,輸入部分采用4×4矩陣鍵盤,鍵盤掃描采用延時(shí)確認(rèn)按鍵的方法,將鍵值存儲(chǔ)在緩存單元中,供加密算法使用。顯示部分可采用數(shù)碼管或液晶顯示器,然后在其上顯示按鍵值(即明文M)和加密的結(jié)果(即密文C),顯示依次按下的鍵值,即當(dāng)前按鍵值在最末位顯示,之前的按鍵值依次左移顯示。當(dāng)加密算法(如DES、AES、IDEA等)實(shí)現(xiàn)后,將算法實(shí)現(xiàn)結(jié)果下載到FPGA中,就能夠在密鑰給定的情況下,對(duì)連續(xù)輸入的字符不間斷的進(jìn)行加密,并將加密密文在平臺(tái)上顯示出來[4]。
圖1 加密算法FPGA驗(yàn)證平臺(tái)系統(tǒng)框圖
1.2 驗(yàn)證平臺(tái)各控制模塊的實(shí)現(xiàn)
本驗(yàn)證控制平臺(tái)電路的設(shè)計(jì)采用3個(gè)子模塊來實(shí)現(xiàn)鍵盤掃描和數(shù)碼顯示功能,分別為分頻模塊、掃描控制模塊、顯示編碼控制模塊,數(shù)字電路設(shè)計(jì)模塊結(jié)構(gòu)如圖2所示。
圖2 數(shù)字電路設(shè)計(jì)模塊框圖
1.2.1 時(shí)鐘分頻模塊
時(shí)鐘分頻模塊的功能是對(duì)輸入時(shí)鐘CLK進(jìn)行管理,為鍵盤掃描控制、數(shù)碼顯示控制以及算法實(shí)現(xiàn)模塊提供時(shí)鐘信號(hào)。該分頻模塊支持可配置模式,可根據(jù)不同的加密算法,提供不同的控制時(shí)鐘,同時(shí)也為低功耗設(shè)計(jì)提供了可能[5]。當(dāng)算法中某個(gè)模塊不工作時(shí),關(guān)閉其時(shí)鐘,既能簡化電路,減少控制信號(hào),減少門的翻轉(zhuǎn)次數(shù),降低芯片集成度,進(jìn)而達(dá)到降低功耗的目的。
1.2.2 鍵盤掃描控制模塊
鍵盤掃描模塊主要完成鍵盤去抖動(dòng)以及鍵盤掃描控制。鍵盤掃描控制是將按鍵連接成矩陣,每個(gè)按鍵位于某行、某列的交點(diǎn)上,先通過掃描方式確定按下鍵的行值和列值,即位置碼。再查表將位置碼轉(zhuǎn)換為按鍵碼值。此類鍵盤的按鍵識(shí)別方法主要是行掃描法[6]。由于執(zhí)行掃描的過程由硬件邏輯實(shí)現(xiàn),故在執(zhí)行鍵盤掃描時(shí)應(yīng)注意兩個(gè)問題:
(1)將按鍵在閉合過程中往往會(huì)有一些難以避免的機(jī)械性抖動(dòng),使輸出信號(hào)也發(fā)生抖動(dòng),通常達(dá)10~20 ms。若不避開抖動(dòng)區(qū),則可能誤認(rèn)為多次按鍵;
(2)當(dāng)前一個(gè)鍵值還未送出又有按鍵按下時(shí),后邊的鍵值將覆蓋前邊的鍵值,從而造成數(shù)據(jù)丟失。
根據(jù)以上鍵盤掃描原理及執(zhí)行鍵盤掃描時(shí)應(yīng)注意的問題,在程序設(shè)計(jì)時(shí)設(shè)置了硬件延時(shí)電路,延遲數(shù)十ms后才讀取鍵值在此設(shè)置一個(gè)控制信號(hào)OE,使前一鍵值送出后才允許產(chǎn)生后一鍵值,或者設(shè)置一組寄存器保存前面若干個(gè)鍵值,等待系統(tǒng)逐個(gè)按序處理[7]。
當(dāng)連續(xù)幾次掃描到同一個(gè)按鍵時(shí),則認(rèn)為此鍵被按下。然后OE置高電平,禁止掃描并同時(shí)開始延時(shí),此時(shí)對(duì)ROW、COLUMN輸入信號(hào)進(jìn)行檢測,以判斷哪個(gè)鍵被按下,并送出相應(yīng)的即時(shí)鍵值GOUT (BCD碼) 存入寄存器。當(dāng)CNT達(dá)到某一數(shù)值時(shí),OE重置為低電平允許重新掃描并再次延時(shí),直到檢測到其他鍵值[8]。這樣就可以達(dá)到良好的防抖效果,提高按鍵的正確識(shí)別率。
1.2.3 編碼顯示控制模塊
編碼顯示模塊對(duì)鍵值進(jìn)行編碼,控制顯示前后8次按的鍵值,當(dāng)有按鍵按下時(shí),鍵盤值串行移入寄存器,利用一個(gè)模8計(jì)數(shù)器,使當(dāng)前按鍵值在最末位顯示,之前的按鍵值依次左移顯示[9]。最終保證顯示正確鍵值,在驗(yàn)證平臺(tái)上觀測到加密算法的碼流,以此來驗(yàn)證加密算法的正確性。
2.1 DES算法實(shí)現(xiàn)
以傳統(tǒng)的DES算法為例[10],驗(yàn)證該FPGA平臺(tái)的實(shí)用性。DES算法主要有以下接口:明文datain[63:0]及密鑰keyin[63:0];密文dataout[63:0]以及有效信號(hào)dataout_en。其核心算法是以多輪的密鑰變換輪函數(shù)和密鑰加數(shù)據(jù)運(yùn)算輪函數(shù)為特征,本實(shí)驗(yàn)采用了資源優(yōu)先的硬件實(shí)現(xiàn)策略:即僅用硬件實(shí)現(xiàn)一套密鑰變換和密鑰加數(shù)據(jù)運(yùn)算輪函數(shù),通過多次調(diào)用這一硬件單元來完成一次DES加密運(yùn)算。這雖然犧牲了芯片的部分性能,但卻大幅減少了硬件資源的消耗。于是實(shí)驗(yàn)中又采用數(shù)據(jù)加密鑰輪函數(shù)和密鑰變換函數(shù)的同步流水線架構(gòu),減少相鄰流水線級(jí)間的邏輯復(fù)雜度,通過設(shè)置輪計(jì)數(shù)器對(duì)所進(jìn)行的輪運(yùn)算計(jì)數(shù),控制數(shù)據(jù)選擇器,從而實(shí)現(xiàn)輪函數(shù)復(fù)用,以補(bǔ)償部分的性能損失,其硬件結(jié)構(gòu)如圖3所示。
圖3 輪函數(shù)硬件結(jié)構(gòu)邏輯電路圖
2.2 仿真驗(yàn)證
本文算法采用Verilog HDL實(shí)現(xiàn),并編寫了測試激勵(lì),在Modelsim仿真環(huán)境中進(jìn)行了RTL級(jí)功能仿真,當(dāng)密鑰流選擇混沌加密,算法采用DES算法[12],輸入明文為636F6D7075746572時(shí),輸出的密鑰數(shù)據(jù)為7365637572697479,與理論計(jì)算值完全吻合,具體波形如圖4所示。
圖4 DES算法仿真波形
仿真完成后,又采用FPGA專用綜合工具Synplify對(duì)算法進(jìn)行綜合,最高工作頻率可達(dá)50 MHz。由于設(shè)計(jì)采用16級(jí)流水總線設(shè)計(jì),所以最高數(shù)據(jù)編解碼速率可達(dá)3 Gbit·s-1[13]。實(shí)驗(yàn)選取Xilinx公司的Virtex7FPGA芯片,采用ISE軟件完成布局布線,并提取了網(wǎng)表和延時(shí)文件,進(jìn)行了后仿真,實(shí)驗(yàn)結(jié)果完全符合時(shí)序要求[14]。最終,將本設(shè)計(jì)下載到FPGA平臺(tái),并將加密密文在平臺(tái)上用LED顯示出來,直觀地驗(yàn)證加密算法的正確性。
提出了基于FPGA的加密芯片設(shè)計(jì)驗(yàn)證平臺(tái)的快速原型的建立, 將大幅提高設(shè)計(jì)驗(yàn)證的效率和質(zhì)量,同時(shí)還可以提供用戶早期的軟件開發(fā)平臺(tái),加速復(fù)雜測試用例的仿真。FPGA的加密原型驗(yàn)證流程是,快速將待驗(yàn)證加密算法映射到實(shí)際硬件上加以驗(yàn)證,提高加密算法驗(yàn)證的效率和可信度,使加密模塊的開發(fā)可以領(lǐng)先于系統(tǒng)集成,從而縮短周期。實(shí)現(xiàn)這一思想的關(guān)鍵是在一定范圍內(nèi)建立普適的FPGA平臺(tái),使得驗(yàn)證人員容易地將一個(gè)新加密算法嵌到這個(gè)平臺(tái)。這一平臺(tái)的建立也將進(jìn)一步促進(jìn)新型加密算法的研究,促進(jìn)加密芯片在通信、軍事、網(wǎng)絡(luò)、大數(shù)據(jù)、云計(jì)算等新興領(lǐng)域的應(yīng)用[15]。
[1] 于海,樊曉椏,張盛兵.32位RISC微處理器FPGA驗(yàn)證平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2007(5):110-112.
[2] 徐慧,王金海,王巍.基于FPGA的8051IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009(4):42-45.
[3] 詹文法,陶芳澤,張溯,等.系統(tǒng)芯片驗(yàn)證平臺(tái)設(shè)計(jì)[J].微機(jī)發(fā)展,2005(11):74-76.
[4] 于治樓,姜?jiǎng)P,李峰.基于FPGA的SoC驗(yàn)證平臺(tái)的設(shè)計(jì)[J].信息技術(shù)與信息化,2008(5):96-98.
[5] 韓雪,郭文成.FPGA的功耗概念與低功耗設(shè)計(jì)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(3):9-11.
[6] 帥仁俊,張齊.基于FPGA的LED顯示控制系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,26(3):133-135.
[7] 朱副成,陳躍.LED矩陣連接控制技術(shù)[J].兵工自動(dòng)化,2012(7):85-87.
[8] 于娟,唐瑞.基于89C52單片機(jī)的LED顯示器設(shè)計(jì)[J].科技與創(chuàng)新,2016(1):8-10.
[9] 周慶芳.基于FPGA基礎(chǔ)設(shè)計(jì)掃描數(shù)碼顯示器[J].科技展望,2016(8):183-185.
[10] 戈勇,李華,寧永成.基于FPGA的DES加密算法實(shí)現(xiàn)[J].電子科技,2013,26(7):172-176.
[11] 譚會(huì)生.基于FPGA的DES加密算法的高性能實(shí)現(xiàn)[J].電子工程與設(shè)計(jì),2009(2):87-89.
[12] 蔣存波,孫朝華,杜婷婷,等.基于FPGA的DES加密芯片的設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用, 2008,44(16):83-86.
[13] 姚霽,劉建華,范九倫.一種密鑰可配置的DES加密算法的FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2009(7):145-148.
[14] 蔣昊,李哲英.基于多種EDA工具的FPGA設(shè)計(jì)流程[J].微計(jì)算機(jī)信息,2007(32):201-203.
[15] 虞致國,魏敬和.基于FPGA的ARM SoC原型驗(yàn)證平臺(tái)設(shè)計(jì)[J].電子與封裝,2007(5):25-28.
Design of Validation Platform of Encryption Algorithm Based on FPGA
YAO Ji
(School of Automation, Xi’an University of Posts and Telecommunication, Xi’an 710121, China)
A validation platform based on FPGA is put forward for shorter implementation cycle of encryption algorithm chip. The encryption algorithm is implemented in FPGA. The cipher texts can be observed with digital display circuits. The implementation example of DES Encryption algorithm is given. The system architecture, control principle of this validation platform and the implementation of DES algorithm are descripted. It is shown that the implementation cycle of encryption algorithm is shortened on this FPGA validation platform. The reliability, practicability and feasibility for encryption algorithm implementation are also guaranteed on this platform.
encryption algorithm; FPGA; verification platform
2016- 06- 02
姚霽(1977-),女,碩士,講師。研究方向:加密芯片、FPGA設(shè)計(jì)。
10.16180/j.cnki.issn1007-7820.2017.06.006
TN919.81;TP309.7
A
1007-7820(2017)06-021-03