王建新 許弘可 鄭玉崝 肖超恩 張磊 洪睿鵬
摘 要:TANGRAM系列分組密碼算法是一種采用比特切片方法,適合多種軟硬件平臺(tái)的系列分組密碼算法。針對(duì)TANGRAM-128/128算法,使用Verilog HDL對(duì)該算法進(jìn)行FPGA實(shí)現(xiàn)并提出設(shè)計(jì)方案。首先,介紹了TANGRAM密碼算法的特點(diǎn)和流程,提出了針對(duì)TANGRAM密碼算法進(jìn)行44輪加/解密迭代計(jì)算的方案,該方案采取有限狀態(tài)機(jī)的方法有效降低了資源消耗;其次,基于國產(chǎn)高云云源平臺(tái),完成了基于高云FPGA的算法工程實(shí)現(xiàn),以及功能仿真和數(shù)據(jù)的正確性驗(yàn)證,同時(shí)在Quartus Ⅱ 13.1.0平臺(tái)上也進(jìn)行了相關(guān)測(cè)試,用以比較。測(cè)試結(jié)果表明,TANGRAM系列分組密碼算法基于Altera公司的Cyclone Ⅳ E系列EP4CE40F29C6芯片進(jìn)行工程實(shí)現(xiàn),最大時(shí)鐘頻率為138.64 MHz,加/解密速率為403.30 Mbps;基于高云半導(dǎo)體GW2A-55系列芯片的最大時(shí)鐘頻率為96.537 MHz,加/解密速率為280.80 Mbps。
關(guān)鍵詞:TANGRAM;分組密碼算法;Verilog HDL;有限狀態(tài)機(jī)
中圖分類號(hào):TP309.7?? 文獻(xiàn)標(biāo)志碼:A?? 文章編號(hào):1001-3695(2024)01-041-0260-06
doi:10.19734/j.issn.1001-3695.2023.04.0190
Implementation of TANGRAM block cipher algorithm based on FPGA
Abstract:TANGRAM block cipher algorithm employs a bit-slice approach and is compatible with multiple software and hardware platforms.In response to TANGRAM-128/128 algorithm,this paper proposed a design plan which used Verilog HDL for FPGA implementation.This paper firstly provided an introduction to the characteristics and processed of TANGRAM algorithm and presented a scheme for reducing resource consumption using a finite-state machine for 44 rounds of encryption and decryption computation.Secondly,the engineering implementation of the FPGA algorithm was completed by the domestic Gaoyun platform and subjected to functional simulation and data correctness validation.Furthermore,relevant tests were performed on Quartus Ⅱ 13.1.0 platform for comparison.Test results show that,based on Cyclone IV E EP4CE40F29C6 chip from Altera,TANGRAM block cipher algorithm has a maximum clock frequency of 138.64 MHz and an encryption/decryption speed of 403.30 Mbps.While based on the GW2A-55 chip from Gaoyun,the maximum clock frequency is 96.537 MHz and the encryption/decryption speed is 280.80 Mbps.
Key words:TANGRAM;block cipher algorithm;Verilog HDL;finite-state machine
0 引言
近年來,隨著網(wǎng)絡(luò)信息技術(shù)的飛速發(fā)展,涉及信息安全的相關(guān)問題層出不窮,例如個(gè)人隱私信息泄漏,以及重要信息被監(jiān)聽或竄改等。這些問題不僅影響社會(huì)秩序,甚至嚴(yán)重威脅國家安全。為解決這些問題,密碼已被廣泛應(yīng)用。密碼算法可以分為對(duì)稱密碼算法和非對(duì)稱密碼算法兩種。分組密碼作為現(xiàn)代密碼學(xué)中的一個(gè)重要分支,具有高效和易于實(shí)現(xiàn)的特點(diǎn)。目前,代表性的分組密碼算法采用三種主要的整體結(jié)構(gòu),分別為:a)Feistel結(jié)構(gòu),如數(shù)據(jù)加密算法DES[1]、Camellia[2]、Blowfish[3]、FEAL[4]等;b)SPN結(jié)構(gòu),如高級(jí)加密標(biāo)準(zhǔn)AES[5]、輕量級(jí)分組密碼算法SKINNY[6]、韓國加密標(biāo)準(zhǔn)ARIA[7]等;c)Lai-Massey結(jié)構(gòu),如國際數(shù)據(jù)加密算法IDEA[8]。
為了推動(dòng)密碼算法的設(shè)計(jì)和實(shí)現(xiàn)技術(shù)進(jìn)步,繁榮我國密碼理論和應(yīng)用研究,促進(jìn)密碼人才成長(zhǎng),中國密碼學(xué)會(huì)于2019年舉辦了全國密碼算法設(shè)計(jì)競(jìng)賽。TANGRAM[9]采用比特切片方法設(shè)計(jì)出多個(gè)軟硬件平臺(tái)可用的系列分組密碼。TANGRAM算法結(jié)構(gòu)像七巧板一樣,能夠適用于多種不同的應(yīng)用場(chǎng)景,這是其得名的原因。在全國密碼算法設(shè)計(jì)競(jìng)賽中,該算法榮獲二等獎(jiǎng)。為了滿足高吞吐量的應(yīng)用場(chǎng)景需求,本文以TANGRAM-128/128版本為例,基于現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,F(xiàn)PGA),使用硬件描述語言Verilog HDL設(shè)計(jì)實(shí)現(xiàn)。同時(shí),提出一種設(shè)計(jì)方案,可在Quartus Ⅱ 15.0.1中完成代碼的仿真,確保代碼的正確性并計(jì)算資源占用和吞吐量等性能指標(biāo)。最終,對(duì)其性能進(jìn)行了測(cè)試和對(duì)比分析。
1 TANGRAM系列分組密碼算法原理
TANGRAM系列分組密碼算法共有三個(gè)版本,每個(gè)版本中的明文分組長(zhǎng)度為n bit,密鑰長(zhǎng)度為m bit,記為TANGRAM-n/m。具體而言,該算法的三個(gè)版本分別為TANGRAM-128/128、TANGRAM-128/256、TANGRAM-256/256。表1展示了該算法的具體參數(shù)。
在TANGRAM系列分組密碼算法中采用了固定的密碼函數(shù)。加密算法與解密算法的輪密鑰使用順序相反,解密輪密鑰即為加密輪密鑰的逆序。本文使用的部分符號(hào)如表2所示。
1.1 密鑰擴(kuò)展算法
TANGRAM系列分組密碼算法的密鑰擴(kuò)展算法按分組長(zhǎng)度與密鑰長(zhǎng)度分為TANGRAM-n/n和TANGRAM-n/2n兩種。本文所設(shè)計(jì)TANGRAM-128/128分組密碼算法44輪的輪密鑰生成結(jié)構(gòu)如圖1所示。
上一輪輪子密鑰Ki-1被導(dǎo)入密鑰擴(kuò)展模塊以生成下一輪輪子密鑰Ki。密鑰擴(kuò)展模塊的每一輪輪密鑰Ki生成結(jié)構(gòu)分為S盒、4分支廣義Feistel變換和輪常數(shù)RC[i]異或三部分。
將128 bit的輪子密鑰用一個(gè)4×32的矩形比特陣列表示:
令Rowi=ki,31…ki,1ki,0表示第i行,i=(0,1,2,3),Rowi可以看作一個(gè)32 bit的字。在第r=(0,1,…,43)輪,先提取一個(gè)由128 bit組成的輪子密鑰Kr=Row3‖Row2‖Row1‖Row0,然后對(duì)128 bit的輪子密鑰狀態(tài)進(jìn)行以下更新:
a)對(duì)輪子密鑰狀態(tài)進(jìn)行S盒操作,即
k′3,j‖k′2,j‖k′1,j‖k′0,j:=
S(k3,j‖k2,j‖k1,j‖k0,j)
j=0,1,…,31(1)
b)進(jìn)行一輪4分支廣義Feistel變換,如下所示:
c)對(duì)密鑰狀態(tài)的第一行的6個(gè)比特(k0,5 k0,4k0,3k0,2 k0,1k0,0)與每一輪的6 bit輪常數(shù)RC[i](i=0,1,…,43)進(jìn)行異或。
將以上三個(gè)步驟的復(fù)合變換記為UpadteRC[i][X],其中X為128 bit。在進(jìn)行了43輪的密鑰狀態(tài)更新后,將更新后的密鑰狀態(tài)的值賦給第44輪的輪子密鑰K44。輪常數(shù)RC[i](i=0,1,…,43)的具體數(shù)值詳見表3。
輪常數(shù)RC[i]是通過6位線性反饋寄存器生成的。使用rs5、rs4、rs3、rs2、rs1、rs0表示反饋寄存器的狀態(tài)。在每一輪更新時(shí),將狀態(tài)左移1位,并將rs0更新為rs5異或rs4的結(jié)果,初始值為RC[0]=0x01。
1.2 加/解密算法
TANGRAM系列分組密碼算法采用SP網(wǎng)絡(luò)結(jié)構(gòu),總共包含44輪輪加密,每個(gè)加密結(jié)構(gòu)算法的最后增加一個(gè)子密鑰異或操作,無須采用S盒。每一輪變換包含輪密鑰加addRoundKey(ARK)、列替換subColumn(SC)和行移位shiftRow(SR)三個(gè)步驟。該算法的三個(gè)版本均采用相同的輪函數(shù)結(jié)構(gòu)。
以TANGRAM-128/128為例,用Ri表示在輪子密鑰Ki作用下的輪函數(shù)變換的輸出數(shù)據(jù),m、c分別表示明文和密文,TANGRAM-128/128的算法結(jié)構(gòu)如圖2所示。
1.2.1 加密算法
本文主要設(shè)計(jì)實(shí)現(xiàn)TANGRAM-128/128分組密碼算法。該算法采用128 bit數(shù)據(jù)分組長(zhǎng)度和128 bit主密鑰長(zhǎng)度,需要執(zhí)行44輪(輪函數(shù))迭代運(yùn)算,加密輪函數(shù)結(jié)構(gòu)如圖3所示。
加密輪函數(shù)的前43輪(輪函數(shù))迭代運(yùn)算過程中,用4×32的矩陣比特陣列表示每輪輸入的128 bit待處理的數(shù)據(jù)為
針對(duì)每一輪128 bit的矩形比特陣列Ri-1進(jìn)行輪密鑰加(addRoundKey)、列替換(subColumn)、行移位(shiftRow),得到該輪輪函數(shù)的128 bit輸出數(shù)據(jù)Ri,i表示當(dāng)前輪次數(shù)。在最后一輪,即第44輪(輪函數(shù))迭代運(yùn)算時(shí),輸出的R43與輪密鑰K44異或后得到密文c。
a)輪密鑰加(addRoundKey)。將128 bit的輪密鑰逐比特與128 bit的密碼狀態(tài)異或,如式(6)~(9)所示。設(shè)輪密鑰為SK3‖SK2‖SK1‖SK0,輪函數(shù)輸入為I3‖I2‖I1‖I0,兩者異或得到的結(jié)果記為A3‖A2‖A1‖A0。
b)列替換(subColumn)。對(duì)每一列的4 bit進(jìn)行S盒替換,如式(10)(11)所示。
TANGRAM的S盒是一個(gè)4 bit到4 bit的雙射S:F42→F42,具體描述如表4所示(用十六進(jìn)制表示)。
c)行移位(shiftRow)。TANGRAM-128/128對(duì)每一行的32 bit做左循環(huán)的二次移位。第0行保持固定不動(dòng),第1行左循環(huán)移動(dòng)1 bit,第2行左循環(huán)移動(dòng)8 bit,第3行左循環(huán)移動(dòng)11 bit,如式(12)~(15)所示,其中<< 1.2.2 解密算法 TANGRAM系列分組密碼算法的解密過程是加密過程的逆過程。解密輪函數(shù)包括輪密鑰加(addRoundKey)、列替換的逆變換(inverseSubColumn)和行移位的逆變換(inverseShiftRow)三個(gè)步驟,具體如圖4所示。 由圖2可知,TANGRAM-128/128分組密碼算法的解密過程與加密過程類似,省略了最后一個(gè)線性置換操作。TANGRAM-128/128分組密碼算法的解密算法包括以下三個(gè)步驟: a)輪密鑰加(addRoundKey)。與加密算法中addRoundKey相同。 b)列替換的逆變換(inverseSubColumn)。對(duì)每一列的4 bit進(jìn)行S盒逆變換,過程與加密算法中列替換相同,S盒真值表如表5所示。 c)行移位的逆變換(inverseShiftRow)。對(duì)密碼狀態(tài)每一行的32 bit做右循環(huán)移位。第0行保持不動(dòng),第1行右循環(huán)移動(dòng)1位,第2行右循環(huán)移動(dòng)8位,第3行右循環(huán)移動(dòng)11位。 2 TANGRAM密碼算法硬件設(shè)計(jì) FPGA可編程邏輯陣列屬于專用集成電路(application specific integrated circuit,ASIC)領(lǐng)域中的一種半定制電路,主要由可編程輸入/輸出單元、數(shù)字時(shí)鐘管理模塊、可配置邏輯塊、嵌入式塊隨機(jī)存取存儲(chǔ)器(random access memory,RAM)等組成。FPGA具有設(shè)計(jì)靈活、使用便捷、并行計(jì)算、高兼容性等特點(diǎn)。與CPU相比,F(xiàn)PGA并行計(jì)算能力可提升運(yùn)算速率并降低時(shí)延;與GPU相比,F(xiàn)PGA在功耗和靈活性等方面具備優(yōu)勢(shì);與ASIC芯片相比,F(xiàn)PGA在項(xiàng)目初期具備短周期、高性價(jià)比的優(yōu)勢(shì)。FPGA在靈活性、性能、功耗、成本之間具有較好的平衡性,是硬件設(shè)計(jì)的理想選擇。因此,本文采取FPGA實(shí)現(xiàn)TANGRAM-128/128分組密碼算法。 根據(jù)TANGRAM系列分組密碼算法原理,本文設(shè)計(jì)了TANGRAM-128/128分組密碼算法的硬件結(jié)構(gòu)[10~12],其包括輸入接口模塊、控制單元模塊、加/解密運(yùn)算模塊、密鑰擴(kuò)展模塊以及輸出接口模塊,如圖5所示。主密鑰、明文和控制信號(hào)通過輸入接口模塊由外部輸入,由控制單元模塊選擇進(jìn)行密鑰擴(kuò)展或加/解密運(yùn)算操作,在進(jìn)行44輪加/解密運(yùn)算中使用。最終運(yùn)算結(jié)果由輸出接口模塊輸出。 利用FPGA實(shí)現(xiàn)TANGRAM系列分組密碼算法的難點(diǎn)在于:a)算法復(fù)雜度高,TANGRAM密碼算法的加密和解密過程都涉及到多次矩陣運(yùn)算和非線性變換,因此算法的復(fù)雜度比較高;b)存儲(chǔ)資源限制,TANGRAM算法需要存儲(chǔ)多個(gè)S盒、P盒和密鑰矩陣等數(shù)據(jù)結(jié)構(gòu),本文在使用FPGA實(shí)現(xiàn)該算法時(shí)考慮在有限的硬件資源下高效地實(shí)現(xiàn)TANGRAM分組密碼算法是一個(gè)難點(diǎn),本文對(duì)算法進(jìn)行了優(yōu)化,盡可能地減少硬件資源的使用,以提高硬件效率;c)時(shí)序優(yōu)化,F(xiàn)PGA的時(shí)序設(shè)計(jì)是實(shí)現(xiàn)高性能的關(guān)鍵,對(duì)于TANGRAM系列分組密碼算法,需要優(yōu)化時(shí)序設(shè)計(jì)以實(shí)現(xiàn)更高的運(yùn)算速度。本文提出了一種有限狀態(tài)機(jī)設(shè)計(jì),提高了算法的運(yùn)行效率。 2.1 有限狀態(tài)機(jī)設(shè)計(jì) 有限狀態(tài)機(jī)(finite state machine,F(xiàn)SM)是一種由寄存器和組合邏輯構(gòu)成的硬件時(shí)序電路,由一系列數(shù)量有限的狀態(tài)組成的循環(huán)機(jī)制。相較于純硬件數(shù)字系統(tǒng)順序方式控制,F(xiàn)SM克服了其不靈活的缺點(diǎn),根據(jù)控制信號(hào)預(yù)先設(shè)定的狀態(tài)順序執(zhí)行。 本文針對(duì)TANGRAM-128/128分組密碼算法采用有限狀態(tài)機(jī)[13]設(shè)計(jì)方案,在狀態(tài)轉(zhuǎn)移圖中定義了idle、getReady、getKeyD0、getEnc、getDec、getResult 6個(gè)狀態(tài)。其中idle為空閑狀態(tài),getReady為就緒狀態(tài)。getKeyD0為密鑰擴(kuò)展模塊,對(duì)輸入的種子密鑰進(jìn)行44輪迭代運(yùn)算,從而產(chǎn)生44個(gè)輪子密鑰用于加密。具體而言,系統(tǒng)首先進(jìn)入空閑狀態(tài)idle,當(dāng)reset置1時(shí)等待數(shù)據(jù)輸入;當(dāng)接收到數(shù)據(jù)輸入后,只有當(dāng)start信號(hào)置1時(shí)系統(tǒng)才會(huì)跳轉(zhuǎn)至下一個(gè)狀態(tài)。在就緒狀態(tài)getReady中,系統(tǒng)對(duì)輸入端口的數(shù)據(jù)進(jìn)行變量賦值。在所有的變量賦值完成之后,當(dāng)op=00時(shí),系統(tǒng)進(jìn)入密鑰擴(kuò)展?fàn)顟B(tài)getKeyD0,在該狀態(tài)下系統(tǒng)會(huì)對(duì)所輸入的種子密鑰進(jìn)行44輪密鑰擴(kuò)展,產(chǎn)生44個(gè)輪子密鑰。在這個(gè)狀態(tài)中,每輪變換都有賦值和計(jì)數(shù)的操作。產(chǎn)生的密鑰存入一個(gè)位寬為128 bit的寄存器數(shù)組中。當(dāng)計(jì)數(shù)標(biāo)志位over值置1時(shí)開始計(jì)數(shù),以輪數(shù)44作為狀態(tài)切換標(biāo)志,待所有的輪次加/解密完成后,切換至下一個(gè)狀態(tài)進(jìn)行輸出。當(dāng)op值不為00時(shí),進(jìn)入加密(getEnc)/解密(getDec)狀態(tài),此狀態(tài)進(jìn)行44輪的加密或解密。在每輪加/解密中,系統(tǒng)調(diào)用負(fù)責(zé)加/解密的函數(shù),并將每輪的輸出作為下一輪的輸入,同時(shí)也進(jìn)行計(jì)數(shù)操作。當(dāng)計(jì)數(shù)標(biāo)志位over置1時(shí)開始計(jì)數(shù),以輪數(shù)44作為狀態(tài)切換標(biāo)志,待所有的輪次加/解密完成后切換至下一狀態(tài)進(jìn)行輸出。在44輪加密完成后,系統(tǒng)進(jìn)行一步異或操作,將最后一個(gè)輪密鑰K44作為異或?qū)ο?,該輪密鑰由K43按照相同的密鑰擴(kuò)展方式產(chǎn)生;而在解密算法中,44輪解密完成之后也要進(jìn)行一步額外的異或操作,將初始密鑰K0作為異或?qū)ο?。狀態(tài)轉(zhuǎn)換圖如圖6所示。 根據(jù)TANGRAM系列分組密碼算法的基本原理可知,每當(dāng)進(jìn)行一輪加/解密運(yùn)算,都需要擴(kuò)展密鑰以生成下一輪所需的輪密鑰,并將其輸出至對(duì)應(yīng)輪數(shù)的加/解密運(yùn)算中,以生成下一輪的輪數(shù)據(jù)。通過不斷循環(huán)迭代該過程,最終輸出密文/明文。本文TANGRAM-128/128有限狀態(tài)機(jī)方案則優(yōu)先利用密鑰擴(kuò)展模塊生成全部的輪密鑰,將44個(gè)輪密鑰分別存儲(chǔ)在對(duì)應(yīng)的寄存器Ki中。在進(jìn)行加/解密運(yùn)算時(shí),根據(jù)當(dāng)前迭代的輪數(shù)i調(diào)用相應(yīng)寄存器Ki完成迭代運(yùn)算并輸出密文/明文。該設(shè)計(jì)方案節(jié)省了生成每輪輪密鑰所需的密鑰擴(kuò)展時(shí)間,大大提高了算法的運(yùn)行效率。 2.2 密鑰擴(kuò)展模塊設(shè)計(jì) 本文提出的TANGRAM-128/128有限狀態(tài)機(jī)密鑰擴(kuò)展模塊如圖7所示,將128 bit的初始密鑰K0輸入進(jìn)行第1輪密鑰生成操作,將第1輪產(chǎn)生的128 bit輪密鑰輸出到下一輪進(jìn)行下一輪的輪密鑰操作。每輪產(chǎn)生的新128 bit輪密鑰數(shù)據(jù)被存儲(chǔ)在寄存器Ki中,以供下一輪運(yùn)算調(diào)用。該密鑰擴(kuò)展過程共計(jì)進(jìn)行44輪循環(huán)迭代運(yùn)算。 2.3 輸入/輸出端口模塊設(shè)計(jì) 本文TANGRAM-128/128有限狀態(tài)機(jī)方案使用了389個(gè)接口。輸入輸出接口模塊的結(jié)構(gòu)[13~16]如圖8所示。 設(shè)計(jì)方案的輸入/輸出接口模塊包括一個(gè)1 bit時(shí)鐘輸入(clock)端口、三個(gè)1 bit判斷位輸入(reset、start、op)端口、一個(gè)128 bit密鑰輸入(kin)端口、一個(gè)128 bit明文/密文輸入(datain)端口、一個(gè)128 bit密/明文輸出(encout)端口以及一個(gè)1 bit判斷位輸出(over)端口,外部端口信號(hào)說明如表6所示。 3 仿真驗(yàn)證與性能分析 本文選用ModelSim 13.1.0作為TANGRAM-128/128有限狀態(tài)機(jī)設(shè)計(jì)方案的功能仿真驗(yàn)證工具,并采用Altera公司的Quartus Ⅱ 13.1.0作為開發(fā)平臺(tái),使用Cyclone Ⅳ E系列的EP4CE40F29C6芯片進(jìn)行綜合測(cè)試。 3.1 功能仿真驗(yàn)證 算法由多個(gè)模塊組成,各模塊功能的正確性對(duì)系統(tǒng)輸出結(jié)果至關(guān)重要。本文選取了兩個(gè)模塊進(jìn)行仿真驗(yàn)證,并對(duì)整個(gè)算法進(jìn)行仿真驗(yàn)證。 1)循環(huán)移位模塊 針對(duì)循環(huán)左移11位模塊進(jìn)行仿真驗(yàn)證,結(jié)果如圖9所示。 由圖可知,輸入前11位全1后21位全0數(shù)據(jù),得到結(jié)果為前11位全0,11~21位全1,22~33位全0數(shù)據(jù),由此可驗(yàn)證此模塊結(jié)果正確。 2)S盒模塊 將32 bit的測(cè)試數(shù)據(jù)輸入S盒模塊進(jìn)行驗(yàn)證,結(jié)果如圖10所示。 由圖可知,S盒置換結(jié)果與表4中的值一致,由此可以驗(yàn)證此模塊結(jié)果正確。 3.2 加/解密仿真 對(duì)于TANGRAM-128/128有限狀態(tài)機(jī)的設(shè)計(jì)方案進(jìn)行了功能仿真驗(yàn)證。在Quartus Ⅱ 15.0.1平臺(tái)選用Cyclone Ⅳ E系列的EP4CE40F29C6芯片進(jìn)行仿真,并使用了多組測(cè)試向量進(jìn)行了驗(yàn)證,其中一組測(cè)試向量在加/解密的過程中得到的結(jié)果如圖11、12所示。 由仿真結(jié)果可知,op置01表示加密狀態(tài),reset置0表示算法程序正常工作,從使能端start接收到置為1的信號(hào)開始,標(biāo)志位over開始置為1,這個(gè)過程為密鑰擴(kuò)展過程,共264 ns,時(shí)鐘約束為6 ns,故而總計(jì)44個(gè)時(shí)鐘,從標(biāo)志位over置01開始到其置10,此過程為加密過程,從264~528 ns,時(shí)鐘約束為6 ns,故總計(jì)44個(gè)時(shí)鐘,具體輸入和輸出如下所示。 明文:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 密鑰:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 密文:DF C4 4F 95 98 0B 05 94 E4 88 98 1A CB F7 70 6B 由仿真結(jié)果可知,時(shí)鐘頻率為3 ns,op置10表示解密狀態(tài),reset置0表示算法程序正常工作,從使能端start接收到置為1的信號(hào)開始,密鑰擴(kuò)展過程總共需要44個(gè)時(shí)鐘,解密過程總共需要44個(gè)時(shí)鐘,具體輸入和輸出如下所示。 密文:DF C4 4F 95 98 0B 05 94 E4 88 98 1A CB F7 70 6B 密鑰:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 明文:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3.3 算法性能分析 在Altera公司的Quartus Ⅱ 15.0.1軟件環(huán)境下,選擇使用Cyclone Ⅳ E系列EP4CE40F29C6芯片進(jìn)行綜合測(cè)試。TANGRAM-128/128有限狀態(tài)機(jī)方案的主要邏輯資源的消耗情況如表7所示。 在完成Quartus Ⅱ 13.1.0綜合編譯時(shí)序分析后,在Timing Analyer報(bào)告中得出TANGRAM-128/128有限狀態(tài)機(jī)方案的最大工作頻率為138.24 MHz,如圖13所示。 在高云云源環(huán)境下選用GW2A-55系列芯片進(jìn)行驗(yàn)證,其資源占用數(shù)和時(shí)鐘頻率的值如圖14、15所示。 根據(jù)上述數(shù)據(jù)可以推斷出,高云半導(dǎo)體的GW2A-55系列芯片性能與Cyclone ⅣE系列芯片差距不大。但是,高云開發(fā)的芯片仍以中低端FPGA為主,其性能與國外高端系列芯片相比仍有較大差距。上表還列出了Intel公司兩款Stratix系列芯片Stratix Ⅲ(EP3SE50F780C2)和Stratix Ⅴ的仿真結(jié)果和性能指標(biāo)。圖16~19分別為Stratix Ⅲ、Stratix Ⅴ兩款芯片的資源占用情況和最大時(shí)鐘頻率。 根據(jù)所得到的最大時(shí)鐘頻率,結(jié)合時(shí)鐘數(shù)以及分組長(zhǎng)度,可以計(jì)算出各自的吞吐率,具體性能指標(biāo)如表8所示。 由以上數(shù)據(jù)可得,在資源占用相近的情況下,Cyclone Ⅳ E、Stratix Ⅲ以及Stratix V這三款芯片的吞吐量分別為403.32 Mbps、660.10 Mbps、870.20 Mbps,而國產(chǎn)高云GW2A-55系列芯片的吞吐量?jī)H有280.84 Mbps。因此可以得出結(jié)論,國產(chǎn)高云GW2A-55系列芯片吞吐速度遠(yuǎn)低于其他三款芯片,而Stratix系列芯片已經(jīng)研發(fā)至Stratix Ⅹ。由此可見,國產(chǎn)FPGA在高端芯片領(lǐng)域發(fā)展仍較為滯后,尚需大力研發(fā),進(jìn)一步優(yōu)化和改進(jìn)其性能。 4 結(jié)束語 本文研究了TANGRAM系列分組密碼算法的FPGA設(shè)計(jì)與實(shí)現(xiàn)方法。對(duì)于TANGRAM-128/128版本,采用有限狀態(tài)機(jī)的設(shè)計(jì)方案,從算法層面降低了硬件邏輯資源的占用,同時(shí)提高了算法的運(yùn)行效率。實(shí)驗(yàn)結(jié)果顯示,在Altera公司的Quartus Ⅱ 15.0.1軟件環(huán)境下,采用Cyclone ⅣE系列的EP4CE40F29C6芯片進(jìn)行綜合測(cè)試,TANGRAM-128/128有限狀態(tài)機(jī)方案最大工作頻率可達(dá)138.24 MHz,吞吐率為0.38 Gbps。在高云云源環(huán)境下,選用GW2A-55系列芯片進(jìn)行驗(yàn)證,其最大工作頻率提高至96.54 MHz,吞吐率達(dá)到280.84 Mbps。 張文濤等人[9]提出了ASIC硬件實(shí)現(xiàn)TANGRAM算法的方案,該方案使用了UMC 130 nm和Nangate 45 nm兩個(gè)常見的工藝庫來評(píng)估ASIC硬件實(shí)現(xiàn)。該方案針對(duì)ECB模式準(zhǔn)備了三個(gè)版本的硬件實(shí)現(xiàn),并采用多種優(yōu)化方式實(shí)現(xiàn)TANGRAM的ECB模式。最后,針對(duì)不同應(yīng)用場(chǎng)景,該方案對(duì)硬件實(shí)現(xiàn)進(jìn)行優(yōu)化,包括低面積實(shí)現(xiàn)、高吞吐量和低延遲的相關(guān)應(yīng)用。實(shí)驗(yàn)結(jié)果表明,TANGRAM算法是一個(gè)高度靈活的、硬件實(shí)現(xiàn)友好型的分組密碼。文獻(xiàn)[9]是ASIC設(shè)計(jì),本文是基于FPGA設(shè)計(jì),無法進(jìn)行方案對(duì)比。 在對(duì)多款FPGA芯片進(jìn)行性能分析得出,國產(chǎn)高云芯片的性能仍有待提高,相較于美國芯片還存在差距,因此需要繼續(xù)努力從綜合、布局布線、制造工藝等方面提高性能。未來工作可以進(jìn)一步優(yōu)化TANGRAM-128/128有限狀態(tài)機(jī)方案,提高其最大工作頻率,嘗試降低邏輯資源的占用,最終在工作頻率與資源占用之間找出最優(yōu)方案。 參考文獻(xiàn): [1]National Institute of Standards and Technology.Data encryption stan-dard,F(xiàn)IPS 46-3[S].[S.l.]:Federal Information Processing Stan-dards Publication,1999. [2]Aoki K,Ichikawa T,Kanda M,et al.Camellia:a 128-bit block cipher suitable for multiple platforms-design and analysis[C]//Proc of the 7th Annual International Workshop on Selected Areas in Cryptography.Berlin:Springer-Verlag,2000:39-56. [3]Karthigai K P,Baskaran K.An ASIC implementation of low power and high throughput blowfish crypto algorithm[J].Microelectronics Journal,2010,41(6):347-355. [4]Shimizu A,Miyaguchi S.Fast data encipherment algorithm FEAL[C]//Proc of the 6th Annual International Conference on Theory and Application of Cryptographic Techniques.Berlin:Springer-Verlag,1987:267-278. [5]Heron S.Encryption:advanced encryption standard(AES)[J].Network Security,2009,2009(12):8-12. [6]Beierle C,Jean J,Klbl S,et al.The SKINNY family of block ciphers and its low-latency variant MANTI[M]//Robshaw M,Katz J.Advances in Cryptology.Berlin:Springer,2016:123-153. [7]Kwon D,Kim J,Park S,et al.New block cipher:ARIA[M]// Lim J I,Lee D H.Information Security and Cryptology.Berlin:Springer,2003:432-445. [8]Lai Xuejia,Massey J L.A proposal for a new block encryption stan-dard[M]//Damgard I B.Advances in Cryptology.Berlin:Springer,1991:389-404. [9]張文濤,季福磊,丁天佑,等.TANGRAM:一個(gè)基于比特切片的適合多平臺(tái)的分組密碼[J].密碼學(xué)報(bào),2019,6(6):727-747.(Zhang Wentao,Ji Fulei,Ding Tianyou,et al.TANGRAM:a bit-slicing-based packet cipher for multiple platform[J].Journal of Cryptology,2019,6(6):727-747.) [10]何詩洋,李暉,李鳳華.SM4算法的FPGA優(yōu)化實(shí)現(xiàn)方法[J].西安電子科技大學(xué)學(xué)報(bào),2021,48(3):155-162.(He Shiyang,Li Hui,Li Fenghua.FPGA optimization of SM4 algorithm implementation method[J].Journal of Xian University of Electronic Science and Technology,2021,48(3):155-162.) [11]劉金峒,梁科,王錦,等.SM4加密算法可裁剪式結(jié)構(gòu)設(shè)計(jì)與硬件實(shí)現(xiàn)[J].南開大學(xué)學(xué)報(bào):自然科學(xué)版,2019,52(4):41-45.(Liu Jindong,Liang Ke,Wang Jin,et al.SM4 encryption algorithm cuttable structure design and hardware implementation[J].Journal of Nankai University:Natural Science Edition,2019,52(4):41-45.) [12]王晨光,喬樹山,黑勇.分組密碼算法SM4的低復(fù)雜度實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2013,39(7):177-180.(Wang Chenguang,Qiao Shushan,Hei Yong.Low-complexity implementation of the grouped cipher algorithm SM4[J].Computer Engineering,2013,39(7):177-180.) [13]王建新,周世強(qiáng),肖超恩,等.基于FPGA的FESH分組密碼算法高速實(shí)現(xiàn)[J].信息網(wǎng)絡(luò)安全,2021,21(1):57-64.(Wang Jian-xin,Zhou Shiqiang,Xiao Chaoen,et al.High-speed implementation of FPGA-based FESH packet cipher algorithm[J].Information Network Security,2021,21(1):57-64.) [14]孟祥興,曹欣.NBC分組密碼算法的FPGA高速實(shí)現(xiàn)[J].南京工程學(xué)院學(xué)報(bào):自然科學(xué)版,2021,19(3):75-79.(Meng Xiangxing,Cao Xin.High-speed FPGA implementation of NBC packet cipher algorithm[J].Journal of Nanjing Engineering College:Natural Science Edition,2021,19(3):75-79.) [15]張利華,吳松,蔣騰飛,等.基于FPGA的SMS4算法實(shí)現(xiàn)及在線驗(yàn)證[J].華東交通大學(xué)學(xué)報(bào),2018,35(5):111-116.(Zhang Lihua,Wu Song,Jiang Tengfei,et al.FPGA-based SMS4 algorithm implementation and online verification[J].Journal of East China Jiaotong University,2018,35(5):111-116.) [16]王建新,劉芮安,肖超恩,等.ANT系列分組密碼算法的FPGA高速實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2021,47(4):132-136,144.(Wang Jianxin,Liu Ruian,Xiao Chaoen,et al.High-speed FPGA implementation of ANT series packet cipher algorithm[J].Electronic Technology Applications,2021,47(4):132-136,144.)