基于AES的短分組加密技術(shù)的改進(jìn)

計算機(jī)適宜處理十六進(jìn)制數(shù),即二進(jìn)制,加密算法一般針對十六進(jìn)制數(shù)進(jìn)行設(shè)計,加密通信中密文一般由通信線路傳送,其加密技術(shù)已很成熟。但在某些應(yīng)用中,因?yàn)橥ㄐ烹p方?jīng)]有直接聯(lián)系,密文由人傳送,屬于免介質(zhì)通信,所以對密文的進(jìn)制和分組長度有很嚴(yán)格的要求,要求短分組的十進(jìn)制密文能表示最大信息量。進(jìn)制轉(zhuǎn)換很容易實(shí)現(xiàn),但通過進(jìn)制轉(zhuǎn)換得到的固定長度密文不能表示最大信息量。因此,進(jìn)制轉(zhuǎn)換得到的十進(jìn)制數(shù)密文不能表示最大信息量。為此基于AES的短分組加密技術(shù)很好地解決了此問題,本文對其進(jìn)行了研究,并提出了改進(jìn)方案。

一、短分組加密算法的4種運(yùn)算及加密/解密

基于AES的短分組加密算法以AES為基礎(chǔ),并對AES的4種加密運(yùn)算進(jìn)行重新設(shè)計,以滿足實(shí)際應(yīng)用中對短分組加密的要求。將AES中的輪密鑰加改為輪密鑰運(yùn)算控制,不同的密鑰加密運(yùn)算的輪密鑰運(yùn)算控制算法不一樣,使加密算法具有隨機(jī)性。提出了動態(tài)密鑰的概念,做到了加密解密一次一密,使加密算法具有混沌加密算法一次一密的特點(diǎn)。因此,該算法同時具有AES加密算法、隨機(jī)加密算法、混沌加密算法的優(yōu)點(diǎn)。下面分別對短分組加密算法中的4種加密運(yùn)算及加密/解密過程進(jìn)行簡要介紹。

1、S盒替換(S_box)

短分組加密算法采用的S盒是一位十進(jìn)制S盒,S盒的空間為GF(10),為了使?fàn)顟B(tài)在加/解密時得到較好的擴(kuò)散,該S盒替換使替換值與原值有2bit的變化。該S盒如圖1所示。

基于AES的短分組加密技術(shù)的改進(jìn)

2、行移位(ShiftRows)

表1中Nb為狀態(tài)state的列數(shù),ci為第i行移位的位數(shù)。狀態(tài)根據(jù)實(shí)際使用情況可分為8位、12位、16位、20位、24位、28位、32位等十進(jìn)制數(shù)。狀態(tài)中最后3行循環(huán)移位的位數(shù)如表1所示,即第0行不移位,第1行移位c1位數(shù),第2行移位c2位數(shù),第3行移位c3位數(shù)。對與小于4列和大于7列的狀態(tài)移位要進(jìn)行特殊處理。

基于AES的短分組加密技術(shù)的改進(jìn)

3、列混合(MixColumn)

AES列混合中的按位異或加對于十進(jìn)制數(shù)沒有可逆性,短分組加密算法的列混合采用線性列混合的加密方法。加密時對每一列的數(shù)據(jù)進(jìn)行列混合處理,得到的結(jié)果放回到原來的矩陣中。記加密中列混合矩陣為A,解密中逆列混合矩陣為B,A和B是互逆正整數(shù)矩陣[1],即A*B=Emod10(E為單位矩陣)。

該短分組加密算法采用的列混合矩陣見式(1)。

基于AES的短分組加密技術(shù)的改進(jìn)

該短分組加密算法采用的逆列混合矩陣見式(2)。

基于AES的短分組加密技術(shù)的改進(jìn)

4、輪密鑰運(yùn)算控制(ControlRoundKey)

由于異或運(yùn)算對于十進(jìn)制數(shù)沒有可逆性,因此該短分組加密算法將AES輪密鑰加改為輪密鑰運(yùn)算控制。輪密鑰運(yùn)算控制程序有4個入口,不同的入口對應(yīng)不同的運(yùn)算。入口由每一輪加密運(yùn)算所使用密鑰的按位的和模上4來確定[3]。每一輪加密所用的密鑰是由密鑰擴(kuò)展函數(shù)根據(jù)上一輪加密所用的密鑰擴(kuò)展得到。

5、短分組加密算法的加密/解密

用C代表ControlRoundKey,B代表S_box,S代表ShiftRows,M代表MixColumn,加密流程如下:

CBSMC…BSMCBSC

由于該短分組加密運(yùn)算中采用的每一種運(yùn)算都是可逆的,因此解密流程如下:

C1S1B1C1M1S1B1…C1M1S1B1C1

二、新S盒的設(shè)計

基于AES的短分組加密算法的S盒運(yùn)算是一個獨(dú)立作用于狀態(tài)單元的非線性變換,短分組加密算法采用的是一位十進(jìn)制S盒,其S盒空間為GF(10),由于該S盒的運(yùn)算域比AES的S盒GF(256)小得多,因此S盒的非線性和擴(kuò)散性并非很高。從安全性的角度考慮,目前對AES最為可行的攻擊方法就是設(shè)計者自己提出的Square攻擊,該短分組加密算法和AES具有類似的結(jié)構(gòu),算法的行移位、列混合和輪密鑰運(yùn)算控制的基本加密運(yùn)算域是一位十進(jìn)制數(shù),如果S盒運(yùn)算也采用一位十進(jìn)制數(shù)替換,就很容易使用改進(jìn)的Square攻擊算法對其實(shí)施攻擊,并且攻擊的復(fù)雜度大大低于AES的相應(yīng)攻擊,其安全性受到一定的威脅。

為了有效提高該加密算法的擴(kuò)散性和安全性,本文設(shè)計了一種新的、兩位十進(jìn)制數(shù)S盒,S盒的空間為(100)GF。新S盒運(yùn)算包括在有限域(100)GF中的求乘法逆運(yùn)算和在域(10)GF下的仿射變換運(yùn)算兩個步驟。其中,求逆運(yùn)算是將兩位十進(jìn)制數(shù)看作域GF(100)的元素,求其在十進(jìn)制不可化約多項(xiàng)式m(x)=x2+1下的逆,而仿射變換是求逆結(jié)果與GF(10)上矩陣M相乘然后與向量I相加。其中,M=基于AES的短分組加密技術(shù)的改進(jìn);向量I=(2,3)T。S盒運(yùn)算具體過程如下:

(1)在GF(10的2次方)域,求乘法的逆運(yùn)算,即對于α∈GF(10的2次方)求β∈GF(10的2次方),使α*β=β*α≡1mod(x2+1);

(2)在GF(10的2次方)域作仿射變換:

基于AES的短分組加密技術(shù)的改進(jìn)

通過計算得到GF(10的2次方)域上各個元素的逆元。規(guī)定0元素的逆為其自身。經(jīng)過仿射變換,得到的新S盒如表2所示。

基于AES的短分組加密技術(shù)的改進(jìn)

從表2可以看出,GF(10的2次方)域上各個元素的S盒替換值遍歷整個GF(10的2次方)空間。通過作仿射變換,很好地消除了不動點(diǎn)和對立不動點(diǎn)。

三、S盒改進(jìn)前后加密性能比較

1、S盒改進(jìn)前后加密算法安全性比較

短分組加密算法是以AES為基礎(chǔ)設(shè)計的,秉承了AES的許多特點(diǎn)。該算法每一輪的加密分為S盒替換、行移位、列混合和輪密鑰運(yùn)算控制4個步驟。加密運(yùn)算的基本域是狀態(tài)中的一位十進(jìn)制數(shù)。目前,Square攻擊是對AES最為有效的攻擊方法。經(jīng)研究發(fā)現(xiàn),對于此短分組加密算法可以使用改進(jìn)的square算法進(jìn)行攻擊。描述改進(jìn)square攻擊算法,需要定義2個概念:Λ集和平衡。

定義1:Λ集是一個包含101個狀態(tài)的集合,這些狀態(tài)在某些十進(jìn)制位(稱為活動位)上兩兩互異(遍歷位所有可能取值),而在其他位(稱為非活動位)上則完全相同。亦即對任意狀態(tài),AB∈Λ有:

基于AES的短分組加密技術(shù)的改進(jìn)

定義2: 包含110個狀態(tài)的集合P在某個位置(i,j)上是平衡的,當(dāng)且僅當(dāng)所有狀態(tài)該位置上的位模10加結(jié)果為0或5,即位(i,j))是平衡的基于AES的短分組加密技術(shù)的改進(jìn)。

顯然,Λ集的活動位是平衡的,但某個位置上的位是平衡的并不意味著該位是活動的。

改進(jìn)的Square-4攻擊要求選擇10個明文構(gòu)成一個1Λ集,記為0P。經(jīng)過初始輪輪密鑰運(yùn)算控制、第1輪的S盒替換及行移位后,0P經(jīng)運(yùn)算產(chǎn)生的中間結(jié)果仍舊構(gòu)成一個1Λ集。但由于列變換的擴(kuò)散性,列混合使活動性擴(kuò)散到此列所有位單元上,因此第1輪變換的結(jié)果是一個4Λ集,4個活動位在同一列上。第2輪行移位后,4個活動位分散到4列上,列混合的結(jié)果是一個16Λ集。

因?yàn)榛顒游坏木€性疊加結(jié)果并不意味著是活動的,所以第3輪列混合的結(jié)果可能不再是一個Λ集。

但由于S盒替換和行移位都是一一映射,并且線性的列混合和輪密鑰運(yùn)算控制都不影響平衡性。第3輪結(jié)果3P即第4輪輸入的16位狀態(tài)仍舊是平衡的。經(jīng)過第4輪S盒替換的非線性運(yùn)算,這些位的平衡性被破壞了。這種平衡性的變化可用于猜測第4輪的輪密鑰。

可見,改進(jìn)的Square攻擊完全可以攻擊簡化的4輪、5輪及6輪短分組加密算法,并且攻擊的時間復(fù)雜度和數(shù)據(jù)復(fù)雜度都遠(yuǎn)遠(yuǎn)低于AES的相應(yīng)攻擊,因此采用一位十進(jìn)制數(shù)S盒的加密算法安全性受到一定的威脅。

將新的S盒應(yīng)用于此短分組加密算法中能夠很好地提高其安全性。由于新S盒是兩位十進(jìn)制數(shù)的S盒,因此S盒運(yùn)算對狀態(tài)中的兩位十進(jìn)制數(shù)一起操作,即S盒替換的基本運(yùn)算域是兩位十進(jìn)制數(shù)。而行移位、列混合及輪密鑰運(yùn)算控制的基本運(yùn)算域是一位十進(jìn)制數(shù)。在第1輪加密后,1P狀態(tài)中的某些位的活動性和平衡性可能已經(jīng)遭到破壞,這樣就無法直接采用改進(jìn)的Square攻擊算法進(jìn)行攻擊,從而大大增加了Square攻擊的難度,提高了該短分組加密算法的抗Square攻擊能力,安全性得到增強(qiáng)。通過研究發(fā)現(xiàn),改變S盒的大小或者改變行移位的運(yùn)算域,_Square攻擊所利用的平衡性將不再存在,從而可以提高加密算法的抗Square攻擊能力,而該結(jié)論同樣適用于AES。

2、S盒改進(jìn)前后加密解密擴(kuò)散率比較

將新的兩位十進(jìn)制S盒替換短分組加密算法原有的S盒,并對替換前后的加密解密擴(kuò)散率進(jìn)行了軟件仿真測試分析,分別以12位、16位、20位、32位十進(jìn)制數(shù)為加密分組,進(jìn)行2到15輪的加密解密運(yùn)算測試。下面是20位十進(jìn)制數(shù)為加密分組所得測試比較結(jié)果。改進(jìn)前后文件加密過程中明文對密文擴(kuò)散率比較結(jié)果如圖2所示,密鑰對密文擴(kuò)散率比較結(jié)果如圖3所示。

基于AES的短分組加密技術(shù)的改進(jìn)

改進(jìn)前后解密過程中密文對明文擴(kuò)散率比較結(jié)果如圖4所示,密鑰對明文擴(kuò)散率比較結(jié)果如圖5所示。

基于AES的短分組加密技術(shù)的改進(jìn)
可以看出,增大S盒后,加密解密擴(kuò)散率的各項(xiàng)指標(biāo)均有明顯提高。其中加密過程中明文對密文擴(kuò)散率提高了3.3%,密鑰對密文擴(kuò)散率提高了25%;解密過程中密文對明文擴(kuò)散率提高了1%,密鑰對明文擴(kuò)散率提高了1.5%。由此 得出,加密性能很大程度上取決于S盒的大小。在存儲空間、運(yùn)算速度等條件允許的情況下,適當(dāng)?shù)卦龃骃盒使加解密過程中的狀態(tài)得到很好的擴(kuò)散,加解密性能得到了明顯的提高。

本文簡要介紹了基于AES的短分組加密技術(shù),在此基礎(chǔ)上指出原S盒太小是加密性能難以提高的原因。通過求逆、作仿射變換設(shè)計出了新的S盒,并將新設(shè)計的S盒應(yīng)用于短分組加密仿真系統(tǒng)中,通過分析發(fā)現(xiàn)新S盒的應(yīng)用大大提高了該加密算法的抗Square攻擊能力,安全性得到了加強(qiáng)。通過仿真測試分析發(fā)現(xiàn)新S盒的應(yīng)用使系統(tǒng)加密解密擴(kuò)散率得到明顯提高。在存儲空間、運(yùn)算速度等條件允許的情況下,適當(dāng)?shù)馗淖僑盒的大小或者改變行移位的運(yùn)算域,使得Square攻擊所利用的平衡性將不再存在,從而可以增強(qiáng)短分組加密算法的抗Square攻擊能力,使加密算法的安全性和擴(kuò)散性得到提高,而這種改進(jìn)對加密性能的影響同樣適用于AES等分組加密算法。

小知識之S盒

S盒用在分組加密算法中,是非線性結(jié)構(gòu),其密碼強(qiáng)度直接決定了加密算法的好壞。
S盒的功能就是一種簡單的“代替”操作。一個n輸入、m輸出的S盒所實(shí)現(xiàn)的功能是從二元域F2上的n維向量空間F2到二元域F2上的m維向量空間F2的映射:F2——>F2,該映射被稱為S盒代替函數(shù)。
構(gòu)造S盒常用的方法有如下3種:隨機(jī)選擇、人為構(gòu)造和數(shù)學(xué)方法構(gòu)造。