基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

S盒作為DES算法的一個(gè)關(guān)鍵環(huán)節(jié),它的設(shè)計(jì)好壞直接影響DES的加密性能。為此,我們首先根據(jù)DES算法,并結(jié)合分組密碼特點(diǎn)提出了一種基于s盒優(yōu)化的輕量級(jí)分組加密算法。

一、輕量級(jí)安全加密算法過程及實(shí)現(xiàn)

該算法的密鑰k采用28bit的0、1符號(hào)串,明文m和密文c則是由0,1組成的長度為32bit的符號(hào)串。設(shè)m=m1m2...m32,c=c1c2...32,k=k1k2...k28。由于初始置換及其逆置換不影響加密,沒有密碼學(xué)意義,故將其取消,其加密過程可表達(dá)如下:

DES(m)=T16*T15....T2*T1(m)。算法流程圖如圖1所示。

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)
加密過程可由明文初始化、迭代過程、密鑰生成方案完成。

先將明文串的每一個(gè)字符轉(zhuǎn)化為其ASCII碼,用8位二進(jìn)制0,1串來表示,依次選取32bit劃為一塊,共將明文分為n塊,若最后一塊不滿32bit,可以補(bǔ)隨機(jī)產(chǎn)生的0,1串,但必須讓接收者清楚哪些是多余的明文。

本加密算法的迭代過程與DES中類似。先將要加密的32bit明文塊分為左右兩塊等長L0,R0,迭代計(jì)算式為:Li=Ri1,Ri=Li-1⊕f(Ri-1,ki),再將16bit的Ri1經(jīng)E作用膨脹為24bit,
再與ki作異或運(yùn)算,將運(yùn)算結(jié)果分為4組,通過S盒輸出結(jié)果為16bit,S盒的輸出又經(jīng)過一個(gè)固定置換P后得f(Ri-1,ki),迭代8輪后的結(jié)果L8R8左右交換為R8L8即密文。

每一輪都使用不同的、從初始密鑰k導(dǎo)出的24 bit密鑰ki(1≤i≤16)。k是由一個(gè)長度為32的比特串,刪去第8,16,24,32位的4個(gè)校驗(yàn)比特得到的,校驗(yàn)比特主要為了檢錯(cuò)。

二、S盒設(shè)計(jì)

1、 S盒元素選取方案

S盒中輸出元素是由輸入的六個(gè)比特確定,一般將首末兩位構(gòu)成的二進(jìn)制數(shù)作為行標(biāo),而中間四位二進(jìn)制數(shù)作為列標(biāo),通過增加邏輯陷阱進(jìn)行選取。邏輯運(yùn)算不僅實(shí)現(xiàn)簡單,而且便于編程修改,在一定周期內(nèi)可通過修改邏輯門來提高算法安全性。具體過程如下:

①在迭代過程中計(jì)算Ri-1⊕E后,將結(jié)果24比特串分成4個(gè)長度為6的比特串,將它們記為B=B1B2B3B4;

②使用4個(gè)S1、S2、S3、S4,每個(gè)Si是一個(gè)固定的4×16階矩陣,它的元素來自0到15這16個(gè)整數(shù)。給定一個(gè)長度為6的比特串,例如:B1=b1b2b3b4b5b6,我們可按下列辦法計(jì)算S1盒的輸出S1(B1):用兩個(gè)比特b2、b3對(duì)應(yīng)的整數(shù)r (0≤r≤3)來確定S1的行(所謂兩個(gè)比特b2、b3對(duì)應(yīng)的整數(shù)r意指r的二進(jìn)制表示為b2、b3,以下含義相同),用b1⊕b4,b4,b5,b6四位對(duì)應(yīng)的整數(shù)c(0≤r≤15)來確定S1的列,S1(B1)的取值就是S1的第r行第c列的整數(shù)所對(duì)應(yīng)的二進(jìn)制表示。將四個(gè)S盒的輸出比特記為:Dj=Sj(Bj),1≤j≤4。

③將長度為16的比特串D=D1D2D3D4通過一個(gè)固定的置換P,所得結(jié)果即為迭代過程中的f(Ri-1,ki)。

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

表1給出了四個(gè)S盒的行列標(biāo)的選擇方法,通過增加邏輯運(yùn)算來改變傳統(tǒng)DES算法中的行列標(biāo)選擇位,打亂了原來S盒固有的選擇模式,這種方案增加了元素選擇方式,不僅能使算法的安全性得到提高,而且由于邏輯運(yùn)算實(shí)現(xiàn)起來較簡單,可以使算法在開銷方面節(jié)儉很多。

2、S盒元素設(shè)計(jì)

S盒作為DES算法中唯一的非線性器件,是加密的關(guān)鍵所在,然而,多年來,一直未有人將S盒的設(shè)計(jì)準(zhǔn)則公開。從已有的關(guān)于S盒的推理不難看出有如下幾條準(zhǔn)則。

①S盒的每一行是整數(shù)0,1,2,…,15的一個(gè)置換;

②每個(gè)S盒均為6位輸入,4位輸出;

③S盒的輸出都不是其輸入的簡單線性或仿射函數(shù);

④改變S盒的1位輸入,至少要引起2位的輸出變化。

通過分析知S盒行列標(biāo)的選擇位已發(fā)生變化,因此必須根據(jù)以上的原則重新設(shè)計(jì)S盒中元素來滿足加密所需,其中要使輸入的1位改變至少導(dǎo)致輸出的2位改變是S盒非線性的關(guān)鍵準(zhǔn)則。首先假設(shè)行標(biāo)的2位不變,那么對(duì)于輸入的4位列標(biāo)中有1位發(fā)生變化,則所對(duì)應(yīng)的S盒中元素至少2位變化,以S1盒設(shè)計(jì)為例說明,則有表2所示的相關(guān)表,其他三個(gè)S盒設(shè)計(jì)類似。表中帶黑框的數(shù)為排在該行列代碼前面的列號(hào),下劃線標(biāo)出的表示與自己相同的列號(hào)可不用考慮。

當(dāng)b2b3=00時(shí),如果b1b4b5b6=0100,那么b1⊕b4=1、b4=1、b5=0、b6=0,即表示選擇的是S1盒0行12列的元素,從表2中可看出,該元素必須與它前面的0、5、6列中的元素至少有兩位不同,也就是說必須從0、5、6列已選擇元素的非線性相關(guān)數(shù)的交集中選取。

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

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

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

三、安全性分析

這4個(gè)S盒的輸入輸出對(duì)應(yīng)于4個(gè)函數(shù)。每個(gè)函數(shù)的定義域都是{0,1,2,3,…,63},而值域都是{0,1,2,3,…,15}。因?yàn)檫@4個(gè)S盒是相互獨(dú)立的,因而可以計(jì)算出這4個(gè)S盒并出的概率分布,根據(jù)以往分析,實(shí)際DES的S盒統(tǒng)計(jì)特性近似滿足正態(tài)分布,故也可認(rèn)為本文設(shè)計(jì)的S盒近似滿足正態(tài)分布特性。

由于4個(gè)S盒的輸出之和取值范圍是{0,1,2,3,…,60},可計(jì)算出它的均值和方差為μ=(0+1+2+...+60)/61=30和σ=17.6068。

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

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

基于S盒優(yōu)化的輕量級(jí)加密算法設(shè)計(jì)

本算法S盒輸出與理論S盒輸出概率密度曲線平均誤差為1.40×10-3,最大誤差1.96×10-2,與DES算法S盒輸出概率密度平均誤差為1.88×10-3,最大誤差2.3×10-3,與它們誤差基本控制在10-3數(shù)量級(jí),因此統(tǒng)計(jì)特性與DES算法中S盒統(tǒng)計(jì)特性近似,具有較高的安全性,從圖2中以可看出絕大多數(shù)明文經(jīng)過S盒替換之后,本算法中4個(gè)子S盒的輸出之和將集中在30周圍,DES算法也有此特性,因此,若在選擇密文時(shí)使得其相應(yīng)于4個(gè)S盒的輸出之和盡量遠(yuǎn)離30,可防止選擇密文攻擊。

加密技術(shù)應(yīng)用的領(lǐng)域很廣,然而標(biāo)準(zhǔn)加密算法受成本限制在低端領(lǐng)域很難應(yīng)用。S盒作為DES算法中的唯一非線性器件,是起混亂作用的重要環(huán)節(jié),其設(shè)計(jì)優(yōu)劣直接影響整個(gè)加密系統(tǒng)的性能。

小知識(shí)s盒

S盒用在分組加密算法中,是非線性結(jié)構(gòu),其密碼強(qiáng)度直接決定了密碼算法的好壞。

S盒的功能就是一種簡單的“代替”操作。一個(gè)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)造。