2.2 IDEA 1990年Xuejia Lai(来学加)& J.L.Massey提出 PES ( Proposed Encryption Standard),其后为抵抗差分 分析提高了PES密码算法强度成为IPES ( Improved PES ) 1992年IPES改名为IDEA ( International Data Encryption Algorithm).
IDEA算法中明文和密文长度为64 bit , 密钥长度为128 bit。 IDEA算法同时用于加密和解密。设计IDEA的基本思想是混 合使用三种不同代数群中的运算:在群 中的按位异或 运算、在群 模加 运算和在群 模 乘 运算 (注意:这里 是素数,故该群中同样有 个元素)。通 过对两个16位子块连续使用着三种不相容的群运算获得“混淆” 的作用。上述运算用硬件和软件都容易实现。目前软件实现 的IDEA比DES快两倍。
2.2.1 IDEA加密算法 IDEA输入128位密钥Z,64位明文 ,其中 均为16位。IDEA加密算法中,开头是相同的8轮, 把64位输入转换成4个16位的输出,并且成为下一论的输入。 第8轮的输出作为输出变换的输入,使用4个子密钥 产生最终的密文 。所有子密钥都是有128位密钥 K导出的。
2.2.2密钥扩展方法 IDEA算法中每轮使用6个子密钥 ,共有8轮。 最后产生输出时用4个子密钥 ,总共需要52个 最后产生输出时用4个子密钥 ,总共需要52个 子密钥。IDEA的密钥,生成方法是: (1)秘密选择128位初始密钥K . (2)将K从左到右依次划分成8个16 位 密钥子块分别放入 (3) 重复上一步,直至生成52个16 bit 密钥子块为止.
2.2.3 IDEA解密算法 解密算法本质上与加密过程相同,输入密文 其中 均为16位,输出64位明文 , 其中 均为16位,输出64位明文 , 其中 均为16位。只是使用的解密子密钥 是从加 密子密钥 按下面公式计算出来的 = =
这里 表示 的模 加法的逆 意味着 ,所以 取最后16位, 表示 模 乘 法的逆 ,即 。当 时表示 ,所以 ,当 时,我们先用扩展的Euclidean算 法求出满足 的 。若 > 0,则 否则 。
2.3 RC5算法 RC5是RSA的 Ron.Rivest于1994年设计的一种新的分 组算法。它的前身RC2、RC4分别是可变密钥长度的分 变密钥长度的分组加密算法。一般表示为RC5-w/r/b, 其中 密文长度为2w,其中w = 16,32,64 bit, 轮数r = 0,1,…,255 密钥长度b = 0,1,…,255 byte
人们通常选择RC5-32/12/16。一般对w=32推荐 r=12; w=64 推荐r=16。密文长度为2w,而运算只在w位的字上 执行。它有面向字的体系结构。该算法的特点有: l 安全性依赖于旋转运算和不同运算的混合,它们 是模加法“+”、按位异或、循环左移x<<<y,每次环 的次数都依赖于输入的数据,事先不能预测. l 适合硬件、软件实现,速度非常快.
RC5算法:由密钥扩展算法、加密算法、解密算法组成. 密钥扩展算法—— 使用用户密钥得到长为2r+2个字节的扩展密钥,放入 密钥表S[0],S[1], …,S[2r+1]。要求密钥扩展函数有单向性, 这里介绍它的三个步骤: 将b个字节的密钥K[0],K[1],…,K[b-1]拷贝成 个字节长的矩阵L[0],L[1],…,L[c-1]。没有被填充的全 为0。
2) 利用常数 (大于等于 的最小奇数)和 (大于等于 的最小奇数)获得初始化矩阵S S[0]= ; t = 2r+2 For i=1 to t-1 do S[i]=S[i-1]+ ; 这里 w 16 32 64 B7E1 B7E15163 B7E15162 8AED2A6B 9E37 9E3779B9 9E3779B9 7F4A7C15
3)把用户密钥混入S中 i=j=0; A=B=0; Do 3max(t,c)遍 A=S[i]=(S[i]+A+B)<<<3 B=L[j]=(L[j]+A+B)<<<(A+B); i=i+1 mod t; j=j+1 mod c;
加密算法—— 输入放入两个w bit的寄存器A, B中。 A=A+S[0]; B=B+S[1]; For i=1 to r do A=((A B)<<<B)+S[2i]; B=((B A)<<<A)+S[2i+1]; 得到密文为C=( A, B ) 。
解密算法—— 只将加密算法中模加和左移分别改成模减和右移 For i=r to 1 do B=(B-S[2i+1])>>>A) A A=((A-S[2i])>>>B) B; 最后明文M=(A-S[0] , B-S[1]) ;
2.4 分组密码运行模式 分组密码有四种运行模式: ECB(Electronic Codebook Mode) CBC(Cipher Block Chaining Mode) OFB(Output Feedback Mode) 和u位反馈(FIPS81) CFB(Cipher Feedback Mode)
ECB(Electronic Codebook Mode) 入t个长度为n的明文块 ,输出t个长度为n的密文块, 其中 。解密时 。这种运行 模式有如下性质:
l 在相同密钥K的情况下,相同明文块产生相同的密文。 不能隐藏明文的架构(Pattern). l 明文块改变只引起密文发生变化,其它密文块不发生 变化。明文块重新排序与其相应的密文块也重新排 序。反之亦然。 l 密文块在传输中一位出错,影响且只影响该块解密.
CBC(Cipher Block Chaining Mode) 本模式在加密以前要与前面的密文进行按位加。加 密产生的密文再放入反馈寄存器,准备与下一个明文块 运算。已知初始向量IV和加密密钥K。加密时 , 。解密时 该运行模式有如下性质:
l 在相同密钥和初始向量之下,同样的明文块加密 产生的密文块不同。故能够掩盖明文的数据架构。 l 由于链接机制使密文依赖于以及前面的所有明文。所以密 文的重新排序影响解密,对消息的重发、嵌入、删除敏感 。 l 密文块 传输中一位出错影响 两块正确解密。这 是因为从出错的密文 解密得到随机的 ,而 不是正确解密,它出错的位置与 出错的 位置相同 。
l 具有自同步功能。密文块传输中一位出错影响两块正 确解密。又能正确解密。 l 某明文块的变化引起后面的所有密文块随之发生变化。 这个性质可用于消息认证码(Message Authentication Co de 简称MAC)。令 ,定义是MAC。发送者将 信息与MAC一同发送。接受者用同一个密钥重新构造并 检查是否与接受的MAC相等,以此检验收到消息是否完整。
OFB (Output Feedback Mode) 和u位反馈(FIPS81) 该模式把分组加密算法作为密钥流生成器,输出直接放 入反馈寄存器的同时与明文按位加产生密文。该模式的完 全反馈已经正式成为国际标准化组织的标准(ISO-10116)。 密钥K和长为n的初始向量IV,t个长为m的明文块 产生t个长为m的密文块 。加密过程为 ,最左m位)。解密过程为 ,最左m位)。
美国联邦信息处理标准FIPS81与上面类似,只是先把 移位寄存器 向左移m位,再将 的最左m位作为反 馈放入移位寄存器的右端。OFB运行模式的性质有: l 通过改变初始向量是相同明文加密产生不同的密文 l 明文块 改变只引起密文块 发生变化,其它密 文块不发生变化。一般用于卫星消息发送。
l 将分组加密算法作为一个密钥流发生器,密钥流与明 文、密文无关。所以密钥流可以事先计算。IV不需要保 密。注意如果重新使用原来的密钥时必须改变初始向量。 l 对密文篡改问题难于发现。如果密文传输中一位出错, 解密是仅仅是对应的位不对。错误不会传播。 l 如果密文丢失一位,则因该模式没有自同步能力而全 部混乱。所以系统要严格保持同步 。
CFB(Cipher Feedback Mode) 有延迟。通常r=1或8。这是使用CFB模式最有利。t个长度 为r的明文块 , 长为n的初始向量为IV,密钥为K。 ,最左r位), 该模式有如下性质: l 改变初始向量使得相同的明文加密得到不同的密文。 IV不需要保密 。
l 密文不依赖于明文,也依赖于前面众多明文块。密文 重新排序影响解密。 l 密文块中一位或多位出错,要影响后面 块密文的解 密。直到移出移位寄存时才能恢复正确解密 l 与CBC相似,有自同步性,但必须在 块之后才能恢复 l 适用于用户数据格式(如长度),可以对字符加密
2.5多重加密 为了增加密钥的长度,人们建议将一种分组密码进行级 联(Cascade)。在不同的密钥作用下,连续多次对一组明文 进行加密。通常把这种技术叫多重加密(Multiple Encryption)。这里的问题在于选用的加密算法是否成群, 即是否对于任何 存在 ,使得
对于DES加密算法,一个固定的密钥K定义了从 到 的一个置换。密钥有 个,它可以定义 个置 换。因为由它们生成的群的元素个数至少是 个,所 以它们在合成运算下是不封闭的 。992年Campbell和 Wiener证明了“DES算法不成群”,所以可通过多次使用 DES加密提高安全性。在X9.17,ISO8732标准中都采用 IBM设计的EDE方案。 该方案有2n位密钥。