國際
數據加密算法(IDEA)是瑞士學者X.J Lai與James Massey聯合提出的。它在1990年正式公布并在以后得到增強。這種算法是在DES算法的基礎上發展出來的,類似于三重DES。發展IDEA也是因為感到DES具有密鑰太短等缺點。IDEA的密鑰為128位,這么長的密鑰在今后若干年內應該是安全的。

類似于DES,IDEA算法也是一種數據塊加密算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。與DES的不同處在于,它采用軟件實現和采用硬件實現同樣快速。
?。┰诿艽a學中屬于數據塊加密算法(Block Cipher)類。IDEA使用長度為128bit的密鑰,數據塊大小為64bit。從理論上講,IDEA屬于“強”加密算法,至今還沒有出現對該算法的有效攻擊算法。
早在1990年,Xuejia Lai等人在EuroCrypt’90年會上提出了分組密碼建議PES(Proposed Encryption Standard)。在EuroCrypt’91年會上,Xuejia Lai等人又提出了PES的修正版IPES(Improved PES)。目前IPES已經商品化,并改名為IDEA。IDEA已由瑞士的Ascom公司注冊專利,以商業目的使用IDEA算法必須向該公司申請許可。
IDEA是一種由8個相似圈(Round)和一個輸出變換(Output Transformation)組成的迭代算法。IDEA的每個圈都由三種函數:模(216+1)乘法、模216加法和按位XOR組成。
在加密之前,IDEA通過密鑰擴展(Key Expansion)將128bit的密鑰擴展為52Byte的加密密鑰EK(Encryption Key),然后由EK計算出解密密鑰DK(Decryption Key)。EK和DK分為8組半密鑰,每組長度為6Byte,前8組密鑰用于8圈加密,最后半組密鑰(4Byte)用于輸出變換。IDEA的加密過程和解密過程是一樣的,只不過使用不同的密鑰(加密時用EK,解密時用DK)。
密鑰擴展的過程如下:1. 將128bit的密鑰作為EK的前8byte;2. 將前8byte循環左移25bit,得到下一8byte,將這個過程循環7次;3. 在第7次循環時,取前4byte作為EK的最后4byte;4. 至此52byte的EK生成完畢。
密鑰擴展的過程如表1所示,為了能夠清楚的看出每個8Byte的關系,在表1中用粗線條將將每個8Byte劃分開了.
IDEA算法相對來說是一個比較新的算法,其安全性研究也在不斷進行之中。在IDEA算法公布后不久,就有學者指出:IDEA的密鑰擴展算法存在缺陷,導致在IDEA算法中存在大量弱密鑰類,但這個弱點通過簡單的修改密鑰擴展算法(加入異或算子)即可克服。在1997年的EuroCrypt’97年會上,John Borst等人提出了對圈數減少的IDEA的兩種攻擊算法:對3.5圈IDEA的截短差分攻擊(Truncate Diffrential Attack)和對3圈IDEA的差分線性攻擊(Diffrential Linear Attack)。但作者也同時指出,這兩種攻擊算法對整8.5圈的IDEA算法不可能取得實質性的攻擊效果。目前尚未出現新的攻擊算法,一般認為攻擊整8.5圈IDEA算法唯一有效的方法是窮盡搜索128bit的密鑰空間。
由于IDEA是在美國之外提出并發展起來的,避開了美國法律上對
加密技術的諸多限制,因此,有關IDEA算法和實現技術的書籍都可以自由出版和交流,可極大地促進IDEA的發展和完善。但由于該算法出現的時間不長,針對它的攻擊也還不多,還未經過較長時間的考驗。因此,尚不能判斷出它的優勢和缺陷。