本發(fā)明涉及密碼電路實(shí)現(xiàn)技術(shù)領(lǐng)域,尤其涉及一種AES加解密電路仿真分析方法及裝置。
背景技術(shù):
AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))是由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院2001年制定的新一代分組對(duì)稱密碼算法,用于取代原來的DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))。AES密碼算法的數(shù)據(jù)分組長(zhǎng)度為128比特,密鑰長(zhǎng)度有128,192和256比特三種。AES規(guī)定,根據(jù)這三種不同的密鑰長(zhǎng)度,加密過程分別需要進(jìn)行10,12和14輪輪變換運(yùn)算,每一個(gè)輪變換運(yùn)算又包括字節(jié)替換,行移位,列混合和密鑰加四個(gè)子運(yùn)算,除了最后一輪。為了消除對(duì)稱性,最后一輪輪變換不包含列混合運(yùn)算,并且在第一輪輪變換運(yùn)算之前加上一次密鑰加運(yùn)算。AES解密過程為加密過程的逆過程,因此也分別需要進(jìn)行10,12和14輪輪變換運(yùn)算,且每一輪輪變換包括逆字節(jié)替換,逆行移位,逆列混合和逆密鑰加四個(gè)子運(yùn)算,除了第一輪。第一輪輪變換不包括逆列混合運(yùn)算,在最后一輪運(yùn)算結(jié)束后還需要加上一次逆密鑰加運(yùn)算。
根據(jù)不同的應(yīng)用需求,AES采用不同的實(shí)現(xiàn)架構(gòu)。AES加/解密電路實(shí)現(xiàn)架構(gòu)一般可分為兩種:循環(huán)展開結(jié)構(gòu)和全展開結(jié)構(gòu)。循環(huán)展開結(jié)構(gòu)中使用了Nk(1≤Nk≤Nr,Nr=10/12/14)個(gè)輪變換單元(包括獨(dú)立的密鑰加運(yùn)算),與全展開結(jié)構(gòu)相比,循環(huán)展開結(jié)構(gòu)需要更小的電路面積,特別是當(dāng)Nk=1時(shí)(Nk=1時(shí)又稱為全循環(huán)結(jié)構(gòu)),循環(huán)展開結(jié)構(gòu)具有最小的電路面積。但循環(huán)展開結(jié)構(gòu)需要迭代Nr/Nk次才能得到最終結(jié)果,因此數(shù)據(jù)處理速度比較低。循環(huán)展開結(jié)構(gòu)用于要求電路面積小、數(shù)據(jù)速率不高的場(chǎng)合,如無線傳感網(wǎng),RFID等。循環(huán)展開結(jié)構(gòu)還可以根據(jù)具體應(yīng)用需求對(duì)電路面積和速度的進(jìn)行折衷。全展開結(jié)構(gòu)使用了Nr+1個(gè)輪變換電路單元,電路面積大,但數(shù)據(jù)不需要反饋,數(shù)據(jù)處理速度高。全展開結(jié)構(gòu)還可以通過增加流水線級(jí)數(shù)的方式來加快數(shù)據(jù)處理速度。全展開結(jié)構(gòu)適用于高速數(shù)據(jù)實(shí)時(shí)處理場(chǎng)合,如實(shí)時(shí)視頻信號(hào)傳輸?shù)取?/p>
現(xiàn)有的技術(shù)一般加上了數(shù)據(jù)冗余處理或者糾錯(cuò)碼或者使用低輪AES加解密。數(shù)據(jù)冗余處理和糾錯(cuò)碼一般用在高速的AES電路中,缺點(diǎn)就是增加了模塊,增加了不可確定性和復(fù)雜度,對(duì)于高速加密處理的電路是比較好的,但是對(duì)于一些對(duì)速度要求沒有那么高而對(duì)功耗面積比較敏感的設(shè)計(jì)來說不太適用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種AES加解密電路仿真分析方法及裝置,解決了現(xiàn)有的技術(shù)一般加上了數(shù)據(jù)冗余處理或者糾錯(cuò)碼或者使用低輪AES加解密,數(shù)據(jù)冗余處理和糾錯(cuò)碼一般用在高速的AES電路中,增加了模塊,增加了不可確定性和復(fù)雜度,對(duì)于一些對(duì)速度要求沒有那么高而對(duì)功耗面積比較敏感的設(shè)計(jì)來說不太適用的技術(shù)問題。
本發(fā)明實(shí)施例提供的一種AES加解密電路仿真分析方法包括:
S1:通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
S2:確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;
S3:根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
S4:通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。
優(yōu)選地,
所述AES加解密算法包括:
輸入待加密數(shù)據(jù)或待解密數(shù)據(jù),將所述待加密數(shù)據(jù)或待加密數(shù)據(jù)與子密鑰進(jìn)行密鑰運(yùn)算操作;
加載加密控制信號(hào)或解密控制信號(hào);
在所述加密控制信號(hào)的控制下通過單次加密迭代步驟在加解密迭代復(fù)用模塊上進(jìn)行10次加密迭代操作,并通過單次解密迭代步驟在所述解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行10次解密迭代操作。
優(yōu)選地,
所述步驟S2具體包括:
確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊分別為頂層電路結(jié)構(gòu)模塊、查找表模塊、密鑰擴(kuò)展模塊、輪常量發(fā)生器模塊的劃分。
優(yōu)選地,
所述單次加密迭代步驟為:
a1:對(duì)輸入的數(shù)據(jù)進(jìn)行S盒置換操作;
a2:對(duì)經(jīng)S盒置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)操作;
a3:將經(jīng)數(shù)據(jù)行移位變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列變換操作;
a4:在加密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次加密迭代的子密鑰獲得本次加密迭代的子密鑰;
a5:將經(jīng)混列變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
所述單次解密迭代步驟為:
b1:對(duì)輸入的數(shù)據(jù)進(jìn)行S盒逆置換操作;
b2:對(duì)經(jīng)S盒逆置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)的逆操作;
b3:在解密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次解密迭代的子密鑰獲得本次解密迭代的子密鑰;
b4:將經(jīng)數(shù)據(jù)行逆移位變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
b5:將經(jīng)密鑰運(yùn)算變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列逆變換操作。
優(yōu)選地,
所述步驟S4具體包括:
DC綜合軟件接收邏輯庫(kù)對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行約束,并與RTL代碼進(jìn)行邏輯綜合生成網(wǎng)表,通過DC綜合軟件對(duì)所述網(wǎng)表進(jìn)行時(shí)序和功耗分析。
本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析裝置,包括:
驗(yàn)證單元,用于通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
劃分單元,用于確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;
仿真單元,用于根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
分析單元,用于通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。
優(yōu)選地,
所述驗(yàn)證單元具體包括:
驗(yàn)證子單元,具體用于通過JAVA對(duì)確定AES加解密算法子單元進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
AES加解密算法子單元具體包括:
輸入模塊,具體用于輸入待加密數(shù)據(jù)或待解密數(shù)據(jù);
密鑰運(yùn)算模塊,具體用于將所述待加密數(shù)據(jù)或待加密數(shù)據(jù)與子密鑰進(jìn)行密鑰運(yùn)算操作;
加載模塊,具體用于加載加密控制信號(hào)或解密控制信號(hào);
加密迭代模塊,具體用于在所述加密控制信號(hào)的控制下通過單次加密迭代步驟在加解密迭代復(fù)用模塊上進(jìn)行10次加密迭代操作;
解密迭代模塊,具體用于通過單次解密迭代步驟在所述解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行10次解密迭代操作。
優(yōu)選地,
所述劃分單元具體包括:
劃分子單元,具體用于確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊分別為頂層電路結(jié)構(gòu)模塊、查找表模塊、密鑰擴(kuò)展模塊、輪常量發(fā)生器模塊的劃分。
優(yōu)選地,
所述加密迭代模塊具體包括:
加密S盒置換單元,具體用于對(duì)輸入的數(shù)據(jù)進(jìn)行S盒置換操作;
加密數(shù)據(jù)行移位單元,具體用于對(duì)加密S盒置換單元經(jīng)S盒置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)操作;
加密列混合單元,具體用于將經(jīng)加密數(shù)據(jù)行移位單元變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列變換操作;
加密子密鑰獲得單元,具體用于在加密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次加密迭代的子密鑰獲得本次加密迭代的子密鑰;
加密密鑰運(yùn)算單元,具體用于將加密列混合單元經(jīng)混列變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
所述解密迭代模塊具體包括:
解密S盒置換單元,具體用于對(duì)輸入的數(shù)據(jù)進(jìn)行S盒逆置換操作;
解密數(shù)據(jù)行移位單元,具體用于對(duì)經(jīng)解密S盒置換單元逆置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)的逆操作;
解密子密鑰獲得單元,具體用于在解密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次解密迭代的子密鑰獲得本次解密迭代的子密鑰;
解密密鑰運(yùn)算單元,具體用于將解密數(shù)據(jù)行移位單元經(jīng)數(shù)據(jù)行逆移位變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
解密列混合單元,具體用于將解密密鑰運(yùn)算單元經(jīng)密鑰運(yùn)算變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列逆變換操作。
優(yōu)選地,
所述分析單元具體包括:
生成子單元,具體用于DC綜合軟件接收邏輯庫(kù)對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行約束,并與RTL代碼進(jìn)行邏輯綜合生成網(wǎng)表;
分析子單元,具體用于通過DC綜合軟件對(duì)所述網(wǎng)表進(jìn)行時(shí)序和功耗分析。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析方法及裝置,其中一種AES加解密電路仿真分析方法包括:S1:通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;S2:確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;S3:根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;S4:通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。本實(shí)施例中,通過邏輯綜合來優(yōu)化電路,實(shí)現(xiàn)了電路的低功耗,解決了現(xiàn)有的技術(shù)一般加上了數(shù)據(jù)冗余處理或者糾錯(cuò)碼或者使用低輪AES加解密,數(shù)據(jù)冗余處理和糾錯(cuò)碼一般用在高速的AES電路中,增加了模塊,增加了不可確定性和復(fù)雜度,對(duì)于一些對(duì)速度要求沒有那么高而對(duì)功耗面積比較敏感的設(shè)計(jì)來說不太適用的技術(shù)問題。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析方法的一個(gè)實(shí)施例的流程示意圖;
圖2本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析方法的另一個(gè)實(shí)施例的流程示意圖;
圖3本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析裝置的一個(gè)實(shí)施例的流程示意圖;
圖4本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析裝置的另一個(gè)實(shí)施例的流程示意圖;
圖5本發(fā)明實(shí)施例中提供的一種AES加密過程對(duì)state的處理流程示意圖;
圖6本發(fā)明實(shí)施例中提供的一種AES加密過程對(duì)Round key的處理流程圖;
圖7本發(fā)明實(shí)施例中提供的一種Verilog代碼頂層圖;
圖8本發(fā)明實(shí)施例中提供的一種字節(jié)替代流程示意圖;
圖9本發(fā)明實(shí)施例中提供的一種行移位流程示意圖;
圖10本發(fā)明實(shí)施例中提供的一種列混合流程示意圖;
圖11本發(fā)明實(shí)施例中提供的一種AES加解密電路在VCS中加入了測(cè)試腳本之后產(chǎn)生的電路圖;
圖12本發(fā)明實(shí)施例中提供的一種AES加解密電路在VCS中產(chǎn)生的波形圖;
圖13本發(fā)明實(shí)施例中提供的一種AES加密模塊電路結(jié)構(gòu)示意圖;
圖14本發(fā)明實(shí)施例中提供的一種AES解密模塊電路結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種AES加解密電路仿真分析方法及裝置,用于解決現(xiàn)有的技術(shù)一般加上了數(shù)據(jù)冗余處理或者糾錯(cuò)碼或者使用低輪AES加解密,數(shù)據(jù)冗余處理和糾錯(cuò)碼一般用在高速的AES電路中,增加了模塊,增加了不可確定性和復(fù)雜度,對(duì)于一些對(duì)速度要求沒有那么高而對(duì)功耗面積比較敏感的設(shè)計(jì)來說不太適用的技術(shù)問題。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析方法的一個(gè)實(shí)施例包括:
101、通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
102、確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;
103、根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
104、通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。
上面是對(duì)一種AES加解密電路仿真分析方法進(jìn)行詳細(xì)的描述,下面將對(duì)一種AES加解密電路仿真分析方法的具體過程進(jìn)行更詳細(xì)的描述,請(qǐng)參閱圖2,本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析方法的另一個(gè)實(shí)施例包括:
201、通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
所述AES加解密算法包括:
輸入待加密數(shù)據(jù)或待解密數(shù)據(jù),將所述待加密數(shù)據(jù)或待加密數(shù)據(jù)與子密鑰進(jìn)行密鑰運(yùn)算操作;
加載加密控制信號(hào)或解密控制信號(hào);
在所述加密控制信號(hào)的控制下通過單次加密迭代步驟在加解密迭代復(fù)用模塊上進(jìn)行10次加密迭代操作,并通過單次解密迭代步驟在所述解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行10次解密迭代操作。
所述單次加密迭代步驟為:
a1:對(duì)輸入的數(shù)據(jù)進(jìn)行S盒置換操作;
a2:對(duì)經(jīng)S盒置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)操作;
a3:將經(jīng)數(shù)據(jù)行移位變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列變換操作;
a4:在加密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次加密迭代的子密鑰獲得本次加密迭代的子密鑰;
a5:將經(jīng)混列變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
所述單次解密迭代步驟為:
b1:對(duì)輸入的數(shù)據(jù)進(jìn)行S盒逆置換操作;
b2:對(duì)經(jīng)S盒逆置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)的逆操作;
b3:在解密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次解密迭代的子密鑰獲得本次解密迭代的子密鑰;
b4:將經(jīng)數(shù)據(jù)行逆移位變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
b5:將經(jīng)密鑰運(yùn)算變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列逆變換操作。
本設(shè)計(jì)的根源在于國(guó)家頒發(fā)的SM4標(biāo)準(zhǔn)協(xié)議,首先對(duì)算法進(jìn)行分析,得到一個(gè)復(fù)雜的運(yùn)算流,然后對(duì)運(yùn)算流進(jìn)行分析用java編程實(shí)現(xiàn)(驗(yàn)證算法和自己的理解是否正確),接著進(jìn)行硬件設(shè)計(jì)。
AES加密過程是在一個(gè)4X4的字節(jié)矩陣上運(yùn)行,這個(gè)矩陣又稱為“體(state)”,其初值就是一個(gè)明文區(qū)塊(矩陣中一個(gè)元素大小就是區(qū)塊中的一個(gè)Byte)。加密時(shí),各輪AES加循環(huán)(除最后一輪處)均包含四個(gè)步驟:輪密鑰加(AddRoundKey),字節(jié)替代(SubBytes),行位移(ShiftRows),列混合(MixColums)。方法包括:a、初始化數(shù)據(jù),輸入的待加密數(shù)據(jù)或待解密數(shù)據(jù)進(jìn)行第一次迭代前,將其與子密鑰進(jìn)行密鑰運(yùn)算操作;b、加載加密控制信號(hào)或解密控制信號(hào);c、在加密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行加密的9次迭代操作,在解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行解密的9次迭代操作。
一、AES加密流程
AES加密的過程主要對(duì)兩個(gè)量進(jìn)行處理:state和round key,state的處理如圖5所示,Round key處理過程如圖6所示。
二、Verilog代碼頂層:
經(jīng)過代碼閱讀,把頂層圖還有cell畫進(jìn)框圖里面,Verilog代碼頂層圖如圖7所示,其中源碼框圖如表1所示:
表1
三、處理過程:
AES加密處理主要還是4個(gè)過程,分別是:字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。解密過程分別為對(duì)應(yīng)的逆操作。
1、SubBytes:
把矩陣的每個(gè)元素分成左右兩個(gè)數(shù),作為坐標(biāo)在S-BOX中查找數(shù)值后替換。如圖8所示:
2、Shiftrows:
對(duì)第n行進(jìn)行左移n個(gè)單位,如圖9所示:
3、Mixcolumns
基本的算法(還有其他的)為左乘一個(gè)特定矩陣,如圖10所示:
4、Addroundkey
直接和對(duì)應(yīng)坐標(biāo)的round key相加。
AddRoundKey:此步驟中,回合密鑰將與原矩陣合并。在每次的加密循環(huán)中,都會(huì)產(chǎn)生一把回合密鑰,這把密鑰大小會(huì)跟原矩陣一樣,以與原矩陣中每個(gè)對(duì)應(yīng)字節(jié)異或加法,在初始化的第一個(gè)回合中,State(狀態(tài)變量)每個(gè)狀態(tài)中的字節(jié)與對(duì)應(yīng)Cipher_Key(變量名)的字節(jié)做異或(⊕)運(yùn)算,生成的結(jié)果做為新的State,在后續(xù)的回合中State只與該回合中的Round Key做異或運(yùn)算。
SubBytes:此步驟中,矩陣中的各個(gè)字節(jié)通過一個(gè)固定的S-BOX按公式2進(jìn)行轉(zhuǎn)換,即以State中16進(jìn)制數(shù)為腳標(biāo)去查S_box(查找表)中值,結(jié)果替換原State中的值。
ShiftRows:此步驟是對(duì)State的每一行進(jìn)行左循環(huán)移位,移位次數(shù)與所在行n(0≤n≤3)有關(guān),第n行移位n次。
MixColums:每一個(gè)起先的四個(gè)字節(jié)通過線性變換互相結(jié)合。每一直行的四個(gè)元素分別當(dāng)作1,x,x2,x3的系數(shù),合并即為GF(28)中的一個(gè)多項(xiàng)式,接著將此多項(xiàng)式和一個(gè)固定的多項(xiàng)式c(x)=3x2+x2+x+2在modulox4+1下相乘。或者通過左乘一個(gè)矩陣實(shí)現(xiàn)。
AES的解密過程與加密過程相反。
202、確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊分別為頂層電路結(jié)構(gòu)模塊、查找表模塊、密鑰擴(kuò)展模塊、輪常量發(fā)生器模塊的劃分;
硬件設(shè)計(jì)過程中首先是對(duì)電路模塊進(jìn)行劃分,得到一個(gè)分好模塊的頂層電路圖。
請(qǐng)參閱圖13,本發(fā)明實(shí)施例提供的一種AES加密電路模塊結(jié)構(gòu)示意圖,AES加密電路一共由4個(gè)模塊組成,分別是aes_cipher_top,aes_sbox,aes_key_expand_128,aes_rcon。
aes_cipher_top是頂層電路結(jié)構(gòu),字節(jié)替代模塊、行位移模塊、列混合模塊、輪密鑰加模塊。
aes_sbox模塊是一個(gè)查找表,在字節(jié)替代步奏中用密碼流的腳標(biāo)作為輸入,輸出結(jié)果將替代原密碼流的值,實(shí)現(xiàn)字節(jié)替代。
aes_key_expand_128模塊是密鑰擴(kuò)展模塊,在每一次循環(huán)中產(chǎn)生新的密鑰對(duì)每一次輪循環(huán)的密碼流進(jìn)行加密。
aes_rcon模塊是輪常量發(fā)生器,在密鑰擴(kuò)展模塊中使用。
電路運(yùn)行時(shí),只需要在key[127:0]和text_in[127:0]中輸入128位的密鑰和明文,并給ld一個(gè)下降沿,當(dāng)done置一后就可以讀取text_out[127:0]的密文。
請(qǐng)參閱圖14,本發(fā)明實(shí)施例提供的一種AES解密電路模塊結(jié)構(gòu)示意圖,AES解密電路一共由4個(gè)模塊組成,分別是aes_decipher_top,aes_inv_sbox,aes_key_expand_128,aes_rcon。
aes_decipher_top是頂層電路結(jié)構(gòu),字節(jié)替代、行位移、列混合、輪密鑰加步奏在這里進(jìn)行,步奏與aes_cipher_top剛好相反。
aes_inv_sbox模塊是一個(gè)查找表,在字節(jié)替代步奏中用密碼流的腳標(biāo)作為輸入,輸出結(jié)果將替代原密碼流的值,實(shí)現(xiàn)字節(jié)替代。
aes_key_expand_128模塊是密鑰擴(kuò)展模塊,在每一次循環(huán)中產(chǎn)生新的密鑰對(duì)每一次輪循環(huán)的密碼流進(jìn)行加密。
aes_rcon模塊是輪常量發(fā)生器,在密鑰擴(kuò)展模塊中使用。
電路運(yùn)行時(shí),只需要在key[127:0]和text_in[127:0]中輸入128位的密鑰和密文,并給ld一個(gè)下降沿,當(dāng)done置一后就可以讀取text_out[127:0]的明文。
203、根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
硬件設(shè)計(jì)過程中首先是對(duì)電路模塊進(jìn)行劃分,得到一個(gè)分好模塊的頂層電路圖,然后對(duì)每一個(gè)模塊進(jìn)行設(shè)計(jì)和驗(yàn)證(用VCS軟件),當(dāng)全部模塊驗(yàn)證通過之后就將它們接入頂層的電路(頂層電路只有模塊之間的連線信息),對(duì)整體進(jìn)行仿真驗(yàn)證,當(dāng)驗(yàn)證通過(波形圖顯示的輸入輸出和我們需要的一致)時(shí),把RTL代碼載入DC軟件。
根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作,圖11是在VCS中加入了測(cè)試腳本之后產(chǎn)生的電路圖:圖12是在VCS中產(chǎn)生的波形圖,通過對(duì)電路的輸入添加激勵(lì)源,產(chǎn)生輸出。
其中AES加解密電路是由RTL級(jí)代碼進(jìn)行描述,編譯器結(jié)合著工藝庫(kù)生成的,與平時(shí)的板級(jí)的電路有些差別,板級(jí)的是實(shí)體電路,本發(fā)明生成的是網(wǎng)表,和實(shí)際電路有些差別,電路結(jié)構(gòu)是由代碼、約束文件和編譯器還有工藝庫(kù)共同生成的,電路結(jié)構(gòu)在RTL代碼中體現(xiàn),通過編譯器把結(jié)構(gòu)優(yōu)化成低功耗的電路,RTL代碼可以把對(duì)電路的描述直接轉(zhuǎn)換成能用的電路,電路實(shí)體結(jié)構(gòu)是由RTL代碼生成的,RTL代碼是硬件語(yǔ)言,和軟件語(yǔ)言有本質(zhì)差別。
204、DC綜合軟件接收邏輯庫(kù)對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行約束,并與RTL代碼進(jìn)行邏輯綜合生成網(wǎng)表,通過DC綜合軟件對(duì)所述網(wǎng)表進(jìn)行時(shí)序和功耗分析。
DC中可以增加約束、對(duì)功耗、時(shí)序、面積進(jìn)行約束,DC綜合軟件接收邏輯庫(kù)對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行約束,并與RTL代碼進(jìn)行邏輯綜合生成網(wǎng)表,通過DC綜合軟件對(duì)所述網(wǎng)表進(jìn)行時(shí)序和功耗分析,在DC軟件中,我們加入tsmc 130nm的邏輯庫(kù)、和對(duì)最終電路的約束,與RTL級(jí)代碼進(jìn)行邏輯綜合(結(jié)果是一個(gè)網(wǎng)表),當(dāng)網(wǎng)表生成的時(shí)候進(jìn)行時(shí)序和功耗的報(bào)告,當(dāng)報(bào)告不滿足我們的要求時(shí),打開網(wǎng)表的界面查看原因,對(duì)RTL級(jí)代碼進(jìn)行優(yōu)化修改或更改約束條件,重復(fù)進(jìn)行直到得到一個(gè)比較理想的結(jié)果,DC環(huán)境下通過report_timing命令產(chǎn)生的總體功耗報(bào)告:
DC環(huán)境下通過report_timing命令產(chǎn)生的部分功耗報(bào)告:
請(qǐng)參閱圖3,本發(fā)明實(shí)施例提供的一種AES加解密電路仿真分析裝置的一個(gè)實(shí)施例包括:
驗(yàn)證單元301,用于通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
劃分單元302,用于確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;
仿真單元303,用于根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
分析單元304,用于通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。
上面是對(duì)一種AES加解密電路仿真分析裝置各單元進(jìn)行詳細(xì)的描述,下面將對(duì)一種AES加解密電路仿真分析裝置各附加單元進(jìn)行更詳細(xì)的描述,請(qǐng)參閱圖4,本發(fā)明實(shí)施例中提供的一種AES加解密電路仿真分析裝置的另一個(gè)實(shí)施例包括:
驗(yàn)證單元401,用于通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
所述驗(yàn)證單元401具體包括:
驗(yàn)證子單元4011,具體用于通過JAVA對(duì)確定AES加解密算法子單元4012進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;
AES加解密算法子單元4012具體包括:
輸入模塊40121,具體用于輸入待加密數(shù)據(jù)或待解密數(shù)據(jù);
密鑰運(yùn)算模塊40122,具體用于將所述待加密數(shù)據(jù)或待加密數(shù)據(jù)與子密鑰進(jìn)行密鑰運(yùn)算操作;
加載模塊40123,具體用于加載加密控制信號(hào)或解密控制信號(hào);
加密迭代模塊40124,具體用于在所述加密控制信號(hào)的控制下通過單次加密迭代步驟在加解密迭代復(fù)用模塊上進(jìn)行10次加密迭代操作;
解密迭代模塊40125,具體用于通過單次解密迭代步驟在所述解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行10次解密迭代操作。
所述加密迭代模塊40124具體包括:
加密S盒置換單元401241,具體用于對(duì)輸入的數(shù)據(jù)進(jìn)行S盒置換操作;
加密數(shù)據(jù)行移位單元401242,具體用于對(duì)加密S盒置換單元401241經(jīng)S盒置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)操作;
加密列混合單元401243,具體用于將經(jīng)加密數(shù)據(jù)行移位單元401242變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列變換操作;
加密子密鑰獲得單元401244,具體用于在加密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次加密迭代的子密鑰獲得本次加密迭代的子密鑰;
加密密鑰運(yùn)算單元401245,具體用于將加密列混合單元401243經(jīng)混列變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
所述解密迭代模塊40125具體包括:
解密S盒置換單元401251,具體用于對(duì)輸入的數(shù)據(jù)進(jìn)行S盒逆置換操作;
解密數(shù)據(jù)行移位單元401252,具體用于對(duì)經(jīng)解密S盒置換單元401251逆置換輸出的數(shù)據(jù)的每一行進(jìn)行移字節(jié)的逆操作;
解密子密鑰獲得單元401253,具體用于在解密控制信號(hào)的控制下,由密鑰存儲(chǔ)單元里存儲(chǔ)的前一次解密迭代的子密鑰獲得本次解密迭代的子密鑰;
解密密鑰運(yùn)算單元401254,具體用于將解密數(shù)據(jù)行移位單元401252經(jīng)數(shù)據(jù)行逆移位變換輸出的數(shù)據(jù)與該次輸入的子密鑰進(jìn)行密鑰運(yùn)算操作;
解密列混合單元401255,具體用于將解密密鑰運(yùn)算單元401254經(jīng)密鑰運(yùn)算變換輸出的數(shù)據(jù)通過右乘一個(gè)矩陣進(jìn)行混列逆變換操作。
劃分單元402,用于確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;
所述劃分單元402具體包括:
劃分子單元4021,具體用于確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊分別為頂層電路結(jié)構(gòu)模塊、查找表模塊、密鑰擴(kuò)展模塊、輪常量發(fā)生器模塊的劃分。
仿真單元403,用于根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;
分析單元404,用于通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析。
所述分析單元404具體包括:
生成子單元4041,具體用于DC綜合軟件接收邏輯庫(kù)對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行約束,并與RTL代碼進(jìn)行邏輯綜合生成網(wǎng)表;
分析子單元4042,具體用于通過DC綜合軟件對(duì)所述網(wǎng)表進(jìn)行時(shí)序和功耗分析。
本發(fā)明根據(jù)國(guó)家頒發(fā)的SM4標(biāo)準(zhǔn)協(xié)議,首先對(duì)算法進(jìn)行分析,得到一個(gè)復(fù)雜的運(yùn)算流,然后對(duì)運(yùn)算流進(jìn)行分析用java編程實(shí)現(xiàn)(驗(yàn)證算法和自己的理解是否正確),接著進(jìn)行硬件設(shè)計(jì),硬件設(shè)計(jì)過程中首先是對(duì)電路模塊進(jìn)行劃分,得到一個(gè)分好模塊的頂層電路圖,然后對(duì)每一個(gè)模塊進(jìn)行設(shè)計(jì)和驗(yàn)證(用VCS軟件),當(dāng)全部模塊驗(yàn)證通過之后就將它們接入頂層的電路(頂層電路只有模塊之間的連線信息),對(duì)整體進(jìn)行仿真驗(yàn)證,當(dāng)驗(yàn)證通過(波形圖顯示的輸入輸出和我們需要的一致)時(shí),把RTL代碼載入DC軟件,在DC軟件中,加入tsmc 130nm的邏輯庫(kù)、和對(duì)最終電路的約束,與RTL級(jí)代碼進(jìn)行邏輯綜合(結(jié)果是一個(gè)網(wǎng)表),當(dāng)網(wǎng)表生成的時(shí)候進(jìn)行時(shí)序和功耗的報(bào)告,當(dāng)報(bào)告不滿足我們的要求時(shí),打開網(wǎng)表的界面查看原因,對(duì)RTL級(jí)代碼進(jìn)行優(yōu)化修改或更改約束條件,重復(fù)進(jìn)行直到得到一個(gè)比較理想的結(jié)果。
本發(fā)明公開了一種128位國(guó)密算法(AES)的加密方法及低功耗小面積硬件系統(tǒng)設(shè)計(jì),相關(guān)系統(tǒng)包括:AES加密模塊,用于利用獲取到的AES高級(jí)加密標(biāo)準(zhǔn)密鑰對(duì)輸入的數(shù)據(jù)進(jìn)行AES加密,獲得AES密文數(shù)據(jù);AES解密模塊:用于對(duì)獲取到的密文通過私鑰進(jìn)行解密,獲得明文數(shù)據(jù);密鑰擴(kuò)展模塊:加密算法使用了一個(gè)由種子密鑰字節(jié)數(shù)組生成的密鑰調(diào)度表,從本質(zhì)上講,從一個(gè)原始密鑰中生成多重密鑰以代替使用單個(gè)密鑰大大增加了比特位的擴(kuò)散;替換表模塊:使用替換表對(duì)一給定的一行密鑰調(diào)度表進(jìn)行逐字節(jié)替換。本發(fā)明公開的方法及系統(tǒng),可以在具有誤碼、需要糾錯(cuò)的應(yīng)用中以較小的計(jì)算資源消耗(包括軟件計(jì)算時(shí)的CPU時(shí)間消耗,硬件計(jì)算時(shí)的面積、功耗消耗)實(shí)現(xiàn)較好的AES加密和解密性能。方法包括:a、初始化數(shù)據(jù),輸入的待加密數(shù)據(jù)或待解密數(shù)據(jù)進(jìn)行第一次迭代前,將其與子密鑰進(jìn)行密鑰運(yùn)算操作;b、加載加密控制信號(hào)或解密控制信號(hào);c、在加密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行加密的10次迭代操作,在解密控制信號(hào)的控制下在加解密迭代復(fù)用模塊上進(jìn)行解密的10次迭代操作。本實(shí)施例中,通過JAVA對(duì)確定AES加解密算法進(jìn)行是否可實(shí)現(xiàn)的仿真驗(yàn)證;確定根據(jù)JAVA驗(yàn)證后的AES加解密算法對(duì)應(yīng)的數(shù)據(jù)邏輯架構(gòu)進(jìn)行的AES加解密功能結(jié)構(gòu)模塊的劃分;根據(jù)AES加解密功能結(jié)構(gòu)模塊通過編寫的RTL代碼生成AES加解密電路,并通過VCS仿真驗(yàn)證AES加解密電路是否可實(shí)現(xiàn)的仿真操作;通過DC綜合軟件對(duì)VCS仿真驗(yàn)證后的AES加解密電路進(jìn)行時(shí)序和功耗分析,實(shí)現(xiàn)了簡(jiǎn)化AES算法設(shè)計(jì)的電路規(guī)模,減小電路設(shè)計(jì)的面積開銷,降低功耗和成本等優(yōu)點(diǎn),解決了一般便攜性設(shè)備或低功耗設(shè)備或?qū)Τ杀颈容^敏感的設(shè)計(jì)對(duì)AES加解密需求的問題,并且電路結(jié)構(gòu)具有體積小功耗低可靠性強(qiáng)的特點(diǎn),能夠滿足大部分的需要;采用了硬件復(fù)用的方法對(duì)輪循環(huán)部分進(jìn)行硬件循環(huán),避免了因循環(huán)次數(shù)增加而增加的硬件,結(jié)構(gòu)穩(wěn)定,易用性強(qiáng);采用的非常科學(xué)的設(shè)計(jì)流程,采取迭代設(shè)計(jì)的方法,在設(shè)計(jì)的每一步都有驗(yàn)證工作,保證了最終的時(shí)序功耗面積能滿足要求。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。