SEA加密算法
我們今天給大家介紹一種新的分組對稱加密算法- SEA(Smart Encryption Algorithm,即靈巧型加密算法)。其核心是一種基于Markov轉(zhuǎn)移的具有較強非線性的圈函數(shù),其中還蘊含了兩種不相容的群運算,使得算法能達到必要的混亂和擴散。該加密算法全部運算基于字節(jié),占有的存儲量低,故易于軟硬件實現(xiàn),特別適合于智能卡上的運用。
一、 SEA加密算法描述
SEA加密算法主體結(jié)構(gòu)為多輪Feistel網(wǎng)絡(luò)結(jié)構(gòu)。該密碼算法全部運算基于子節(jié),僅有模256加和異或兩種運算。算法的核心部件是B函數(shù),它使得算法具有強非線性特性。以下“+”表示按字節(jié)加(即模256加),“⊕”表示異或。
B函數(shù)的輸入輸出均為8字節(jié),64比特。B函數(shù)的描述為:將輸入的64比特看作是位矩陣,位矩陣的每一行依次對應一個字節(jié)。先根據(jù)輸入的64比特的前3比特(確定行位置)和最后3比特(確定列位置)確定在位矩陣中的一個初始轉(zhuǎn)換點。然后將輸入的64比特分組,每4比特為一組,稱這些分組為轉(zhuǎn)移方向控制組。接下來則從初始轉(zhuǎn)換點開始,按照每組(即轉(zhuǎn)移方向控制組)的值確定的轉(zhuǎn)移方向轉(zhuǎn)移控制規(guī)律見圖1。

從當前比特位轉(zhuǎn)移到新比特位上去,對被歷經(jīng)的比特位取反。每個轉(zhuǎn)移方向控制組對應一次轉(zhuǎn)移操作。轉(zhuǎn)移操作越界時在位矩陣的邊界處反射。反復進行上述操作直到轉(zhuǎn)移操作次數(shù)達到給定要求。本加密算法中要求轉(zhuǎn)移次數(shù)最少為16次,推薦使用32次。達到給定的轉(zhuǎn)移次數(shù)后,當前的位矩陣即為B函數(shù)的輸出。B函數(shù)的數(shù)學描述式為:
![]()
其中Dci=a4i-4a4i-3a4i-2 a4i-1為第i次轉(zhuǎn)移時的轉(zhuǎn)移方向控制組,C為取反操作,t(t≥16)為轉(zhuǎn)移的總次數(shù)。操作過程中,若i> 16,則i=i- 16 。
例如:設(shè)當前的轉(zhuǎn)移方向控制組Dci=1 001,則在圖1中,本次轉(zhuǎn)移將從中心點跳轉(zhuǎn)到標注為“11"的比特位上,且該比特位取反。接著下一次的轉(zhuǎn)移將以“11”點為中心向它周圍的16個方向之一跳轉(zhuǎn)。
從B函數(shù)的描述可以看出,輸入的64bit中若有一個比特位發(fā)生變化,則受該比特位所在的轉(zhuǎn)移控制分組的影響,之后的所有轉(zhuǎn)移操作所歷經(jīng)的比特位將發(fā)生變化,這就使得輸入的一個比特位變化將對輸出的多個比特位產(chǎn)生影響,輪迭代時就能更快的產(chǎn)生雪崩效應。
設(shè)X,Y,分別為8字節(jié)的二進制數(shù)據(jù)塊。令Y=(X0,X1,…,X7),Y=(Yo,Y1,∧,Y7)定義圈函數(shù)f為:
![]()
由B函數(shù)的定義可知,B函數(shù)的實質(zhì)即是產(chǎn)生一個隨機數(shù)并與輸入相異或,即B(X)=X⊕Rnd( X)。那么f函數(shù)可等價描述為:
![]()
可見f函數(shù)中包含了按字節(jié)加(即模256加)和異或(即模2加)兩種不相容的群運算。這使得算法具有較強的置亂效果。
加密過程:
SEA的加密為r輪Feistel網(wǎng)絡(luò)結(jié)構(gòu)加密。
在加密的第i輪中,令輸人為Li,Ri(各8字節(jié)),輪子密鑰為Rk。,輪子密鑰長度為64bit。注意,r輪后輸出的左右兩半部分不交換。有:
![]()
解密過程:解密過程是加密過程的逆。由Feistel網(wǎng)絡(luò)結(jié)構(gòu)可知,解密時顛倒白化子密鑰和輪子密鑰順序,加密即變成解密。具體過程不再詳述。
密鑰的擴展方案:本加密算法可選的種子密鑰長度分別為128bit,192bit和256bit。
進行密鑰編排時,令LengthOfKey為種子密鑰長度,取l= LengthOfKey/64。r為Feistel網(wǎng)絡(luò)結(jié)構(gòu)加密輪數(shù)。三種密鑰長度下r分別取值6,9和12。Rki為輪子密鑰。有:

二、雪崩效應測試
好的加密算法應使密文的每一位和明文以及密鑰的每一位有關(guān),即當明文或密鑰有一個比特位發(fā)生變化時,密文應有半數(shù)左右的比特位發(fā)生變化,這就是所謂的雪崩效應。對本算法進行明文的雪崩效應測試時,隨機選擇10 000個明文分組,用幾個不同的密鑰加密,對每個明文分組變化1bit后加密所得的密文進行x2擬合優(yōu)度檢定。同理,進行密鑰的雪崩效應測試時,隨機選擇10 000個密鑰對幾個不同的明文加密,對每個密鑰變化lbit后加密所得的密文進行x2擬合優(yōu)度檢定。加密時選擇128bit長的種子密鑰。在不同的顯著性水平下,檢定達到擬合優(yōu)度的分組數(shù)百分比(設(shè)為λ)。二者的測試結(jié)果如表1、表2。


三、速度測試
在主頻為Pentium - 266MHz的計算機上用ANSIC編寫的加解密程序進行速度測試。測試結(jié)果如下,見表3。

本加密算法的最大特點在于描述簡單,沒有復雜難懂的計算,這樣不僅利于軟硬件實現(xiàn),而且有利于算法的安全性分析。從雪崩效應測試的結(jié)果來看,本算法具有良好的明文雪崩效應和密鑰雪崩效應,這得益于圈函數(shù)的非線性特性設(shè)計,它能使輸入的一個比特位變化將在2輪迭代后影響輸出的每一位,因此算法經(jīng)過較少輪數(shù)的迭代后就能達到較高的安全性。但根據(jù)速度測試的結(jié)果來看,本算法的加解密速度與現(xiàn)有的分組算法相比不是很快,而且當B函數(shù)中轉(zhuǎn)移次數(shù)較大時,加解密速度將進一步受到影響,因此在追求安全性和高效性時,不得不作個折衷。
小知識之雪崩效應
雪崩效應就是一種不穩(wěn)定的平衡狀態(tài)也是加密算法的一種特征,它指明文或密鑰的少量變化會引起密文的很大變化,就像雪崩前,山上看上去很平靜,但是只要有一點問題,就會造成一片大崩潰。 可以用在很多場合對于Hash碼,雪崩效應是指少量消息位的變化會引起信息摘要的許多位變化。










