国际数据加密算法IDEA

2019-04-14 08:17发布

(一)  概述 1. IDEA加密算法是一种分组加密算法,IDEA利用128位的密钥对64位明文分组,经过连续加密产生64位的密文分组 2. IDEA算法的混淆特性:       i.     以位为单位的异或,以fun1来表示      ii.     定义在模2^16的模加法运算,其操作数都可以表示16位整数,以fun2来表示    iii.     定义在2^16+1的模乘法运算,用fun3来表示这个函数,因为2^16+1是一个素数,所以对任何数的乘法逆元是存在的,值的一提的是,为了保证即使当0出现在16位操作数也有乘法逆元存在,0被定义为2^16      iv.     以上的3个函数,具有以下的非兼容性可以充分发挥出混淆的特性 a. 三个函数中的任意两个函数,都无法满足分配律 b. 三个函数任意两个函数,都无法满足结合律 c. 在IDEA的算法设计中使用了这三种函数的混合组合来打乱数据,攻击者无法通过化简的方式来分析密文与明文以及密钥之间的关系       v.     IDEA的扩展特性是建立在乘法/加法的基础结构上,这个结构一共有4个16位的输入两个16位的输出,其中两个输入源于明文,另外两个输入是子密钥,源于128位加密密钥,经过分析验证,经过8轮的乘法加法处理可以得到完整的扩散特性 (二)  加密的算法流程 1. IDEA算法包括8轮的重复运算,加上最后的输出变换运算,64位的明文在每一轮中都是被分成4份,每份16位作为一单元来处理,每一轮中有6个不同的子密钥来参与作用,最后的输出变换用了另外的4个子密钥,所以IDEA算法一共用到了52个子密钥,这52个子密钥是由一个128位的加密密钥产生的 2. 每一轮分为两部分。第一部分就是变换运算,利用加法及乘法运算将4份16位的子明文与4个子密钥混合,产生4份16位的输出,这4份输出又两两配对,以逻辑异或将数据混合,产生两份16位的输出,这2份输出连同另外两个子密钥成为第二部分的输入,第二部分即为前面的乘法加法(MA)运算,产生2份16位的输出,MA的输出再与变换运算的输出以异或作用生成4份16位的结果,并作为下一轮的输入 3. 明文在进行了8轮的加密后,仍需进行输出变换运算才能成为最终的密文,这个特殊的安排的目的在于可以使用与加密算法结构相同的解密算法进行解密 4. 子密钥的生成       i.     加密过程一共需要52个子密钥,由一个128位的密钥生成,将128位分成8份,每份16位,其中第一个对应加密密钥最高阶的16位,最后一个对应最低阶的16位,将加密密钥循环左移25位之后,同样的方法可以得到另外的8个子密钥 首发于我的个人网站:  点击打开链接