基于S盒優(yōu)化的輕量級加密算法設計
S盒作為DES算法的一個關鍵環(huán)節(jié),它的設計好壞直接影響DES的加密性能。為此,我們首先根據(jù)DES算法,并結合分組密碼特點提出了一種基于s盒優(yōu)化的輕量級分組加密算法。
一、輕量級安全加密算法過程及實現(xiàn)
該算法的密鑰k采用28bit的0、1符號串,明文m和密文c則是由0,1組成的長度為32bit的符號串。設m=m1m2...m32,c=c1c2...32,k=k1k2...k28。由于初始置換及其逆置換不影響加密,沒有密碼學意義,故將其取消,其加密過程可表達如下:
DES(m)=T16*T15....T2*T1(m)。算法流程圖如圖1所示。

加密過程可由明文初始化、迭代過程、密鑰生成方案完成。
先將明文串的每一個字符轉(zhuǎn)化為其ASCII碼,用8位二進制0,1串來表示,依次選取32bit劃為一塊,共將明文分為n塊,若最后一塊不滿32bit,可以補隨機產(chǎn)生的0,1串,但必須讓接收者清楚哪些是多余的明文。
本加密算法的迭代過程與DES中類似。先將要加密的32bit明文塊分為左右兩塊等長L0,R0,迭代計算式為:Li=Ri1,Ri=Li-1⊕f(Ri-1,ki),再將16bit的Ri1經(jīng)E作用膨脹為24bit,
再與ki作異或運算,將運算結果分為4組,通過S盒輸出結果為16bit,S盒的輸出又經(jīng)過一個固定置換P后得f(Ri-1,ki),迭代8輪后的結果L8R8左右交換為R8L8即密文。
每一輪都使用不同的、從初始密鑰k導出的24 bit密鑰ki(1≤i≤16)。k是由一個長度為32的比特串,刪去第8,16,24,32位的4個校驗比特得到的,校驗比特主要為了檢錯。
二、S盒設計
1、 S盒元素選取方案
S盒中輸出元素是由輸入的六個比特確定,一般將首末兩位構成的二進制數(shù)作為行標,而中間四位二進制數(shù)作為列標,通過增加邏輯陷阱進行選取。邏輯運算不僅實現(xiàn)簡單,而且便于編程修改,在一定周期內(nèi)可通過修改邏輯門來提高算法安全性。具體過程如下:
①在迭代過程中計算Ri-1⊕E后,將結果24比特串分成4個長度為6的比特串,將它們記為B=B1B2B3B4;
②使用4個S1、S2、S3、S4,每個Si是一個固定的4×16階矩陣,它的元素來自0到15這16個整數(shù)。給定一個長度為6的比特串,例如:B1=b1b2b3b4b5b6,我們可按下列辦法計算S1盒的輸出S1(B1):用兩個比特b2、b3對應的整數(shù)r (0≤r≤3)來確定S1的行(所謂兩個比特b2、b3對應的整數(shù)r意指r的二進制表示為b2、b3,以下含義相同),用b1⊕b4,b4,b5,b6四位對應的整數(shù)c(0≤r≤15)來確定S1的列,S1(B1)的取值就是S1的第r行第c列的整數(shù)所對應的二進制表示。將四個S盒的輸出比特記為:Dj=Sj(Bj),1≤j≤4。
③將長度為16的比特串D=D1D2D3D4通過一個固定的置換P,所得結果即為迭代過程中的f(Ri-1,ki)。

表1給出了四個S盒的行列標的選擇方法,通過增加邏輯運算來改變傳統(tǒng)DES算法中的行列標選擇位,打亂了原來S盒固有的選擇模式,這種方案增加了元素選擇方式,不僅能使算法的安全性得到提高,而且由于邏輯運算實現(xiàn)起來較簡單,可以使算法在開銷方面節(jié)儉很多。
2、S盒元素設計
S盒作為DES算法中唯一的非線性器件,是加密的關鍵所在,然而,多年來,一直未有人將S盒的設計準則公開。從已有的關于S盒的推理不難看出有如下幾條準則。
①S盒的每一行是整數(shù)0,1,2,…,15的一個置換;
②每個S盒均為6位輸入,4位輸出;
③S盒的輸出都不是其輸入的簡單線性或仿射函數(shù);
④改變S盒的1位輸入,至少要引起2位的輸出變化。
通過分析知S盒行列標的選擇位已發(fā)生變化,因此必須根據(jù)以上的原則重新設計S盒中元素來滿足加密所需,其中要使輸入的1位改變至少導致輸出的2位改變是S盒非線性的關鍵準則。首先假設行標的2位不變,那么對于輸入的4位列標中有1位發(fā)生變化,則所對應的S盒中元素至少2位變化,以S1盒設計為例說明,則有表2所示的相關表,其他三個S盒設計類似。表中帶黑框的數(shù)為排在該行列代碼前面的列號,下劃線標出的表示與自己相同的列號可不用考慮。
當b2b3=00時,如果b1b4b5b6=0100,那么b1⊕b4=1、b4=1、b5=0、b6=0,即表示選擇的是S1盒0行12列的元素,從表2中可看出,該元素必須與它前面的0、5、6列中的元素至少有兩位不同,也就是說必須從0、5、6列已選擇元素的非線性相關數(shù)的交集中選取。

當b2b3=01或10時,由于與b2b3=00有1位不同,故該行元素的選取方法與第二行類似。當b2b3=11,由于與01,11均有一位不同,必須考慮與第1行和第2行的對應列的相關性。即第3行的每1位元素的選取不僅要考慮與本行的列代碼1位不同的相關性,還要考慮與1行和2行對應列的相關性。例如:當b1b2b3b4b5b6=011101,則表示選擇S盒第3行第13列元素,由于非線性要求,查表2知,該元素必須與1、4、7列元素至少有2位不同,還要與第1行13列元素,以及第2行13列中元素不同,故只能從這五個元素的交集中去選取,以此類推。表3僅給出了S1盒的元素的選定結果,其他S盒選擇過程與其類似。

三、安全性分析
這4個S盒的輸入輸出對應于4個函數(shù)。每個函數(shù)的定義域都是{0,1,2,3,…,63},而值域都是{0,1,2,3,…,15}。因為這4個S盒是相互獨立的,因而可以計算出這4個S盒并出的概率分布,根據(jù)以往分析,實際DES的S盒統(tǒng)計特性近似滿足正態(tài)分布,故也可認為本文設計的S盒近似滿足正態(tài)分布特性。
由于4個S盒的輸出之和取值范圍是{0,1,2,3,…,60},可計算出它的均值和方差為μ=(0+1+2+...+60)/61=30和σ=17.6068。

圖2分別給出了實際設計的四個S盒的概率密度曲線、理論曲線、DES算法S盒曲線以及實際曲線與DES算法S盒輸出概率的誤差曲線,從圖2中可看出理論概率密度曲線的輸出值在60-80之間仍能取到,但是根據(jù)以上分析可知實際的四個S盒輸出值不可能超過60。通過本算法設計的四個S盒的實際概率密度曲線與理論概率密度曲線以及標準DES算法S盒曲線進行比較,本算法S盒輸出與理論S盒輸出概率密度誤差公式以及與DES算法S盒輸出概率密度誤差公式分別為如式(1)、式(2)所示:

本算法S盒輸出與理論S盒輸出概率密度曲線平均誤差為1.40×10-3,最大誤差1.96×10-2,與DES算法S盒輸出概率密度平均誤差為1.88×10-3,最大誤差2.3×10-3,與它們誤差基本控制在10-3數(shù)量級,因此統(tǒng)計特性與DES算法中S盒統(tǒng)計特性近似,具有較高的安全性,從圖2中以可看出絕大多數(shù)明文經(jīng)過S盒替換之后,本算法中4個子S盒的輸出之和將集中在30周圍,DES算法也有此特性,因此,若在選擇密文時使得其相應于4個S盒的輸出之和盡量遠離30,可防止選擇密文攻擊。
加密技術應用的領域很廣,然而標準加密算法受成本限制在低端領域很難應用。S盒作為DES算法中的唯一非線性器件,是起混亂作用的重要環(huán)節(jié),其設計優(yōu)劣直接影響整個加密系統(tǒng)的性能。
小知識s盒
S盒用在分組加密算法中,是非線性結構,其密碼強度直接決定了密碼算法的好壞。
S盒的功能就是一種簡單的“代替”操作。一個n輸入、m輸出的S盒所實現(xiàn)的功能是從二元域F2上的n維向量空間F2到二元域F2上的m維向量空間F2的映射:F2——>F2,該映射被稱為S盒代替函數(shù)。
構造S盒常用的方法有如下3種:隨機選擇、人為構造和數(shù)學方法構造。










