IDEA數據加密算法

1、 簡介

IDEA是International Data Encryption Algorithm 的縮寫,是1990年由瑞士聯邦技術學院來學嘉X.J.Lai 和Massey提出的建議標準算法稱作PES( Proposed Encryption Standard) 。Lai 和Massey 在1992 年進行了改進強化了抗差分分析的能力改稱爲IDEA 它也是對64bit大小的數據塊加密的分組加密算法密鑰長度爲128位它基於"相異代數羣上的混合運算"設計思想算法用硬件和軟件實現都很容易且比DES在實現上快的多。IDEA自問世以來,已經經歷了大量的詳細審查,對密碼分析具有很強的抵抗能力,在多種商業產品中被使用。

這種算法是在DES算法的基礎上發展出來的,類似於三重DES。發展IDEA也是因爲感到DES具有密鑰太短等缺點,已經過時。IDEA的密鑰爲128位,這麼長的密鑰在今後若干年內應該是安全的。

類似於DES,IDEA算法也是一種數據塊加密算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。與DES的不同處在於,它採用軟件實現和採用硬件實現同樣快速。

由於IDEA是在美國之外提出並發展起來的,避開了美國法律上對加密技術的諸多限制,因此,有關IDEA算法和實現技術的書籍都可以自由出版和交流,可極大地促進IDEA的發展和完善。

2、 算法詳解:

2.1產生密鑰

算法用了52個子密鑰(8輪中的每一輪需要6個,其他4個用與輸出變換)。首先,將128-位密鑰分成8個16-位子密鑰。這些是算法的第一批8個子密鑰(第一輪六個,第二輪的頭兩個)。然後,密鑰向左環移x位後再分成8個子密鑰。開始4個用在第二輪,後面4個用在第三輪。密鑰再次向左環移25位產生另外8個子密鑰,如此進行直到算法結束。具體是:

IDEA總共進行8輪迭代操作,每輪需要6個子密鑰,另外還需要4個額外子密鑰,所以總共需要52個子密鑰,這個52個子密鑰都是從128位密鑰中擴展出來的。

首先把輸入的Key分成8個16位的子密鑰, 1~6號子密鑰供第一輪加密使用,7~8號子密鑰供第二輪使用,然後把這個128位密鑰循環左移25位,這樣Key = k26k27k28.k24k25。

把新生成的Key在分成8個16位的子密鑰,1~4號子密鑰供第二輪加密使用(前面已經提供了兩個)5~8號子密鑰供第三輪加密使用。到此我們已經得到了16個子密鑰,如此繼續,當循環左移了5次之後已經生成了48個子密鑰,還有四個額外的子密鑰需要生成,再次把Key循環左移25位,選取劃分出來的8個16位子密鑰的前4個作爲那4個額外的加密密鑰.供加密使用的52個子密鑰生成完畢。

輸入的64-位數據分組被分成4個16-位子分組:xl,X2,x3和x4。這4個子分組成爲算法的第一輪的輸入,總共有8輪。在每一輪中,這4個子分組相互相異或,相加,相乘,且與6個16-位子密鑰相異或,相加,相乘。在輪與輪間,第二和第三個子分組交換。最後在輸出變換中4個子分組與4個子密鑰進行運算。

2.2加、解密過程

  在每一輪中,執行的順序如下:

  (1)X1和第一個子密鑰相乘。

  (2)x2和第二個子密鑰相加。

  (3)X3和第三個子密鑰相加。

  (4)x4和第四個子密鑰相乘。

  (5)將第(1)步和第(3)步的結果相異或。 .

  (6)將第(2)步和第(4)步的結果相異或。

  (7)將第(5)步的結果與第五個子密鑰相乘。

  (8)將第(6)步和第(7)步的結果相加。

  (9)將第(8)步的結果與第六個子密鑰相乘。

  (10)將第(7)步和第(9)步的結果相加。

  (11)將第(1)步和第(9)步的結果相異或。

  (12)將第(3)步和第(9)步的結果相異或。

  (13)將第(2)步和第(10)步的結果相異或。

  (14)將第(4)步和第(10)步的結果相異或。

  每一輪的輸出是第(11)、(12)、(13)和(14) 步的結果形成的4個子分組。將中間兩個分組分組交換(最後一輪除外)後,即爲下一輪的輸入。

  經過8輪運算之後,有一個最終的輸出變換:

  (1) X1和第一個子密鑰相乘。

  (2) x2和第二個子密鑰相加。

  (3) x3和第三個子密鑰相加。

  (4) x4和第四個子密鑰相乘。

最後,這4個子分組重新連接到一起產生密文。

2.3密鑰對應圖

2.4加密過程圖

2.5解密過程圖

3、 評價:

IDEA算法的密鑰長度爲128位。設計者盡最大努力使該算法不受差分密碼分析的影響,數學家已證明IDEA算法在其8圈迭代的第4圈之後便不受差分密碼分析的影響了。假定窮舉法攻擊有效的話,那麼即使設計一種每秒種可以試驗10億個密鑰的專用芯片,並將10億片這樣的芯片用於此項工作,仍需1013年才能解決問題;另一方面,若用1024片這樣的芯片,有可能在一天內找到密鑰,不過人們還無法找到足夠的硅原子來製造這樣一臺機器。目前,尚無一片公開發表的試圖對IDEA進行密碼分析的文章。因此,就現在來看應當說IDEA是非常安全的。

並且,IDEA數據比較RSA算法加、解決速度快得多,又比DES算法要相對安全得多。

4、 參考文獻:

《應用密碼學(協議算法與C源程序)》:機械工業出版社

5、 源碼:


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1109279

發佈了12 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章