IDEA加密算法是International Data Encryption Algorithm的缩写,即国际数据加密算法,它的原型是1990年由瑞士联邦技术学院X.J.Lai和Massey提出的PES。1992年,Lai和Massey对PES进行了改进和强化,产生了IDEA。这是一个非常成功的分组密码,并且广泛的应用在安全电子邮件PGP中。

IDEA加密算法是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法即可勇于加密,也可用于解密。这是基于“相异代数群上的混合运算”设计思想,算法运用硬件与软件实现都很容易,而且比DES算法在实现上快的多。IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用。

这种算法是在DES算法的基础上发展起来的,例似与三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点,安全性收到威胁。类似于DES,IDEA算法也是一种数据块加密算法,它涉及了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同之处在于,它采用软件实现和采用硬件实现同样快速。由于IDEA算法是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,极大地促进了IDEA算法的发展和完善!

IDEA算法的密钥的产生

IDEA加密算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用于输出变换)。首先,将128-位密钥分成8个16-位子密钥。这些事算法的第一批8个子密钥(第一轮6个,第二轮头两个)。然后,密钥向左环移动x位后再分成8个子密钥。开始4个用在第二轮,后面四个用在第三轮。密钥再次向左环移动25位,产生另外8个子密钥,如此进行指导算法结束。

具体是:IDEA总共进行8轮迭代操作,每轮需要6个子密钥,另外还需要4个额外子密钥,所以总共需要52个子密钥,这52个子密钥都是从128位密钥中扩展出来的。

首先把输入的key分成8个16位的子密钥,1-6号子密钥供第一轮加密使用,7-8号子密钥供第二轮使用,然后把这128位密钥循环左移25位,这样key=k26k27k28k29……k24k25。

把新生成的key在分成8个16位的子密钥,1-4号子密钥供第二轮使用,5-8号子密钥供第三轮加密使用。到此,已经得到了16个子密钥,如此继续,当循环左移了5次之后,已经生成了48个子密钥,还有四个额外的子密钥需要生成,再次把key循环左移25位,选取划分出来的8个16位子密钥的前四个作为那四个的额外加密密钥。至此,供加密使用的52个子密钥生成完毕。

输入的64-位数据分组被分成4个16-位子分组:x1,x2,x3和x4。这4个子分组成为算法的第一轮的输入,总共有8轮。在每一轮中,这4个子分组相互相异或,相乘,相加,且与6个16-位子密钥相异或,相乘,相加。在轮与轮间,第二个和第三个子分组交换。最后输出变换中4个子分组与4个子密钥进行运算。

对于IDEA算法的评价:IDEA算法的密钥长度为128位。设计者尽最大努力使该算法不受差分密码分析的影响,数学家已经证明IDEA算法在其8圈迭代的第4圈之后便不受差分密码分析的影响了。假定穷举法攻击有效的话,那么即使设计一种每秒钟可以试验10亿个密钥的专用芯片,并将10亿片这样的芯片用于此项工作,仍需1013年才能解决问题;另一方面,若用1024片这样的芯片,有可能在一天之内找到密钥,不过人们无法找到足够的硅原子来制造这样一台机器。目前,尚无一片公开发表的视图对IDEA进行密码分析的文章。因此,就现在来看,IDEA算法应该是非常安全的!