王 澧,張 玲,屈凌翔
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)
互聯(lián)網(wǎng)技術(shù)蓬勃發(fā)展,給人們的工作生活帶來了極大方便。但大量敏感信息通過公共網(wǎng)絡(luò)進(jìn)行傳遞和交換的同時(shí)也產(chǎn)生了越來越大的信息安全隱患。采用加密技術(shù)可以對(duì)傳輸?shù)男畔⑦M(jìn)行加密,使信息以密文的形式進(jìn)行傳輸,防止信息泄漏,加強(qiáng)了信息的安全性和完整性。加密技術(shù)可以分成軟件加密和硬件加密。軟件加密通過運(yùn)行加密軟件的形式實(shí)現(xiàn)數(shù)據(jù)加密,硬件加密則是通過專門的硬件設(shè)備來實(shí)現(xiàn)的。使用軟件加密會(huì)占用大量系統(tǒng)資源,通常速度比較慢,同時(shí)明文和密鑰必須預(yù)存在磁盤中,因此并不安全;而采用硬件加密就可以避免這些問題。特別是隨著半導(dǎo)體制造工藝進(jìn)入超深亞微米時(shí)代,采用硬件形式實(shí)現(xiàn)加密算法逐漸成為主流。本文設(shè)計(jì)的3DES模塊就是我們開發(fā)的SoC設(shè)計(jì)平臺(tái)中的一個(gè)IP核。
AMBA總線是ARM公司提出的一種開放性片上總線標(biāo)準(zhǔn),具有高速、低功耗的特點(diǎn),廣泛地應(yīng)用于系統(tǒng)芯片設(shè)計(jì)中,實(shí)際上已經(jīng)逐漸成為業(yè)界公認(rèn)的總線標(biāo)準(zhǔn)。目前使用最多的是AHB-APB架構(gòu),AHB總線負(fù)責(zé)連接CPU、DMA控制器、片上存儲(chǔ)器、高速接口或其他高帶寬組件,而APB總線則用來連接系統(tǒng)低速外設(shè)。AHB與APB之間通過總線橋相連,以減少系統(tǒng)總線的負(fù)載。
DES算法從1977年公布至今已有30多年的歷史,但目前還沒有實(shí)用的破解DES的方法,因此在信息安全領(lǐng)域仍有廣泛的應(yīng)用。DES算法是一種典型的分組加密算法,64位明文從算法的一端輸入,64位密文從另外一端輸出;加、解密過程中使用同一種算法;使用的密鑰長(zhǎng)度為56位;進(jìn)行16輪的重復(fù)迭代與置換操作,最終獲得64位的輸出。
圖1 DES算法框圖
DES算法如圖1所示,每次輸入64位明文,首先經(jīng)過一個(gè)初始置換操作,通過16輪的加密運(yùn)算,再通過初始置換的逆變換得到64位密文。在每一輪運(yùn)算中,右邊32位數(shù)據(jù)和KEY一起傳送給函數(shù)f,運(yùn)算的結(jié)果再和左邊32位數(shù)據(jù)進(jìn)行異或操作。在f函數(shù)中進(jìn)行以下運(yùn)算:將32位的輸入數(shù)據(jù)經(jīng)過擴(kuò)展置換為48位,接著和本輪循環(huán)對(duì)應(yīng)的密鑰進(jìn)行異或運(yùn)算,得到的結(jié)果再經(jīng)過S盒運(yùn)算產(chǎn)生32位輸出,最后通過P盒置換產(chǎn)生最后的輸出。其中S盒運(yùn)算是整個(gè)DES算法中唯一的非線性部分,是實(shí)現(xiàn)混亂和擴(kuò)散的關(guān)鍵步驟。
DES算法由于密鑰長(zhǎng)度太短,不能抵抗窮舉搜索攻擊。人們認(rèn)識(shí)到隨著計(jì)算能力的增強(qiáng),必須相應(yīng)地增加密鑰長(zhǎng)度。3DES即三重DES算法,是DES算法的一個(gè)更加安全的變形。3DES算法是在普通DES模塊的基礎(chǔ)上,進(jìn)行三次循環(huán)加密。3DES算法的運(yùn)算框圖如圖2所示。
3DES采用加密-解密-加密序列對(duì)明文進(jìn)行三次加密操作產(chǎn)生密文,使用K1、K2、K33個(gè)56位的密鑰。為了更高的安全性,3個(gè)密鑰應(yīng)該互不相同,相當(dāng)于168位的密鑰,可以有效地對(duì)抗窮舉法破解。另外,由于使用DES算法的軟硬件在各個(gè)領(lǐng)域已經(jīng)獲得廣泛的使用,因而升級(jí)到3DES比更換新算法的代價(jià)更小,風(fēng)險(xiǎn)更低。3DES算法雖然作為一種過渡的數(shù)據(jù)加密標(biāo)準(zhǔn),但還是在各行業(yè)獲得了廣泛的應(yīng)用。
圖2 3DES算法框圖
3DES密碼算法需要對(duì)64位明文或密文依次進(jìn)行三次DES加密或解密,得到64位密文或明文。它可以由3個(gè)DES模塊級(jí)聯(lián),形成流水線結(jié)構(gòu);也可以采用單個(gè)DES模塊,控制DES模塊順序進(jìn)行三次加密或解密。第一種結(jié)構(gòu)占用資源較多,但3個(gè)DES模塊并行工作,速度快;第二種結(jié)構(gòu)占用較少的邏輯資源,但速度較慢。本文采用的是第二種結(jié)構(gòu),可以通過用時(shí)間換空間,大大縮小芯片面積,同時(shí)還可以保證IP核的可讀性與通用性。
3DES算法IP核的設(shè)計(jì)框圖如圖3所示??紤]到整個(gè)項(xiàng)目中數(shù)據(jù)位寬、傳輸特點(diǎn)的實(shí)際情況,定義模塊數(shù)據(jù)和地址總線為32位,利用2個(gè)32位數(shù)據(jù)寄存器完成64位數(shù)據(jù)的組合并進(jìn)行加、解密。因?yàn)閮H使用一個(gè)AHB主機(jī),接口采用AMBA3 AHB Lite協(xié)議。
圖3 IP核頂層信號(hào)圖
電路主要分為4個(gè)模塊,包括AHB總線接口模塊、寄存器模塊、狀態(tài)機(jī)控制模塊和數(shù)據(jù)處理模塊。
本文所設(shè)計(jì)的IP核在系統(tǒng)中是作為AHB總線的從機(jī)模塊。為了保證該IP核與AHB總線之間信號(hào)傳輸正確,專門設(shè)計(jì)了AHB總線接口模塊來實(shí)現(xiàn)AHB總線從機(jī)接口時(shí)序。使得AHB主機(jī)信號(hào)可以控制模塊運(yùn)行,并在模塊與AHB總線之間正確地傳輸數(shù)據(jù)。
最終CPU可以通過AHB總線接口模塊訪問控制寄存器,配置3DES模塊的加密或解密模式;完成加密或解密任務(wù)后發(fā)出中斷請(qǐng)求信號(hào);通過讀狀態(tài)寄存器獲得狀態(tài)信息。
狀態(tài)機(jī)是整個(gè)IP核設(shè)計(jì)的控制核心,負(fù)責(zé)組合邏輯的判斷,控制數(shù)據(jù)通路的傳輸。單次DES算法需要運(yùn)算16輪,因而3DES算法需要運(yùn)算48輪,每一輪的結(jié)果將會(huì)輸入到下一輪的運(yùn)算中,所以算法的運(yùn)算過程中存在著48個(gè)狀態(tài)。設(shè)置一個(gè)6位的計(jì)數(shù)器,對(duì)3DES算法下的48輪迭代進(jìn)行統(tǒng)計(jì),根據(jù)計(jì)數(shù)器的當(dāng)前數(shù)值進(jìn)行狀態(tài)的跳轉(zhuǎn),從而對(duì)運(yùn)算過程進(jìn)行控制。當(dāng)3DES算法進(jìn)入第l輪迭代時(shí),選擇Key1作為密鑰輸入,對(duì)64位輸入數(shù)據(jù)進(jìn)行初始置換,進(jìn)入DES加密流程;當(dāng)3DES算法進(jìn)入到第l6輪迭代時(shí),對(duì)64位結(jié)果進(jìn)行32位左右互換并進(jìn)行逆置換,得到64位輸出數(shù)據(jù);第l7輪迭代時(shí),選擇Key2作為密鑰輸入,將64位輸入進(jìn)行初始置換,再次進(jìn)入DES加密流程;第32輪迭代時(shí),對(duì)64位數(shù)據(jù)進(jìn)行32位左右互換并進(jìn)行逆置換,得到64位輸出數(shù)據(jù);第33輪迭代時(shí),選擇Key3作為密鑰生成模塊的輸入,對(duì)64位輸入進(jìn)行初始置換,第三次進(jìn)入DES加密流程;最后一輪迭代時(shí),將64位結(jié)果進(jìn)行32位左右交換,最后通過逆置換輸出最終結(jié)果,同時(shí)產(chǎn)生完成信號(hào)輸出到模塊外部。
圖4 狀態(tài)轉(zhuǎn)移圖
單輪運(yùn)算模塊就是執(zhí)行單次DES加/解密操作的運(yùn)算部件。如圖5所示,輸入的右32位數(shù)據(jù)經(jīng)過擴(kuò)展置換后變?yōu)?8位;并與壓縮置換生成的48位密鑰進(jìn)行異或運(yùn)算。結(jié)果分別輸入到8個(gè)S盒中。每個(gè)S盒6位輸入,4位輸出。32位S盒輸出再經(jīng)過P盒置換后輸出32位的f函數(shù)運(yùn)算結(jié)果,該結(jié)果與32位的左明文輸入進(jìn)行異或運(yùn)算就可以得到單輪DES的結(jié)果。
3DES算法的安全保密性主要體現(xiàn)在16輪的迭代運(yùn)算中,主要依靠非線性的、不可逆的S盒(Substitution Box)替換實(shí)現(xiàn)運(yùn)算過程中的混亂(Confusion)操作,所以S盒操作是3DES算法成敗的關(guān)鍵,S盒設(shè)計(jì)的優(yōu)劣將影響整個(gè)算法性能。
在硬件實(shí)現(xiàn)時(shí),S盒設(shè)計(jì)的好壞是影響算法速度的關(guān)鍵因素。設(shè)計(jì)時(shí)存在優(yōu)先考慮運(yùn)算速度還是占用資源的問題,要根據(jù)設(shè)計(jì)需求來選擇。使用Verilog硬件描述語言建立S盒的電路模型,通常有兩種方法:一種是采用Verilog中的CASE語句,用純組合邏輯來實(shí)現(xiàn);另外一種是利用ROM進(jìn)行查表的方式來實(shí)現(xiàn)。
我們?cè)趯?shí)現(xiàn)S盒時(shí)采用的是第一種方法,即采用雙層嵌套的CASE選擇語句對(duì)電路進(jìn)行描述。S盒電路共有8個(gè),每一個(gè)都有6位的輸入、4位的輸出,且這8個(gè)S盒的功能各不相同。設(shè)計(jì)時(shí),每一個(gè)S盒的輸入為input[5:0],輸出為output[3:0]。為了降低資源占用,通過雙層嵌套,使用4輸入選擇器而不是6輸入選擇器。設(shè)計(jì)時(shí)外層使用輸入數(shù)據(jù)的input[0]與input[5]作為外層case的控制變量,input[1]、input[2]、input[3]、input[4]作為內(nèi)層 case的控制變量,該設(shè)計(jì)方法可以在保證數(shù)據(jù)運(yùn)算能力的前提下大大降低占用資源,相對(duì)于6個(gè)變量的CASE語句可以減少占用資源約50%。
下面列出了S盒1的部分Verilog代碼:
其余7個(gè)S盒的設(shè)計(jì)與S盒1的設(shè)計(jì)類似。
圖5 單輪運(yùn)算示意圖
使用Synopsys公司的仿真工具VCS建立環(huán)境,對(duì)設(shè)計(jì)的IP核進(jìn)行功能驗(yàn)證。將仿真結(jié)果與按照3DES標(biāo)準(zhǔn)計(jì)算的結(jié)果相比較,從而驗(yàn)證3DES算法IP核加、解密功能操作的正確性。
圖6為3DES算法下進(jìn)行的加密操作。上電復(fù)位后,向寄存器寫入控制信號(hào),然后依次寫入密鑰K1、K2、K3,最后寫入明文。啟動(dòng)加密操作,讀出加密后的密文。
圖6 3DES算法加密操作仿真圖
輸入密鑰為:K1:64’h0123456789abcdef
K2:64’hf36e74d28b95a10c
K3:64’h4a69d13e82f07bc5
輸入明文為:64’h3f847ed295ba10a6
輸出密文為:64’h4717dfe18275df9a
圖7為3DES算法下進(jìn)行的解密操作。復(fù)位后,配置寄存器控制信號(hào),對(duì)上述之前的密文進(jìn)行解密,依次寫入解密密鑰K3、K2、K1。啟動(dòng)解密操作,然后讀出解密后的明文。
輸入密鑰為:K1:64’h0123456789abcdef
K2:64’hf36e74d28b95a10c
K3:64’h4a69d13e82f07bc5
輸入密文為:64’h4717dfe18275df9a
輸出明文為:64’h3f847ed295ba10a6
以上的仿真結(jié)果證明了3DES算法下模塊加/解密功能的正確性。根據(jù)3DES加密測(cè)試標(biāo)準(zhǔn)數(shù)據(jù)可知,以上仿真數(shù)據(jù)與測(cè)試數(shù)據(jù)完全一致,從而證明了3DES算法IP核設(shè)計(jì)的正確性。
圖7 3DES算法解密操作仿真圖
在通過功能驗(yàn)證后,使用TSMC(臺(tái)積電)的65 nm工藝庫進(jìn)行邏輯綜合,生成門級(jí)網(wǎng)表。綜合后面積為22 661 μm2。接著使用Formality工具對(duì)綜合結(jié)果進(jìn)行形式驗(yàn)證,檢查綜合后網(wǎng)表與RTL代碼的一致性。然后使用Prime Time工具對(duì)網(wǎng)表進(jìn)行時(shí)序驗(yàn)證,結(jié)果表明在500 MHz頻率下建立時(shí)間及保持時(shí)間均能滿足時(shí)序要求。通過這些驗(yàn)證之后,對(duì)網(wǎng)表進(jìn)行布局布線,生成電路版圖,并提取寄生參數(shù),生成SDF延時(shí)文件,進(jìn)行后仿真。
對(duì)比現(xiàn)有的設(shè)計(jì),該IP核在主頻、面積、功耗方面都有一定的優(yōu)勢(shì),目前已成功運(yùn)用于一款DSP內(nèi)。流片后最終芯片測(cè)試結(jié)果顯示,模塊可以穩(wěn)定工作在500 MHz,加、解密轉(zhuǎn)換速率可以達(dá)到615 Mbits/s,達(dá)到了預(yù)期的設(shè)計(jì)要求,可以實(shí)現(xiàn)對(duì)片上系統(tǒng)通信數(shù)據(jù)的實(shí)時(shí)加密解密。
[1] 戴紫彬,孫萬忠,張永福. DES算法IP核設(shè)計(jì)[J]. 半導(dǎo)體技術(shù),2003,28(5):58-59.
[2] 晏福平,盛利元,簡(jiǎn)遠(yuǎn)鳴. 基于DSP的3DES加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制,2009, 17(7):1390-1392.