加密算法

2023-07-16 12:43:48 浏览数 (1)

加密算法

是旅居瑞士中国青年学者来学嘉和著名密码专家J.Massey于1990年提出的。它在1990年正式公布并在以后得到增强。这种算法是在DES算法的基础上发展出来的,类似于三重DES,和DES一样IDEA也是属于对称密钥算法。发展IDEA也是因为感到DES具有密钥太短等缺点,已经过时。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。

类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。

由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,可极大地促进IDEA的发展和完善。

IDEA曾今也是AES算法标准的主要竞争者,其安全性已经在国际密码年会上被证明。

在PGP(pretty good privacy)中,IDEA算法被采用。

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

在每一轮中,执行的顺序如下:(以下表述中的相加指的是两个数mod 2^256 相加,例如:(a b) mod p,其结果是a b算术和除以p的余数,也就是说,(a b) = kp r,则 (a b) mod p =r,又例如对于下列表述中的“(2)X2和第二个子密钥相加”就是指用X2与第二个子密钥的和除以2^16(即65536)后的余数。对于以下表述中的相乘,指的是:(a × b) mod p,其结果是 a × b算术乘法除以p的余数,又例如对于下列表述中的“(1)X1和第一个子密钥相乘。”就是指用X1和第一个子密钥相乘后的积除于(2^16 1)(即65537)后的余数。异或指的是不进位加法。)

(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个子分组重新连接到一起产生密文。

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

解密过程基本上一样,只是子密钥需要求逆且有些微小差别,解密子密钥要么是加密子密钥的加法逆要么是乘法逆。(对IDEA而言,对于模256十1乘,全0子分组用256=-l来表示,因此0的乘法逆是0)。计算子密钥要花点时间,但对每一个解密密钥,只需做一次。

关于IDEA中运用的很多概念,需要参考数论中的知识,如有疑问,可以参考以下资料:计算机密码学(卢开澄著清华大学出版社出版),计算机密码学及其应用,初等数论,数论导引(华罗庚著)等。关于IDEA运用的数学原理,均可在以上资料中获得答案。 作者:bili_58762211140 https://www.bilibili.com/read/cv24944762 出处:bilibili

0 人点赞