IDEA資料加密演算法介紹

gudesheng發表於2008-01-03

IDEA資料加密演算法及實現

 作者:成曉旭

IDEA對稱資料加密演算法,是我2000年剛畢業,工作需要進行資料加密時,學習、實現的第一個標準資料加密演算法,並且此後就深深地迷上了資料加密這個方面,以後連續兩年潛心學習和研究這方面的知識與技術。在此過程中,非常感謝同事李哥對我的大力幫助,並從此成了很好的朋友。

1、   簡介

IDEAInternational 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位,這麼長的金鑰在今後若干年內應該是安全的。

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

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

2、   演算法詳解:

2.1產生金鑰

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

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

首先把輸入的Key分成816位的子金鑰, 1~6號子金鑰供第一輪加密使用,7~8號子金鑰供第二輪使用,然後把這個128位金鑰迴圈左移25位,這樣Key = k26k27k28k24k25

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

輸入的64-位資料分組被分成416-位子分組:xlX2x3x4。這4個子分組成為演算法的第一輪的輸入,總共有8輪。在每一輪中,這4個子分組相互相異或,相加,相乘,且與616-位子金鑰相異或,相加,相乘。在輪與輪間,第二和第三個子分組交換。最後在輸出變換中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


相關文章