IDEA加密算法簡析

IDEA加密算法是International Data Encryption Algorithm的縮寫,即國際數(shù)據(jù)加密算法,它的原型是1990年由瑞士聯(lián)邦技術(shù)學(xué)院X.J.Lai和Massey提出的PES。1992年,Lai和Massey對PES進行了改進和強化,產(chǎn)生了IDEA。這是一個非常成功的分組密碼,并且廣泛的應(yīng)用在安全電子郵件PGP中。

IDEA加密算法是一個分組長度為64位的分組密碼算法,密鑰長度為128位,同一個算法即可勇于加密,也可用于解密。這是基于“相異代數(shù)群上的混合運算”設(shè)計思想,算法運用硬件與軟件實現(xiàn)都很容易,而且比DES算法在實現(xiàn)上快的多。IDEA自問世以來,已經(jīng)經(jīng)歷了大量的詳細審查,對密碼分析具有很強的抵抗能力,在多種商業(yè)產(chǎn)品中被使用。

這種算法是在DES算法的基礎(chǔ)上發(fā)展起來的,例似與三重DES。發(fā)展IDEA也是因為感到DES具有密鑰太短等缺點,安全性收到威脅。類似于DES,IDEA算法也是一種數(shù)據(jù)塊加密算法,它涉及了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。與DES的不同之處在于,它采用軟件實現(xiàn)和采用硬件實現(xiàn)同樣快速。由于IDEA算法是在美國之外提出并發(fā)展起來的,避開了美國法律上對加密技術(shù)的諸多限制,因此,有關(guān)IDEA算法和實現(xiàn)技術(shù)的書籍都可以自由出版和交流,極大地促進了IDEA算法的發(fā)展和完善!

IDEA算法的密鑰的產(chǎn)生

IDEA加密算法用了52個子密鑰(8輪中的每一輪需要6個,其他4個用于輸出變換)。首先,將128-位密鑰分成8個16-位子密鑰。這些事算法的第一批8個子密鑰(第一輪6個,第二輪頭兩個)。然后,密鑰向左環(huán)移動x位后再分成8個子密鑰。開始4個用在第二輪,后面四個用在第三輪。密鑰再次向左環(huán)移動25位,產(chǎn)生另外8個子密鑰,如此進行指導(dǎo)算法結(jié)束。

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

首先把輸入的key分成8個16位的子密鑰,1-6號子密鑰供第一輪加密使用,7-8號子密鑰供第二輪使用,然后把這128位密鑰循環(huán)左移25位,這樣key=k26k27k28k29……k24k25。

把新生成的key在分成8個16位的子密鑰,1-4號子密鑰供第二輪使用,5-8號子密鑰供第三輪加密使用。到此,已經(jīng)得到了16個子密鑰,如此繼續(xù),當循環(huán)左移了5次之后,已經(jīng)生成了48個子密鑰,還有四個額外的子密鑰需要生成,再次把key循環(huán)左移25位,選取劃分出來的8個16位子密鑰的前四個作為那四個的額外加密密鑰。至此,供加密使用的52個子密鑰生成完畢。

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

對于IDEA算法的評價:IDEA算法的密鑰長度為128位。設(shè)計者盡最大努力使該算法不受差分密碼分析的影響,數(shù)學(xué)家已經(jīng)證明IDEA算法在其8圈迭代的第4圈之后便不受差分密碼分析的影響了。假定窮舉法攻擊有效的話,那么即使設(shè)計一種每秒鐘可以試驗10億個密鑰的專用芯片,并將10億片這樣的芯片用于此項工作,仍需1013年才能解決問題;另一方面,若用1024片這樣的芯片,有可能在一天之內(nèi)找到密鑰,不過人們無法找到足夠的硅原子來制造這樣一臺機器。目前,尚無一片公開發(fā)表的視圖對IDEA進行密碼分析的文章。因此,就現(xiàn)在來看,IDEA算法應(yīng)該是非常安全的!