分組密碼的工作模式之 多重加密與三重DES算法
DES在窮舉攻擊下相對脆弱,使用DES進行多次加密且使用多個密鑰的方式是能夠保護已有軟硬件的投資的較好方式。本文從簡單的雙重密鑰開始,直到最廣泛應用的三重DES(3DES)算法。
雙重DES
給定明文P及密鑰K1,K2,密文C的生成如下:C = E( K2, E( K1, P ) )
解密時逆序使用這兩個密鑰:
P = E( K1, E( K2, C ) )
在這種情況下有人發問:對所有56位密鑰,給定K1, K2,可能存在密鑰K3使得:
E(K2, E( k1, P ) ) == E( K3, P )
如果這種說法成立的話,那麼多重加密是沒有意義的。書中給出了證明這種說法錯誤的解釋,奈何我沒看懂。先貼上記下:
注:非常感謝西電睿思論壇某同學的解釋,現貼如下:
雙重DES加密圖解:
對應攻擊方法
- 中間相遇攻擊
這種攻擊不依賴於DES的任何特殊性質,對所有分組密碼都有效。
假設:C = E( K2, E(K1, P ) )
則有:X = E( K1, P ) = D( K2, C )
於是,攻擊就很顯而易見了:
簡單來說就是你知道一對對應的明文(P)和密文(C),那麼用所有可能的密鑰K1對明文P加密並存到一個表中,然後用所有可能的密鑰K2對密文C解密,將每次解密結果和表中的值一一比較,如果相等就用這一對K1,K2對新的明密文驗證,如果成功則得到正確的密鑰對。
經驗證該種破解方法比攻擊單DES付出的代價高不了多少。- 中間相遇攻擊
2. 使用兩個密鑰的三重DES
具體過程爲加密-解密-加密(EDE):
C = E( K1, D( K2, E( K1, P ) ) )
P = D( K1, E( K2, D( K1, C ) ) )
對應攻擊方法
暫時還沒有可行的攻擊方法。3. 使用三個密鑰的三重DES
三密鑰的三重DES密鑰長度位168位,定義爲:C= E( K3, D ( K2, E( K1, P ) ) )
想要和單DES兼容只需設K3=K2,或者令K1=k2即可。
圖解如下:
總結:
該部分簡單介紹了多重加密和已經廣泛應用的三重DES算法。該系列僅限於普及知識點,若想深入瞭解還需繼續閱讀相關書籍。加油吧!