1. 背景與歷史
國際資料加密演算法(international data encryption algorithm,idea)是最強大的加密演算法之一。
儘管idea很強大,但不想des那麼普及,原因有兩個:第一,idea受專利的保護,而des不受專利的保護,idea要先獲得許可證之後才能在商業應用程式中使用;第二,des比idea具有更長的歷史和跟蹤記錄。
2. idea的工作原理
2.1 基本原理
idea是塊加密,與des一樣,idea也處理64位明文塊。但是,其金鑰更長,共128位。和des一樣,idea是可逆的,即可以用相同的演算法加密和解密。idea也用擴充套件與混淆進行加密。下圖顯示了idea的工作方法:
64位輸入明文塊分成4個部分(各16塊)p1~ p4。p1~ p4是演算法的第一輪輸入,共8輪。金鑰為128位,每一輪從原先的金鑰產生6個子金鑰,各位16位。這個6個子金鑰作用於4個輸入塊p1~ p4。第一輪,有6個金鑰k1~ k6;第二輪,有6個金鑰k7~ k12;最後,第8輪,有6個金鑰k43~ k48。最後一步是輸出變換,只用4個子金鑰(k49~ k52)。產生的最後輸出是輸出變換的輸出,為4個密文塊c1~ c4(各為16位),從而構成64位密文塊。
2.2 輪次
idea中有8輪,每一輪位6個金鑰對4個資料塊的一系列操作。廣義上看這些步驟如下圖所示:
我們對上圖進行符號化,描述的步驟與前面一樣,輸入塊表示為p1~ p4,子密碼表示為k1~ k6,這個步驟的輸出表示為r1~ r4,而不是c1~ c4,因為這不是最終密文,只是中間輸出,要在後面的各輪和輸出變換中處理。其示意圖如下:
注意,在add和multiply後面加上星號,使其變成add∗
*∗和multiply∗
*∗,因為這不只是加和乘,而是加後用2
162^
216求模,乘後用216+
12^+1
216+
1求模。idea採用求模演算法,保證即使兩個16位數加或者相乘的結果超過17位,也能縮減到16位。
2.3 子金鑰生成
idea每一輪需要6個子金鑰(因此8輪共需要48個子金鑰),最後輸出變換使用4個子金鑰(共需要52個子金鑰)。從128位的輸入金鑰得到52位子金鑰,其前兩輪的做法如下(根據前兩輪的做法,可以得到後面各輪的子金鑰表): 輪次
子金鑰生成過程
1使用原始128位金鑰的1~ 96位,從而在第一輪中有6個子金鑰k1~ k6。97~ 128位留給下一輪用
2第一輪未用的97~ 128位用作本輪的k1和k2。原始金鑰進行25位移位,如上面所述。移位後,前64位用作本輪的子金鑰k3~ k6。剩下的65~ 128位留給下一輪用
3上一輪未用的65~ 128位用作本輪的k1~ k4。金鑰用完後,再進行一次25位移位,移位後的金鑰的1~ 32位用作本輪的子金鑰k5和k6。剩下的33~ 128位留給下一輪用
4上一輪未用的33~ 128位正好用作本輪的6個子金鑰。此時沒有未用的位了。然後,對當前金鑰再進行移位
5本輪類似於第一輪。本輪使用當前金鑰的1~ 96位。97~ 128 位留給下一輪用
6上一輪未用的97~ 128位用作本輪的k1和k2。原始金鑰進行25位移位,如上面所述。移位後,前64位用作本輪的子金鑰k3~ k6。剩下的65~ 128位留給下一輪用
7上一輪未用的65~ 128位用作本輪的k1~ k4。金鑰用完後,再進行一次25位移位,移位後的金鑰的1~ 32位用作本輪的子金鑰k5和k6。剩下的33~ 128位留給下一輪用
8上一輪未用的33~ 128位正好用作本輪的6個子金鑰。此時沒有未用的位了。然後,對當前金鑰再進行移位,用作輸出變換
2.4 輸出變換
輸出變換只進行一次,在第8輪結束時發生。當然輸出變換的輸入是第8輪的輸出。64位值分為四個子塊(r1~ r4,各16位),另外,這裡採用四個子金鑰,而不是六個。其過程如下圖所示:
對上圖進行符號化,可以得到輸出變換的框圖,如下圖所示:
這個過程得到最終的64位密文,是由4個密文塊c1~ c4組合而成的。
2.5 輸出變換的子金鑰生成過程
輸出變換的子金鑰生成過程與上面8輪的金鑰生成過程差不多。第8輪結束時,剛好用完金鑰,因此輸出變換過程首先要對金鑰進行25位迴圈左移。第8輪的結束位為125,經過25位移位後,新的開始位置位23,結束位置為22。由於輸出變換過程只要四個金鑰,各16位,共64位,因此使用23到86位。其餘的87~ 128和1~ 22位不用,將其放棄。
2.6 idea解密
解密過程與加密過程完全相同,只是子金鑰的生成與模式有所不同。解密子金鑰實際上是加密子金鑰的逆。
2.7 idea的強度
idea使用128位金鑰,是des金鑰長度的兩倍,因此破譯idea,紀要進行2
1282^
2128
次加密運算,去的正確的金鑰只要平均搜尋一半的金鑰空間,每微秒執行一次idea加密的計算機也要5 400 000 000 000 000 000 000 000年才能破解idea。
IDEA資料加密演算法介紹
idea 資料加密演算法及實現 idea 對稱資料加密演算法,是我 2000 年剛畢業,工作需要進行資料加密時,學習 實現的第乙個標準資料加密演算法,並且此後就深深地迷上了資料加密這個方面,以後連續兩年潛心學習和研究這方面的知識與技術。在此過程中,非常感謝同事李哥對我的大力幫助,並從此成了很好的朋友...
資料加密演算法
資料加密演算法 加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 保密性 防止使用者的標識或資料被讀取。資料完整性 防止資料被更改。身份驗證 確保資料發自特定的一方。一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算...
資料加密演算法
1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有 3 其它資料演算法 其它資料演算法包括一些常用編碼演算法及其與明文 ascii unicode 等 轉換等,如base 64 qu...