国际数据加密算法(International Data Encryption Algorithm,简称IDEA)最开始被称为改良建议加密标准(Improved Proposed Encryption Standard,简称IPES),是一种对称密钥分组密码,由著名密码专家James Massey与中国学者来学嘉于1990年提出。IDEA算法的提出是为了取代旧有的数据加密标准DES,但是,现在IDEA被认为是不安全的加密算法。 IDEA的明文和密文分组长度均为64位,密钥长度为128位。IDEA加密算法也属于对合函数,加密和解密共用同一个函数。和其他分组密码类似,IDEA采用基本轮函数进行8轮迭代,最后再经过一个输出变换。 IDEA加密算法将64位的明文M划分为4个子块,每个子块16位,分别记为 ;64位的密文也分为4个子块,每个子块16位,分别记为 。128位的密钥经过子密钥产生算法生成52个16位的子密钥,每一轮加密迭代使用6个子密钥,8轮加密迭代共使用48个子密钥,剩余的4个子密钥用于最后的输出变换。 我们将第r轮加密迭代时使用的第i个子密钥标记为 ;将输出变换使用的第i个子密钥标记为 。 每一轮加密迭代的运算步骤如下所示: (1) 与 执行乘法运算。 (2) 与 执行加法运算。 (3) 与 执行加法运算。 (4) 与 执行乘法运算。 (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)步的结果即为本轮加密迭代的输出结果。除了第8轮加密迭代以外,每一轮还需要将中间两个输出结果进行交换,以作为下一轮加密迭代的输入。 经过8轮加密迭代以后,得到中间输出 ,中间输出再经过输出变换得到 。输出变换的运算过程为: 与 执行乘法运算得到 ; 与 执行加法运算得到 ; 与 执行加法运算得到 ; 与 执行乘法运算得到 。 IDEA的子密钥产生算法。首先将128位的密钥划分为8个子密钥,每个子密钥16位,其中,前6个子密钥标记为 ,供第1轮加密迭代使用,后2个子密钥标记为 ,供第2轮加密迭代使用;然后,将128位的密钥循环左移35位,同样划分为8个子密钥,其中,前4个子密钥标记为 ,供第2轮加密迭代使用,后4个子密钥标记为 ,供第3轮加密迭代使用;如此继续,直到产生全部52个子密钥。
|