DES(Weakkey,X)=X的分析 DES弱密鑰


DES (Weak Key,X)=X
 作者:winndy【FCG】【DFCG】【PYG】
Email:cnwinndy@hotmail.com
完稿時間:2005.12.16
如果有疑問,歡迎大家討論。

這是密碼學開卷考試的一道題目:
在DES中,若K是弱密鑰,證明存在明文X,使DES(K,X)=X。
也就是明文經DES加密后還是明文自身。

一、首先應了解什么是DES弱密鑰。
  
       先從DES的解密說起:
       DES的解密過程,DES的解密過程和DES的加密過程完全類似,只不過將16圈的子密鑰序列K1,K2……K16的順序倒過來。即第一圈用第16個子密鑰K16,第二圈用K15,其余類推。
       如果K16=K1,K15=K2,…,K9=K8,則加密所用的子密鑰與解密所用的子密鑰相同,對一個明文X加密兩次,得到的還是明文X。
       更強的,若K1=K2=…=K16,則加密過程與解密過程完全一樣。
       弱密鑰的定義也就是這樣定義:若k使得加密函數與解密函數一致,則稱k為弱密鑰。
      DES至少有4個弱密鑰,讓我們先來看看子密鑰的產生過程:
      
圖片來自:風雨無阻,《公路坐標計算系統  1.0》。
http://www.pediy.com/bbshtml/BBS5/pediy50649.htm
要了解更詳細的DES的流程,可參考上面的文章,這里只簡要介紹一下。

 

64Bits的密鑰K經PC-1之后,變為56Bits,然后分為高28Bits和低28Bits,分別進行移位。
LSi是循環左移。PC-2是從56Bits中選出48Bits輸出。若C0和D0為全0或全1,則經過移位后顯然不變,於是16個子密鑰都相同。C0和D0是獨立進行移位的,組合一下,就有4個弱密鑰了。因此至少有4個弱密鑰。
(1)K1=…=K16=0x000000000000
(2)K1=…=K16=0xFFFFFFFFFFFF
(3)K1=…=K16=0x000000FFFFFF
(4)K1=…=K16=0xFFFFFF000000

還可以注意到,第一組和第二組是互補的,第三組和第四組也是互補的。
事實上,對於任意密鑰k,我們還有以下關系成立:(DES的互補性)
若y=Des(k,X),則yBar=DES(kBar,XBar)。(后綴Bar表示取補)

二、分析(逆推法)
    
剛拿到這個題目,不知怎么着手。首先想到的是從置換盒SBox着手,
                     DES的加密流程圖
 

因為,如果存在明文X使得f函數的輸出為0,那么由於0 Xor 0=0,0 Xor 1=1,那么若L0=R0,則L1=R2,…。最終必有R16=L0,L16=R0。
事實上,當我把SBox盒為0的情況都列舉出來以后,根據每一種排列情況,看其是否滿足E擴展后的格式,不幸的是,不存在任何X使得f函數的輸出為0。

   回過頭,再仔細觀察DES的加密流程圖,不能忽略這樣一個Xor的基本性質:
      A Xor B=C,則A=B xor C。
同時注意到L(i-1)=Ri ,其中i=1,…,16。
為了簡化討論,可以寫出這樣的序列:
L0,R0,R1,R2,…,R7,R8,…,R16。
不妨記L0=R(-1) ,則有:
   Ri=R(i-2) Xor f(weakkey,R(i-1))     ,其中i=1,…,16。
下面就利用逆向分析法,來求應滿足的關系式:
 
既然L0R0加密后為R16R15,那么我們令R16=L0,R15=R0,然后來求R14看看。
R16=R14 Xor f(weakkey,R15),於是R14=R16 Xor f(weakkey,R15),
=L0 Xor f(weakkey,R0)=R1,繼續推下去,…
R13=R2,…,R8=R7,…。即 ,i=-1,0,…7。
事實上,只要R8=R7,就可以推出其他的等式。很容易就可以證明。
上面,得到了R8=R7是DES(weakkey,X)=X的必要條件。
反過來,給定R8=R7,是否就有DES(weakkey,X)=X成立呢?
答案是肯定的,很容易推出來。

於是,我們可以令L0=R0,經過8圈DES加密過程,再經過IP-1,就可以得到滿足要求的明文X。
我編了一個簡單的程序進行了校驗,結果完全是正確的。
故滿足這樣的要求的明文共有4×(2^32)個。
事實上,利用DES的互補性質,只需生成2×(2^32)個明文,就可以通過取反,得到另外2×(2^32)個明文。

三、小結
    思路很簡單,逆推就可以了,在做注冊機,分析算法后,要經常逆推,得到注冊流程。雖然這么簡單,但我還沒發現周圍的同學有獨立思考出來的,甚至我給了提示,也有人想不出來。我們應該反思一下我們的教育制度了,而且是研究生教育……

 

轉自:http://bbs.pediy.com/showthread.php?threadid=19447


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM