基于置換移位的單字節(jié)分組加密方法

為了減少無線傳感器網(wǎng)絡(luò)編碼的冗余字節(jié),提高基于Feistel結(jié)構(gòu)的無線傳感器網(wǎng)絡(luò)分組加密的安全性,提出了一種新的單字節(jié)分組密碼加密方法。那么接下來我就給大家介紹一下這種加密方法。

一、無線傳感器網(wǎng)絡(luò)Feistel結(jié)構(gòu)分組加密算法

基于Feistel結(jié)構(gòu)的WSN分組算法結(jié)構(gòu)如圖1所示。

基于置換移位的單字節(jié)分組加密方法

結(jié)構(gòu)采用了置換和多輪的Feistel結(jié)構(gòu)。輸入的8bit明文分組首先被進(jìn)行單字節(jié)位的置換變換;然后被分成兩個(gè)4bit的Ri、Li(其中i為Feistel加密的輪次,i=1,2,3,4,…,n),再進(jìn)行扎輪的Feistel結(jié)構(gòu)加密,其中每輪的Feistel加密結(jié)構(gòu)如圖2所示。

基于置換移位的單字節(jié)分組加密方法

八比特分組的Feistel結(jié)構(gòu)的處理過程表示為:

基于置換移位的單字節(jié)分組加密方法

其中Ri、Ri-1、Li、Li-1、T都為4bit,走為密鑰,f為加密函數(shù)。其中Feistel加密的最后一輪不進(jìn)行高低半字節(jié)交換;最后再進(jìn)行一次單字節(jié)的置換變換。

二、置換操作

考察單字節(jié)的置換變化。從字節(jié)數(shù)據(jù)A變換到字節(jié)B的置換變換,可以看做是A數(shù)據(jù)的二進(jìn)制位的重新排列,例如,設(shè)字節(jié)A=(abcdejgh)T,B=(dhefgcba)T,其中a、b、c、d、e、f、h、g都取0或1,變換前后A和B字節(jié)中位值為1和0的總數(shù)不變,T表示矩陣轉(zhuǎn)置操作。則這種變換可以表示為:

基于置換移位的單字節(jié)分組加密方法

其中T表示矩陣轉(zhuǎn)置??梢娡ㄟ^變換矩陣P完成了從A到JEI的置換變換:

基于置換移位的單字節(jié)分組加密方法

觀察矩陣P,可見有以下規(guī)律:

(a)P是由1和0組成的矩陣,是由以下8個(gè)向量a1~a8構(gòu)成的矩陣:

基于置換移位的單字節(jié)分組加密方法

(b)P的秩為8,即:

基于置換移位的單字節(jié)分組加密方法

(c)P的n(n為整數(shù))次冪矩陣仍然是由1和0組成的矩陣,且以次冪矩陣的秩也為8:

基于置換移位的單字節(jié)分組加密方法

(d)P的m(m為整數(shù))次冪矩陣可以得到單位矩陣,即:

基于置換移位的單字節(jié)分組加密方法

m稱為矩陣P的生成單位陣次數(shù),E為單位陣。在上面的例子中m=8。

還可以繼續(xù)進(jìn)行類似(2)式的變換操作,例如:

基于置換移位的單字節(jié)分組加密方法

將(2)式代入,則:

基于置換移位的單字節(jié)分組加密方法

通過變換矩陣p2完成了從A到C的置換變換:

基于置換移位的單字節(jié)分組加密方法

進(jìn)而可以繼續(xù)操作,即進(jìn)行變換:

基于置換移位的單字節(jié)分組加密方法

這樣,如果將n(1-m)和P做為密鑰,則得到一種單字節(jié)數(shù)據(jù)的密碼編碼方案。

三、移位操作

移位可以改變數(shù)據(jù)的位置,但數(shù)據(jù)的相鄰關(guān)系不變。為保持移位后數(shù)據(jù)位的不損失,這里的移位操作指循環(huán)移位,包括循環(huán)右移位和循環(huán)左移位。

設(shè):

基于置換移位的單字節(jié)分組加密方法

另設(shè)密鑰為K,移位操作為S(K),其中S(K)為0-1矩陣,移位后為B,則:

基于置換移位的單字節(jié)分組加密方法

從字節(jié)數(shù)據(jù)A變換到字節(jié)B的循環(huán)移位變換,可以看做是將A數(shù)據(jù)的二進(jìn)制位重新排列,例如,設(shè)字節(jié)A=(abcdefgh)T,B=(defghabc)T,多乓中a、b、c、d、e、f、g、h都取0或1,變換前后A和B字節(jié)中位值為1和0的總數(shù)不變。則這種變換可以表示為:

基于置換移位的單字節(jié)分組加密方法

可見Q矩陣與P矩陣具有相同的性質(zhì),也是(4)式向量的一種排列。

同樣可以繼續(xù)下列變換操作:

基于置換移位的單字節(jié)分組加密方法

其中s取1~8的整數(shù)。這樣,如果將s和Q做為密鑰,則也得到一種單字節(jié)數(shù)據(jù)的密碼編碼方案。

四、加密算法設(shè)計(jì)

1、加密方案

由于P和Q性質(zhì)相同,將P和Q矩陣操作合并,就得到:

基于置換移位的單字節(jié)分組加密方法

其中k為密鑰,W為變換密鑰矩陣,W是(4)式向量的一種排列矩陣,與矩陣P和Q性質(zhì)相同。

設(shè)單字節(jié)密文數(shù)據(jù)為A,單字節(jié)密文數(shù)據(jù)為B,則加密過程表示為:

基于置換移位的單字節(jié)分組加密方法

2、解密方案

解密是利用(7)式的特性。已知道密文B,密鑰k和W,則解密操作為:

基于置換移位的單字節(jié)分組加密方法

根據(jù)(7)式,如果:

基于置換移位的單字節(jié)分組加密方法

則(18)式變?yōu)椋?/p>

基于置換移位的單字節(jié)分組加密方法

從而正確得到明文。

五、密鑰分析

密鑰有k、w變換密鑰矩陣W是從(4)式的8個(gè)向量排列得到的矩陣,這8個(gè)向量排列有:8!=40320種,故W矩陣有40320個(gè)。密鑰k是與生成單位陣次數(shù)優(yōu)有關(guān),其取值為k=1~m。

通過統(tǒng)計(jì),得到W矩陣的生成單位陣次數(shù)m有11種可能取值:1~8、10、12、15,其得到的變換矩陣W數(shù)量如表1所示。

基于置換移位的單字節(jié)分組加密方法

每當(dāng)取定一個(gè)m,則密鑰取值為k=1~m,而變換矩陣W就有多種可選。例如取m=8,則奄可以取1~8其中之一,對(duì)應(yīng)的W矩陣有2786種可供選擇。于是,密鑰組合是蚤和W可能取值數(shù)目的乘積。通過計(jì)算可以得到總共的密鑰數(shù)目為:3. 866×10430若采用窮舉法破解,以每秒列舉1020個(gè)密鑰,則需要1.23×1016年才能窮舉完所有密鑰組合??梢娒荑€的安全性比較高。

六、實(shí)驗(yàn)

取密鑰k=9,變換密鑰矩陣W為:

基于置換移位的單字節(jié)分組加密方法

計(jì)算可知道:rank( W)=8。在MATLAB下進(jìn)行加密解密計(jì)算,設(shè)明文A= [11010 llO]r,結(jié)果如圖3、圖4所示。

基于置換移位的單字節(jié)分組加密方法

圖3中明文A先被加密成密文B,然后通過正確密鑰解密得到正確的明文C。圖4中明文A先被加密成密文B。然后通過錯(cuò)誤密鑰解密得到錯(cuò)誤的明文D??梢姡惴軌蛲瓿杉用?。

針對(duì)無線傳感器網(wǎng)絡(luò)等的少量數(shù)據(jù)字節(jié)的密碼編碼,為增強(qiáng)基于Feistel結(jié)構(gòu)的WSN分組加密的安全性,提出了一種新的單字節(jié)密碼編碼算法。加密算法采用單字節(jié)的置換和循環(huán)移位,既可以實(shí)現(xiàn)文件加密,也可以實(shí)現(xiàn)文件解密。

小知識(shí)之Feistel

在密碼學(xué)研究中,F(xiàn)eistel 密碼結(jié)構(gòu)是用于分組密碼中的一種對(duì)稱結(jié)構(gòu)。以它的發(fā)明者 Horst Feistel 為名,而Horst Feistel 本人是一位物理學(xué)家兼密碼學(xué)家,在他為 IBM 工作的時(shí)候,為Feistel 密碼結(jié)構(gòu)的研究奠定了基礎(chǔ)。很多密碼標(biāo)準(zhǔn)都采用了Feistel 結(jié)構(gòu),其中包括DES。Feistel 的優(yōu)點(diǎn)在于:由于它是對(duì)稱的密碼結(jié)構(gòu),所以對(duì)信息的加密和解密的過程就極為相似,甚至完全一樣。這就使得在實(shí)施的過程中,對(duì)編碼量和線路傳輸?shù)囊缶蜏p少了幾乎一半。