本發(fā)明涉及對稱密鑰分組密碼的加密、解密方法和技術實現(xiàn)。
背景技術:
一、概述
20世紀70年代,計算機技術和通信技術的發(fā)展對信息安全提出了迫切要求,近代密碼學及其相關理論和算法于是應運而生。為保證信息的安全,信息傳送前需要加密,接收者接收加密的信息后需要解密,而信息的加密和解密則需密碼技術予以實現(xiàn)。
密碼可大體分為公鑰密碼(publickeycipher)和對稱密鑰密碼(symmetrickeycipher)。
rsa加密算法是一種基于公鑰體制實現(xiàn)的加密算法,1977年由羅納德·李維斯特等人提出。des和aes加密算法則是基于對稱密碼體制實現(xiàn)的分組加密算法,其中des又被稱為美國數(shù)據(jù)加密標準,是1972年由美國ibm公司研制并推出的。aes高級加密標準(advancedencryptionstandard),是美國聯(lián)邦政府2000年10月2日后采用的一種分組加密標準并用來替代原先的des。
分組密碼是將明文消息的二進制編碼序列x0,x1,…,xi,…xw劃分成n比特的若干個輸入分組,每個分組x=(x0,x1,…,xn-1),在密鑰k=(k0,k1,…,kt-1)控制下變換成對應的輸出分組y=(y0,y1,…,ym-1)。其加密函數(shù)e:vn×k→vm,實現(xiàn)把每個n比特輸入分組轉換成對應的m比特輸出分組,其解密函數(shù)d:vm×k→vn,則實現(xiàn)把m比特輸出分組轉換成n比特輸入分組,其中vn和vm分別是n維和m維矢量空間,k為密鑰空間。
分組的長度通常取m=n。若m>n,則為有數(shù)據(jù)擴展的分組密碼;若m<n,則為有數(shù)據(jù)壓縮的分組密碼。在2階有限域gf(2)情況下,x和y均為二進制數(shù)字序列,其每個分量xi和yi均屬于gf(2)。
分組密碼算法應滿足下述要求:
1、分組長度n要足夠大,以使得分組代換字母表中的元素個數(shù)2n足夠大,防止窮舉攻擊法輕易地奏效。des、idea、feal和loki等分組密碼采用了n=64比特分組,aes分組密碼采用n=128比特分組。
2、密鑰量要足夠大,盡可能消除弱密鑰,以防止密鑰窮舉攻擊奏效。des采用56比特密鑰,idea采用128比特密鑰,aes密鑰長度可以分別是128,192或256比特。
3、由密鑰確定的變換算法要足夠復雜,充分實現(xiàn)明文與密鑰的擴散和混淆,沒有簡單的關系可循,能抗擊各種已知的攻擊,如差分攻擊和線性攻擊;有高的非線性階數(shù),實現(xiàn)復雜的密碼變換;使對手破譯時除了用窮舉法外,無其它捷徑可循。
4、加密和解密運算簡單,易于軟件和硬件高速實現(xiàn)。
5、差錯傳播盡可能地小。
常用分組密碼設計技術:
1、替換(polygramsubstitution)
設明文和密文的分組的長度均為n比特,則明文和密文的每一個分組都有2n個可能的取值。為使加密運算可逆,明文的每個分組都應產(chǎn)生唯一的密文分組,稱明文分組到密文分組可逆的變換為替換。
2、擴散和混淆(diffusionandconfusion)
擴散(diffusion)和混淆(confusion)是shannon提出的設計密碼系統(tǒng)的兩種基本方法,其目的是為了有效阻止對手從密文的統(tǒng)計特性推測明文和密鑰。所謂擴散就是讓明文中的每一位影響密文中的多位,由此隱藏明文的統(tǒng)計特性,最理想的擴散是明文中的每一位影響密文中的所有位。所謂混淆是指將密鑰和密文之間的統(tǒng)計關系盡可能復雜化,使得對手即使獲取了某些密文的統(tǒng)計特性也無法推測密鑰。
在c.e.shannon所提出的理想密碼系統(tǒng)中,密文的所有統(tǒng)計特性都與所使用的密鑰無關。
二、本發(fā)明所能達到的效果
本發(fā)明針對傳統(tǒng)分組密碼的密鑰直接參與密文或明文的計算,從而導致的密鑰與密文統(tǒng)計特性存在較密切關聯(lián)的缺陷,設計了一個對稱密鑰隨機分組密碼。此密碼在加密或解密時,密鑰的唯一作用是通過選擇邏輯根據(jù)秘鑰值選擇一組不包含密鑰信息的函數(shù)式,由函數(shù)式完成加密或解密變換,以達到隔離密鑰與密文統(tǒng)計特性的目的。對于對手而言,這種通過密鑰值選擇加密函數(shù)去完成明文加密變換的加密機制更多地體現(xiàn)了在加密過程中密鑰隱秘性的一面。
技術實現(xiàn)要素:
一、隨機分組密碼
現(xiàn)有的分組密碼設計幾乎都是通過把明文和密鑰直接進行運算從而產(chǎn)生密文,由此帶來的一個弊端是密鑰緊密依賴于密文的統(tǒng)計特性。例,des的16輪變換的輸出li和ri是由明文信息和密鑰信息經(jīng)擴展、異或、代換、置換和異或運算所生成,des最終的密文也是由明文信息和密鑰信息直接運算所形成。。
事實上,現(xiàn)有分組密碼算法,如idea和loki9等,其密文均由明文信息和密鑰信息直接計算形成,密文與明文和密鑰直接相關。由于密鑰直接參與密文或明文的計算,對手可采用差分攻擊和線性攻擊等手段對密鑰進行分析并有可能加以破解,因此或許上述特點正是這類分組密碼的固有和致命缺陷。
一個n比特明文分組具有2n個不同明文分組值,若將其變換為n比特密文分組,則密文分組共有2n個不同的分組值。從2n個明文分組值變換為2n個不同的密文分組值共有2n!種不同的變換,一個理想的隨機分組密碼應能實現(xiàn)2n!種不同的變換。
定義1一個n比特理想對稱密鑰隨機分組密碼是滿足下述條件的分組密碼:
a、不同的密鑰有2n!個,分別一一對應對應著2n!種不同的可逆加密變換。
b、任給一密鑰k,通過條件選擇邏輯可根據(jù)密鑰k選擇一個唯一的可逆加密變換ti:若k=i,則選擇ti,i=0,1,...2n!-1。
c、可逆加密變換ti實現(xiàn)把明文空間中的任意一個明文變換成密文空間中的唯一一個密文,其逆變換t-1i則實現(xiàn)把密文空間中的任意一個密文變換成明文空間中的唯一一個明文。
定義2一個n比特對稱密鑰隨機分組密碼是滿足下述條件的分組密碼:
a、不同的密鑰有|k|個,分別一一對應對應著|k|種不同的可逆加密變換,|k|表示密鑰空間的大小(size)。
b、任給一密鑰k,通過條件選擇邏輯可根據(jù)密鑰k選擇一個唯一的可逆加密變換ti:若k=i,則選擇ti,i=0,1,...|k|-1。
c、可逆加密變換ti實現(xiàn)把明文空間中的任意一個明文變換成密文空間中的唯一一個密文,其逆變換t-1i則實現(xiàn)把密文空間中的任意一個密文變換成明文空間中的唯一一個明文。
定理n比特理想對稱密鑰隨機分組密碼和n比特對稱密鑰隨機分組密碼具有抵抗除窮盡攻擊外任何其他攻擊的能力。
證明由上述定義1和定義2可知,理想隨機分組密碼和隨機分組密碼的密鑰的唯一作用是從若干個變換中選擇一個變換,密鑰不參與密文的復雜計算,因此其密鑰和密文的統(tǒng)計特性得以自然隔離。因為除窮盡攻擊外針對密碼的攻擊均依賴于這種統(tǒng)計特性,所以針對n比特理想隨機分組密碼和n比特隨機分組密碼的有效攻擊只有窮盡攻擊。
由上述可知,一個n比特理想隨機分組密碼,不同的密鑰值有2n!個,分別一一對應著2n!種不同的變換,密鑰的唯一作用就是通過密鑰的簡單邏輯運算在2n!種變換中選中一種變換,去實現(xiàn)明文至密文的變換。然而,設計實現(xiàn)一個理想分組密碼絕非易事,一個n比特的理想隨機分組密碼需要2n!個密鑰,其密鑰比特數(shù)為log2(2n!)比特。例,n=5,25!≈2.6×1035,所需密鑰比特數(shù)約為118比特。理想分組密碼的較多密鑰比特數(shù)為密鑰的保存和傳送帶來了極大的不便,且當n較大時2n!種不同變換的設計實現(xiàn)幾乎是不可能的。
二、隨機子分組
本發(fā)明把長度為2m比特的分組劃分為m個2比特的子分組,然后實現(xiàn)2比特子分組對應24種不同變換中的16種變換。對于2m比特的分組,盡管這種方式所實現(xiàn)變換數(shù)遠小于22m!,其不同變換數(shù)仍達到16m=24m種,且加密或解密時密鑰不直接參與加密或解密的復雜運算,達到了密鑰與密文或明文的有效隔離。
隨機子分組由2個輸入邏輯變量x1和x0,2個輸出變量f和g,4個控制邏輯變量k3、k2、k1、k0(作為密鑰輸入端)和內部控制邏輯組成,如圖1所示。內部控制邏輯實現(xiàn)了16組由fi和gi組成的函數(shù)表達式分別對應著16種不同的加密變換并可根據(jù)k3、k2、k1、k0的不同取值選擇其中一種變換。這16組函數(shù)式如下所示:
上式中,⊕是邏輯變量異或二元運算符,其計算規(guī)則為:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0;⊙是邏輯變量同或二元運算符,其計算規(guī)則為:0⊙0=1,0⊙1=0,1⊙0=0,1⊙1=1;-是邏輯變量求補一元運算符,其計算規(guī)則為:
隨機子分組具有如下基本屬性:
1、根據(jù)密鑰值變換函數(shù)的選擇
內部控制邏輯根據(jù)邏輯變量k3、k2、k1和k0的不同取值選擇其中一種變換,其選擇邏輯為:若k3k2k1k0=i,則選擇fi和gi,i=0,1,2,...15。
2、加密密鑰和解密密鑰對
隨機子分組有10組加密、解密密鑰對。當加密、解密密鑰對中的一個密鑰用于加密時,另一個密鑰則用于解密。10組加密、解密密鑰對如下所示:
3、密鑰不直接參與明文或密文的計算
不同于des等分組密碼,隨機子分組的密鑰k3k2k1k0不直接參與明文或密文的計算,密鑰僅僅用于控制選擇16組函數(shù)中的一組函數(shù)進行加密或解密變換。由于一組函數(shù)一一對應著一種變換,因此選擇了函數(shù)組就等價于選擇了對應的變換。
4、輸入值變化的或然性擴散
隨機子分組包含16組函數(shù)式,每組均由兩個函數(shù)式fi(x1,x0)和gi(x1,x0)組成,x1和x0中必有一個變量以原變量或反變量的形式同時出現(xiàn)在這兩個函數(shù)式中而另一個變量僅出現(xiàn)在一個函數(shù)式中。因而,當這個同時出現(xiàn)在兩個函數(shù)式中的變量的值變化時,這個變量的變化或可擴散至兩個輸出端。
當使用隨機子分組進行多級加密時,輸入值的變化或可擴散至較多個輸出端,這種輸入值變化擴散的或然性增加了密文的隨機性,尤其是對手采用差分分析等攻擊手段試圖破譯密碼時極大地增加了密碼的安全性。
三、隨機分組密碼組件
如圖2所示,隨機分組密碼組件是由若干個隨機子分組并聯(lián)構成,其功能是實現(xiàn)對明文或密文的單輪加密或解密。對于2m比特的分組,隨機分組密碼組件是由m個隨機子分組并聯(lián)構成,其中m為一個正整數(shù)。
當隨機分組密碼組件用于加密時,輸入明文是:x2m-1x2m-2...x1x0,其輸出密文是:f2m-1f2m-2...f1f0,其密鑰是:k=km-1km-2...k1k0,其中ki是密鑰位。每個密鑰位ki=(k3k2k1k0)2的可取值二進制數(shù)是:0000至1111,i=0,1...m-1。若將組件用于解密變換,x2m-1x2m-2...x1x0輸入密文,f2m-1f2m-2...f1f0則輸出明文,其解密密鑰需將加密密鑰的各密鑰位ki經(jīng)(2)式變換后輸入至km-1km-2...k1k0端。
為闡述隨機分組密碼組件的工作原理,假設2m=4,k=k1k0,k1=0010,k0=1101,明文為x3x2x1x0=0010。加密時,在密鑰位k1k0的控制下,選擇(1)式的第2組和第13組函數(shù)式分別對x3x2和x1x0進行加密變換。經(jīng)組件變換后,f3=x3⊕x2=0⊕0=0,f2=x3=0,
隨機分組密碼組件具有如下屬性:
1、基于密鑰值選擇加密變換的加密機制,通過條件選擇邏輯根據(jù)密鑰值選擇加密變換,密鑰不直接參與密文的計算。
由于組件的密鑰k由m個有序密鑰位ki組成,每個密鑰位ki可選擇16個函數(shù)組之一,因此每個密鑰共可選擇m個函數(shù)組的2m個函數(shù)式。對明文的加密是通過2m個函數(shù)分別對m個2比特的明文計算求得密文,密鑰k和密鑰位ki并未出現(xiàn)在2m個函數(shù)中,因而該組件不同于傳統(tǒng)的分組密碼,其密鑰不直接參與密文或明文的計算。
2、密鑰空間的大小(size)為16m。
若2m=64,則其密鑰空間大小為1632=2128,相較于des分組密碼,其密鑰空間擴大了約264倍。
由于隨機分組密碼組件的加密是通過有序密鑰位ki去選擇不同函數(shù)式實現(xiàn)的,因而并不是真正意義上的隨機分組變換。真正的隨機分組變換每一個密鑰值對應于一種變換,僅僅由密鑰值選擇一種變換,而不是通過密鑰的密鑰位去選擇函數(shù)組中的函數(shù)去實現(xiàn)加密變換。真正隨機分組的變換理應僅僅與密鑰值相關而與密鑰的密鑰位ki無關。
四、對稱密鑰隨機分組密碼(symmetricalkeyrandomblockcipher,skrbc)
為打破隨機分組密碼組件中明文位和密文位與密鑰位(ki,i=0,1...15)的一一對應關系,作者對隨機分組密碼組件進行了完善。完善后的對稱密鑰隨機分組密碼其加密和解密過程如圖3和圖4所示。
數(shù)據(jù)結構
1、分組明文:x0,x1,...x2m-10,x2m-9,其中2m為分組的長度,m是一個較大正整數(shù),一般m≥32,xi∈gf(2)(二階有限域),i=0,1,...2m-9。
2、隨機數(shù)據(jù)信息:r=r7r6r5r4r3r2r2r0,ri∈gf(2),i=0,1...7。
3、分組打包數(shù)據(jù):w0,w1,...w2m-1,其中2m為分組的長度,m是一個較大正整數(shù),一般m≥32,wi∈gf(2),i=0,1,...2m-1。
4、分組密文:f0,f1,...f2m-2,f2m-1,fi∈gf(2),i=0,1,...2m-1。
5、加密密鑰和加密子密鑰keyi
keyi=ki0ki1...kim-1,kij∈gf(16),i=0,1...n-1,j=0,1,...m-1。
key0為加密密鑰,key1...keyn-1為由key0生成的加密子密鑰。
對稱密鑰隨機分組密碼加密過程
對稱分組密碼的加密由子密鑰生成和加密變換兩個階段組成,其中加密變換共計n輪,詳情如下所示。
1、子密鑰生成
如圖3(a)中處理模塊1所示,此階段由密鑰key0生成n-1個子密鑰:key1,key2,...keyn-1,其算法描述為:
keyji←key0i⊕dj,0≤dj≤15,若n<16且k≠j,則dk≠dj;i=0,1,...m-1,j=1,2...n-1,k=1,2...n-1?!皑挕北硎景次划惢蜻\算符,key0j⊕dj表示將key0j和dj逐位進行異或運算。
2、加密變換
加密過程如圖3(b)所示,其步驟為:
步驟1、輸入2m-8比特的明文,存入x0,x1,...x2m-10,x2m-9,m為一個正整數(shù)。
步驟2、在明文的最后添加一個字節(jié)隨機數(shù)據(jù)信息,明文分組打包成2m比特的分組:
w2m-1w2m-2...w1w0=x2m-9x2m-10...x1x0r7r6r5r4r3r2r2r0,
w2m-1w2m-2...w1w0為打包后的2m比特的分組,r7r6r5r4r3r2r2r0為一字節(jié)隨機數(shù)據(jù)信息,
r7r6r5r4r3r2r2r0=x7x6x5x4x3x2x1x0⊕x15x14x13x12x11x10x9x8⊕...⊕x2m-9x2m-10x2m-11x2m-12x2m-13x2m-14x2m-15x2m-16
⊕表示按位異或,即每個字節(jié)相同位權的位進行異或運算。若明文不足2m-8比特,則在明文的末尾以隨機數(shù)據(jù)信息r填充,以湊齊2m比特。
步驟3、數(shù)據(jù)變換
2m比特打包后的分組按字節(jié)進行變換:
w7w6w5w4w3w2w1w0←w7w6w5w4w3w2w1w0⊕d1
w15w14w13w12w11w10w9w8←w15w14w13w12w11w10w9w8⊕d2
......
w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8←w2m-1w2m-2w2m-3w2m-4w2m-5w2m-6w2m-7w2m-8⊕d2m/8
其中,1≤di≤255,i=1,2...,2m/8,符號“/”表示普通除法運算符,⊕表示按位異或運算符。步驟4、n輪加密變換
打包后的分組其加密共有n輪。每輪加密變換由隨機分組密碼組件變換、位兩兩交換和分組循環(huán)左移ci位三個步驟組成。n為一個正整數(shù)。n的數(shù)值越大輸入明文中一位變化所引起數(shù)據(jù)擴散程度越高,加密算法的安全性亦越高,建議選取n大于等于3作為加密變換的輪數(shù)。
n輪加密中每輪加密變換步驟:
步驟4.1、隨機分組密碼組件變換
隨機分組密碼組件變換的功能是實現(xiàn)加密變換,待處理數(shù)據(jù)w2m-1w2m-2...w1w0的各位數(shù)據(jù)分別送入組件的輸入端進行加密變換,并把其輸出f2m-1f2m-2...f1f0作為下一步處理的輸入。
步驟4.2、位兩兩交換
把f2m-1f2m-2...f1f0分成m個二元組:(f2m-1,f2m-2)m-1,...(f3,f2)1,(f1,f0)0,然后把所有分組中的兩位分別與不同分組中的位進行交換。
設待交換的二元組是(fx,fx+1)k,其它任意兩個二元組分別是:(fy,fy+1)p,(fz,fz+1)q,其中0≤x,y,z≤2m-2,0≤k,p,q≤m-1,且x≠y,x≠z,z≠y,k≠p,k≠q,p≠q,滿足上述要求的方案有8種,可任選其中任意一種交換方案,例
完成位交換后的數(shù)據(jù)仍記為f2m-1f2m-2...f1f0,并將其作為下一步處理的輸入數(shù)據(jù)。
步驟4.3、分組循環(huán)左移ci位
f2m-1f2m-2...f1f0循環(huán)左移ci位,其中0≤ci<2m-1。完成循環(huán)左移后的數(shù)據(jù)仍記為f2m-1f2m-2...f1f0,并將其作為下一輪處理的輸入數(shù)據(jù)。
重復4.1、4.2、4.3步驟n次,即完成數(shù)據(jù)的n輪加密變換。每輪變換的4.3步驟中的循環(huán)左移位數(shù)ci每輪應選為不同數(shù)值,但加密和解密所選ci應相同。第n輪加密變換的輸出f2m-1f2m-2...f1f0作為密文輸出之。
步驟5、結束
對稱密鑰隨機分組密碼解密過程
對稱密鑰隨機分組密碼的解密是加密的逆過程。解密過程由解密密鑰生成和解密變換兩個階段組成,其中解密變換也需n輪,詳情如下所示。
1、解密密鑰和解密子密鑰生成
如圖4(a)所示,其步驟為:
步驟1、根據(jù)密鑰key0生成子密鑰key1、key2...keyn-1
子密鑰key1...keyn-1的生成與加密子密鑰的生成方法相同,詳見加密子密鑰的生成方法。
步驟2、求解key0、key1...keyn-1的解密密鑰
根據(jù)(2)式給出的加密和解密密鑰對,分別求出key0、key1...keyn-1的解密密鑰,仍存入key0、key1...keyn-1。
2、解密變換
解密過程如圖4(b)所示,其步驟為:
步驟1、輸入2m-1比特的密文,存入x0,x1,...,x2m-1,m為一個正整數(shù)。
步驟2、n輪解密變換。
步驟2.1分組循環(huán)右移ci位
x2m-1...x1x0循環(huán)右移ci位。此步處理與4.3步驟的循環(huán)左移ci位的操作除移位方向不同外其他均相同,右移的次數(shù)ci與加密時所移位次數(shù)亦相同。
步驟2.2位兩兩交換
此步操作與加密變換的4.2步驟相同,操作后的結果仍表示為x2m-1...x1x0。
步驟2.3隨機分組密碼組件變換
隨機分組密碼組件變換的操作與與加密變換的4.1相同。
重復步驟2.1、2.2和2.3n次,第n次操作的結果記為f2m-1f...f1f0。
步驟3、數(shù)據(jù)變換。
此步操作與與加密變換的步驟3相同。數(shù)據(jù)變換操作的結果記為f2m-1...f1f0。
步驟4、分組數(shù)據(jù)解包成2m-8位的分組
去除分組數(shù)據(jù)變換的最低8位,即去除f2m-1...f1f0中的f7f6f5f4f3f2f2f0,把f2m-1...f9f8作為明文x2m-8...x1x0輸出,結束解密計算過程。
基本算法測試
針對對稱密鑰隨機分組密碼加密和解密算法,本發(fā)明的作者編寫了c語言實現(xiàn)的加密和解密算法基本函數(shù)庫和64比特分組、128比特分組和256比特分組實驗程序,包括基本加密、解密程序、數(shù)據(jù)一位變化擴散實驗程序和隨機子分組線性分析實驗程序等程序。
加密或解密時采用4輪加密或解密變換。子密鑰生成階段的3個參數(shù)分別為:d1=0x5,d2=0xa,d3=0x7。數(shù)據(jù)變換模塊(參見圖3和圖4)的參數(shù)為:(d1,d2,...d32)=(0x1,0xf2,0xd5,0x34,0xa1,0x32,0x5,0x34,0x1,0xf2,0x5,0xd4,0x1,0x2,0x5,0x34,0x1,0x2,0x5,0xa4,0x21,0x2,0x5,0x34,0x11,0x32,0x15,0x34,0x11,0x2,0x5,0x34),其中64位分組采用以上向量的前8個分量,128位分組采用采用以上向量的前16個分量,256位分組采用以上向量的所有分量。分組循環(huán)左移次數(shù)ci其四輪取值分別為c1=3,c2=7,c3=11,c4=0(參見圖3的4.3和圖4的2.1)。以上參數(shù)是隨機選擇設置的,實際應用中建議盡量避免多個參數(shù)的值雷同。
實驗結果如下所示:
一、基本加密解密實驗
基本加密解密實驗包括64比特、128比特和256比特分組的加密、解密實驗,其目的是驗證加密、解密算法的正確性。
圖5(a),(b),(c)分別是64比特、128比特和256比特分組的加密解密實驗的實驗結果。圖5中,plaintext表示明文數(shù)據(jù),ciphertext表示密文數(shù)據(jù),deciphertext表示解密后的明文數(shù)據(jù)。由圖5可知,加密前的明文與解密后的明文完全一致,從而驗證了對稱密鑰隨機分組密碼加密和解密算法的正確性。
二、分組1位數(shù)據(jù)變化擴散實驗
差分分析是一種針對分組密碼的分析方法,其思路是改變一部分明文,通過分析密文變化所產(chǎn)生的與明文的偏差獲得破譯密碼的線索。
分組1位數(shù)據(jù)變化擴散實驗就是依據(jù)差分分析的基本原理而實施的。分組1位數(shù)據(jù)變化擴散實驗包括64比特、128比特和256比特分組的1位數(shù)據(jù)變化擴散實驗,其基本方法是,分別對兩組僅有一個數(shù)據(jù)位不同的明文進行加密,然后比對相應的兩組密文,統(tǒng)計兩組密文中取值不同位的總位數(shù),其目的是查看一位明文變化所引起的密文變化的擴散程度。
圖6(a)、(b)和(c)分別是64比特、128比特和256比特分組明文一位變化所引起的密文變化的位數(shù)。圖6(a)中,明文的第六個字節(jié)由0x6b變化為0x6a時(最低二進制位變化)引起密文7位變化。圖6(b)中,明文的第一個字節(jié)由0xff變化為0xfe時引起密文14位變化,圖6(c)中明文的第四個字節(jié)由0x73變化為0x74時引起密文20位變化。
以上實驗結果表明,當對手試圖根據(jù)輸入值和輸出值的對應關系去構造輸出函數(shù)式并由此推斷密鑰位ki是極為困難的。經(jīng)過四輪加密變換,每個密鑰位ki與明文或密文的二進制位對應關系得以充分隱匿,其密鑰從外部性能上更像一個不可分割的整體。
三、線性分析測試
線性分析也是一種針對分組密碼的分析方法,常用于對傳統(tǒng)分組密碼的分析,其基本思路是將明文和密文的某些對應位進行異或(xor)運算,并計算結果為零的概率,其概率應為二分之一。若能找到概率大幅偏離二分之一的位則可以由此獲得與密鑰有關的信息。
3.1隨機子分組測試
根據(jù)(1)式,隨機子分組的十六個函數(shù)組依次為(f0,g0),(f1,g1)...(f15,g15),其中fi和x1分別是高位的輸出和輸入位,gi和x0分別是低位的輸出和輸入位,i=0,1...15。依據(jù)線性分析的原理把x1和fi異或、x0和gi異或可得:
(x1⊕f0,x0⊕g0),(x1⊕f1,x0⊕g1),...(x1⊕f15,x0⊕g15)(3)式
令x1x0依次取值為:00,01,10,11,編程分別計算(3)式中兩個表達式的值,其實驗結果如圖7(a)所示。圖7(b)中省略了變量x1和x0,僅給出了密鑰ki和對應的x1⊕fi和x0⊕gi的結果:ki:(x1⊕fi,x0⊕gi)。
在圖7中,當密鑰位ki一定時,隨機子分組的加密輸出結果為零的概率并不為二分之一,ki=15的行甚至出現(xiàn)了輸出值等于1的概率是1的位(該行的高位輸出部分)。按照傳統(tǒng)分組密碼的線性分析方法,隨機子分組的密鑰位應該是極易破解的。然而不同于傳統(tǒng)的分組密碼,該分組單元是以2位為單位進行加密和解密的且密鑰位ki的每個取值分別對應了一組函數(shù)式,16個密鑰位ki的值以及對應函數(shù)組函數(shù)對兩個輸入變量x1x0加密后線性分析的結果確是均勻分布的,圖7中輸出為00、01、10和11的次數(shù)均為16次。
為分析隨機子分組的安全性,根據(jù)圖7繪制線性分析表,如表1所示。
表1
在表1中,當密鑰位ki=1時,選擇(1)式中的第1組函數(shù)式(f1,g1)。x1x0=00時,(x1⊕f1,x0⊕g1)=(1,0);x1x0=01時,(x1⊕f1,x0⊕g1)=(0,0);x1x0=10時,(x1⊕f1,x0⊕g1)=(1,0);x1x0=11時,(x1⊕f1,x0⊕g1)=(0,0),表1中的其他行按照類似方法得出。
假設對手可以得到任意的明文密文對(采用選擇明文攻擊方式),即當輸入x1x0的值后可得到figi的取值,但是密鑰位ki的值未知。
當對手輸入x1x0=00時,假設取得figi=10,10與x1x0=00異或后得(x1⊕fi,x0⊕gi)=(1,0)(如表1中的第1列所示)。由于(1,0)對應于1、5、13和14四個密鑰位,因此對手不能確定密鑰位ki的值。繼續(xù)輸入x1x0=01,假設計算后得(x1⊕fi,x0⊕gi)=(0,0)(如表1中ki=1和ki=13行的第2列所示),由于00對應于1和13兩個密鑰位,因此對手仍不能確定密鑰位的值。若要求解密鑰位的確切值只有繼續(xù)輸入x1x0=10或x1x0=11,方能求解出密鑰位ki。此種情況下若確定ki的值,對手需要三組x1x0輸入值和figi的值。
另一種情況是,假設對手輸入x1x0=00時,經(jīng)線性分析計算后得到(1,0);繼續(xù)輸入x1x0=01經(jīng)計算得到(1,0),由于表1中只有密鑰位ki=14才能出現(xiàn)此種情況,因此可求解出密鑰位是14。
采用類似的方法分析表1中其他輸入和輸出序列,可得如下一般性結論:
1、對手選擇明文攻擊方式時,若破解隨機子分組的密鑰位最少需要兩組x1x0的值,最多需要三組x1x0的值。
2、若加密密碼采用m個隨機子分組構成,破解其密鑰最少需要2m次計算最多需要3m次計算。例,對于64比特的分組至少需要232次計算最多需要332次計算。
上述結論似乎有些悲觀,然而這是在對手可以取得任意的明文和密文對,加密過程僅采用一輪加密且不改變明文和密文的對應位置的情況下得出的。若加密和解密以物理設備實現(xiàn),上述情況相當于對手繳獲了加密和解密設備,設備的密鑰一定但未知的情況下對設備密鑰進行破解所需的計算量。
為避免單輪加密所帶來的安全隱患,本發(fā)明的加密和解密的實驗程序采用了4輪加密,對密文的各位進行了多次換位操作,打散了明文位和密文位的對應關系,4輪加密和解密的實驗及線性分析結果如下所述。
3.2對稱密鑰隨機分組密碼測試
對稱密鑰隨機分組密碼測試的線性分析采用64位分組4輪加密變換,其參數(shù)如前所述,實驗結果如圖8所示,根據(jù)圖8繪制表2如下所示。
表2
在表2中,明文1、明文2、明文3和明文4僅有第6個字節(jié)不同,四組明文的第6個字節(jié)分別是0,1,2和3,對應第6個字節(jié)的最低兩個二進制位分別是00、01、10和11,如表中的第0、3、6和9行所示。密文的第6個字節(jié)都是十六進制的2d,其最低兩個二進制位都是01,如表中的第1、4、7和10行所示。由此可得明文和密文第6個字節(jié)的最低兩位的對應關系為:00--01,01--01,10--01,11--01,而實際的第6個字節(jié)最低兩位所用密鑰位ki=12,正確的輸入、輸出對應關系應為:00--11,01--10,10--00,11--01。
四組明文和對應密文按位異或運算結果如表中的第2、5、8和11行所示,其第6個字節(jié)分別是2d、2c、2f和2e,對應第6個字節(jié)的最低兩個二進制位分別是01、00、11和10,明文和密文第6字節(jié)最低兩位對應關系為:00--01,01--00,10--11,11--10,此對應關系也不是希望的正確結果。
事實上上述實驗結果具有普遍意義。對于任意比特的2m分組,由于四輪加密變換過程中對密文的各位進行了換位,因此明文和密文諸位間的對應關系已被打散,任何力圖通過分析明文位和密文位對應關系去破解加密算法的密鑰位ki是不可能的。
四、加密和解密程序運行速度測試
為測試基本程序運行速度,作者分別編寫了對稱密鑰隨機分組密碼的64比特分組、128比特分組和256比特分組四輪加密和解密c語言程序,從有關網(wǎng)站下載了des和aes的加密和解密c語言程序。為保證比較結果的基本公正性,加密和解密程序中僅包含加密和解密的基本程序段,每個被測試程序重復運行40960次,約4萬1千次。
實驗結果如圖9(a)、圖9(b)、圖9(c)、圖9(d)和圖9(e)所示。對稱密鑰隨機分組密碼的64比特分組、128比特分組和256比特分組測試程序運行速度分別為:343ms(毫秒)、702ms和1903ms。aes的128比特分組和des的64比特分組測試程序運行速度分別為:7550ms和1467ms。根據(jù)實驗結果和密碼的密鑰空間大小繪制表3如下:
表3
由表3可知,對稱密鑰隨機分組密碼128比特分組的運行速度比aes密碼128比特分組的運行速度快了10倍之多,對稱密鑰隨機分組密碼64比特分組的運行速度比des密碼64比特分組的運行速度快了約4.27倍。盡管程序的運行速度與其運行平臺、程序的優(yōu)化程度等因素有關,但是在相同條件下的上述測試結果仍有一定參考價值。
根據(jù)以上實驗可得出如下結論:
1、盡管對稱密鑰隨機分組密碼的加密是采用對明文兩位一組分別加密的加密方式,由于隨機子分組對一位數(shù)據(jù)變化的或然性擴散和加密過程中的多輪換位和移位操作,明文和密文的數(shù)據(jù)位與密鑰位ki的對應關系已被打亂,因此根據(jù)明文和密文數(shù)據(jù)位的對應關系去破解密鑰位ki是極為困難的。在其密鑰位ki極難被逐個破解的情況下,對于企圖破解密碼密鑰的對手,分組密碼充分體現(xiàn)了其密鑰整體性和明文與密文對應關系隨機性的一面,或許除了采用使用窮舉法選擇明文攻擊外,無其它捷徑可循。
2、對稱密鑰隨機分組密碼的運行速度明顯快于aes和des目前較為流行分組密碼的運行速度。在減少對稱密鑰隨機分組密碼加密輪數(shù)的情況下,其速度必將會進一步提高。
安全性分析
一般而言,分組密碼的密鑰空間k、明文空間p、密文空間c和加密函數(shù)ek構成了一個密碼系統(tǒng),將此系統(tǒng)記為∏=(k,p,c,ek)。其中,p是由n比特明文p組成的集合,c是由n比特密文c組成的集合,k是由n比特密鑰k組成的集合,ek是從p至c可逆加密變換。令e∏=∪{ek:k∈k},e∏是密碼系統(tǒng)所有加密變換ek的集合,|e∏|稱之為系統(tǒng)的階(order),|e∏|表示集合e∏的大小(size)。
有別于一般分組密碼系統(tǒng),對稱密鑰隨機分組密碼對應的密碼系統(tǒng)為∏=(k,p,r,c,ek)。與一般系統(tǒng)不同的是此系統(tǒng)增加了一個隨機數(shù)據(jù)空間r,r是由8比特隨機字節(jié)r組成的集合;p是由2m-8比特明文p組成的集合,c是由2m比特密文c組成的集合,k是是4m比特密鑰k組成的集合。對于任意一個密鑰k,k∈k,加密函數(shù)ek(p,r)是一個從k、p和r至c映射;其逆函數(shù)記為dk(c),是一個從k和c至p映射(解密函數(shù))。
針對skrbc密碼的窮盡攻擊:
窮盡攻擊是攻擊者依次嘗試密鑰空間中的密鑰逐個對所截獲的密文進行脫密測試,進而找出正確密鑰的一種攻擊方法。窮盡攻擊的實施有一個前提,攻擊者除密鑰外可以獲得密碼算法、所需明文和密文。
窮舉攻擊的基本方法是,攻擊者用假設的密鑰k對已知密文c和明文p進行脫密測試,若d(k,c)≠p,則k一定不是正確的密鑰;若d(k,c)=p,則k可能是正確的密鑰,密鑰的正確性需通過附加的已知明文和密文加以驗證。這種在密鑰k滿足解密關系式d(k,c)=p的條件下仍不能確定密鑰正確性的狀況,恰恰表明了某些傳統(tǒng)分組密碼從密鑰和密文空間向明文空間映射時其唯一性的欠缺,而對于skrbc密碼以及隨機分組密碼則不會出現(xiàn)這種情況。
窮舉攻擊算法的優(yōu)劣主要由四個指標加以衡量:算法成功率、算法存儲復雜性、算法數(shù)據(jù)復雜性和算法計算復雜性。其中與密碼算法安全性能有關的是窮舉攻擊算法的計算復雜性。
以下針對skrbc密碼進行分析,假定skrbc密碼的密鑰位不可能被逐個破解,這種情況下任何針對skrbc密碼的攻擊只有窮舉攻擊。
設對稱密鑰隨機分組密碼的分組長度為2m比特,依次需要窮舉的密鑰是k1、k2...k4m,并假設正確密鑰kξ的出現(xiàn)是等概率隨機事件,即
由此求得針對skrbc密碼窮舉攻擊的平均計算復雜性:
(4)式是在skrbc密碼為隨機分組密碼條件下得出的,若2m=128,則針對skrbc密碼窮舉攻擊的平均計算復雜性是2255,以上結果表明對于窮舉攻擊skrbc密碼的安全性極高。
針對skrbc密碼密鑰位的攻擊:
另一種針對skrbc密碼的攻擊是逐個破解密鑰的每個密鑰位ki,i=0,1...2m-1。假設對手獲取了skrbc密碼的算法程序,可以通過計算求得所需明文和密文。這種情況下,盡管對手可以取得所需的明文和密文,但是由于隨機子分組輸入值變化的或然性擴散和skrbc密碼加密過程中加密中間結果被多次換位,因此對應于每個密鑰位ki的兩個輸入變量x1和x0的值和兩個輸出變量f和g的值的對應關系是不能被確定的。在兩個輸入變量x1x0和兩個輸出變量fg的值的對應關系不確定的情況下,求出輸出函數(shù)f和g的邏輯表達式并進而推測密鑰位ki的值是不可能的。
總結
不同于傳統(tǒng)的分組密碼,skrbc密碼有如下獨特之處:
1、經(jīng)過多輪的組件加密變換、位兩兩交換和分組循環(huán)左移打散了密文和明文與密鑰位的一一對應關系,對手通過分析明文與密文的對應關系去求解各個密鑰位ki是及其困難的。
2、skrbc密碼的密鑰空間的大小達到了16m=24m,24m個密鑰一一對應著24m個變換;通過條件選擇邏輯根據(jù)密鑰值選擇加密變換,密鑰不直接參與求解密文或明文的復雜計算。以上特征使得skrbc密碼具有隨機分組密碼的基本特征,因而具有抗傳統(tǒng)分組密碼攻擊方法攻擊的能力。
3、分組的長度(size)2m和加密的輪數(shù)n可視不同安全級別加以改變,以滿足不同安全級別和算法運行速度的需求。2m和n愈小安全性逾低,其算法運行速度愈快,不同的用戶可視不同的應用場合選定合理的2m和n值。
4、skrbc密碼僅對實現(xiàn)加密運算的隨機分組密碼組件的算法進行了嚴格限定,而對加密過程中的位交換未加嚴格限制。事實上,位交換的目的僅僅是把運算的結果或然性地擴散至其他位,至于如何擴散、擴散效果如何對skrbc密碼的安全性并無實質性影響。
5、skrbc密碼的算法簡單,便于以軟件或硬件高速實現(xiàn)。
總之,較大的密鑰空間、極易的分組長度擴充、隨機分組密碼的基本特征和運行速度較快等特征使得skrbc密碼突破了傳統(tǒng)分組密碼設計的桎梏,尤其是可任意擴展的分組長度是目前為止所有其他分組密碼所不具備的優(yōu)點,也使得skrbc密碼的安全性在理論上沒有止境。希望此密碼的性能得到國家有關部門的審核驗證,并希望其獲得廣泛的應用。
本發(fā)明的主要貢獻
突破傳統(tǒng)分組密碼百年來設計思路的束縛,對理想隨機分組密碼和隨機分組密碼的基本屬性進行了定義和分析證明,提出了一種全新的分組密碼設計方法,即通過選擇邏輯以密鑰值控制選擇不同的加密函數(shù)式,通過函數(shù)式實現(xiàn)對明文進行加密的方法。按照此方法實現(xiàn)的skrbc密碼具有隨機分組密碼的基本特征,具有除窮盡攻擊外抗傳統(tǒng)分組密碼攻擊方法攻擊的能力,為分組密碼的設計開辟了一條全新途徑。
附圖說明
圖1是隨機子分組的邏輯圖,此圖主要用于展示隨機子分組的所有變量(隨機子分組)。
圖2是隨機分組密碼組件的邏輯圖,主要用于展示圖中各個隨機子分組的邏輯關聯(lián)(隨機分組密碼組件)。
圖3是skrbc密碼加密過程的邏輯圖,用于展示加密過程中諸模塊的邏輯次序(加密過程)。
圖4是skrbc密碼解密過程的邏輯圖,用于展示解密過程中諸模塊的邏輯次序(解密過程)。
圖5是skrbc密碼64比特、128比特和256比特分組的基本加密、解密的實驗結果。
圖5(a)64位分組基本加密解密實驗的實驗結果。
圖5(b)128位分組加密解密實驗的實驗結果。
圖5(c)256位分組加密解密實驗的實驗結果。
圖6是skrbc密碼64比特、128比特和256比特分組當一位輸入明文變化后引起密文擴散的實驗結果。
圖6(a)64位分組1位數(shù)據(jù)變化擴散實驗的實驗結果。
圖6(b)128位分組1位數(shù)據(jù)變化擴散實驗的實驗結果。
圖6(c)256位分組1位數(shù)據(jù)變化擴散實驗的實驗結果。
圖7是隨機子分組線性分析的實驗結果。
圖7(a)隨機子分組線性分析
圖7(b)隨機子分組線性分析簡略圖
圖8是skrbc密碼64比特分組線性分析的實驗結果。圖864位分組線性分析的實驗結果。
圖9是skrbc密碼64比特、128比特、256比特分組、aes分組和des分組程序運行速度的實驗結果。
圖9(a)四輪64位分組密碼運行速度測試的實驗結果。
圖9(b)四輪128位分組密碼運行速度測試的實驗結果。
圖9(c)四輪256位分組密碼運行速度測試的實驗結果。
圖9(d)128位aes分組運行速度測試的實驗結果。
圖9(e)64位des分組運行速度測試的實驗結果。