idea
資料加密演算法及實現
idea
對稱資料加密演算法,是我
2000
年剛畢業,工作需要進行資料加密時,學習、實現的第乙個標準資料加密演算法,並且此後就深深地迷上了資料加密這個方面,以後連續兩年潛心學習和研究這方面的知識與技術。在此過程中,非常感謝同事李哥對我的大力幫助,並從此成了很好的朋友。 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、
原始碼:
國際資料加密演算法(IDEA)簡介
1.背景與歷史 國際資料加密演算法 international data encryption algorithm,idea 是最強大的加密演算法之一。儘管idea很強大,但不想des那麼普及,原因有兩個 第一,idea受專利的保護,而des不受專利的保護,idea要先獲得許可證之後才能在商業應用程...
資料加密演算法
資料加密演算法 加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 保密性 防止使用者的標識或資料被讀取。資料完整性 防止資料被更改。身份驗證 確保資料發自特定的一方。一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算...
資料加密演算法
1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有 3 其它資料演算法 其它資料演算法包括一些常用編碼演算法及其與明文 ascii unicode 等 轉換等,如base 64 qu...