- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
math@jnu 一、分组密码概述 代换网络 Feistel网络框图 Feistel网络参数 Feistel网络的实现与以下参数和特性有关: ① 分组大小: 分组越大则安全性越高,但加密速度就越慢。分组密码设计中最为普遍使用的分组大小是64比特。 ② 密钥大小:密钥越长则安全性越高,但加密速度就越慢。现在普遍认为64比特或更短的密钥长度是不安全的,通常使用128比特的密钥长度。 ③ 轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。典型地,轮数取为16。 ④ 子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。 ⑤ 轮函数:轮函数的复杂性越大,密码分析的困难性也越大。 Feistel网络实现 在设计Feistel网络时,还有以下两个方面需要考虑: ① 快速的软件实现:在很多情况中,算法是被镶嵌在应用程序中,因而无法用硬件实现。此时算法的执行速度是考虑的关键。 ② 算法容易分析:如果算法能被无疑义地解释清楚,就可容易地分析算法抵抗攻击的能力,有助于设计高强度的算法。 Feistel解密结构 Feistel解密过程本质上和加密过程是一样的,算法使用密文作为输入,但使用子密钥Ki的次序与加密过程相反,即第1轮使用Kn,第2轮使用Kn-1,……,最后一轮使用K1。这一特性保证了解密和加密可采用同一算法。 Feistel加解密结构 二、DES密码算法 初始置换 轮变换框图 ②密钥加密运算 ②密钥加密运算。将子密钥产生器输出的48 bit子密钥ki与选择扩展运算E输出的48 bits数据按位模2相加。 DES的S盒定义 DES的S盒定义 ⑤左右混合运算 ⑤左右混合运算:前面四步运算就组成了Feistel网络的轮函数F(Ri-1, Ki),左右混合运算就是如下的运算。 Li =Ri-1 Ri =Li-1?F(Ri-1, Ki) 轮变换框图 密钥的产生 子密钥产生器 将64 bit初始密钥经过置换选择PC1、循环移位置换LSi、置换选择PC2给出每次迭代加密用的子密钥Ki。共生成16个子密钥。 移位次数表 第i次迭代 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 循环左移次数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 置换选择1 置换选择1: PC-1 64位密钥K的第8, 16, 24,…,64位共8位是奇偶校验位, 其余56位作为密钥用. 选择K的第57,49,…位共28位作为密钥段C0;选择K的第63,55,…位共28位作为密钥段D0. 循环左移 循环左移LSi 将28位的密钥段作为Ci,Di循环左移1或2位,左移位数由下表确定. 置换选择2 置换选择2: PC-2 从56位密钥段Ci||Di中选择48位作为子密钥Ki. DES解密算法 与DES加密结构相同 子密钥使用次序相反: K16,K15,…,K2,K1 输入:密文y 输出:明文x DES的安全性 DES的安全性 1991年研究表明DES搜索机成本如下。 DES密码练习 将你的学号的后3位转换为2进制数,并在前面补0得到32比特的二进制串。 假设在DES加密的第i轮中,Li-1和Ri-1都等于上面的32比特串,Ki等于“crypto”的ASCII码(其16进制表示为63 72 79 70 74 6F)这个48比特串,计算Li和Ri。 三、分组密码的分析 DES差分分析 对DES中的非线性的S盒的分析 S盒输入为6比特,输出为4比特,设为s(x); 选择二进制数a, b和c都为6比特,d为4比特; a?b=c,则s(a)?s(b) = d的概率远远大于1/16(抗差分攻击的分组密码此概率恒等1/2n,n为S盒输出位数); 由此性质可得部分密钥的信息,通过穷举就可以得出密钥。 DES差分分析 线性密码分析 假设条件 设明文分组长度和密文分组长度都为n比特,密钥分组长度为m比特; 明文:P[1],…,P[n];密文:P[1],…,P[n];密钥:K[1],…,K[m]。 定义 A[i,…,j] = P[i]⊕…⊕P[j] 线性分析的目标 找出有效的线性方程:P[i1,…,ia]⊕C[j1,…,jb] = K[k1,…,kc]; 上面的线性方程将得到一个位,这一位是将密钥的一些位进行异或运算的结果。 线性密码分析 方程成立的概率p(如果p≠1/2,那么就可以使用该偏差,用得到的明文及对应的密文来猜测密钥的位值) 如
原创力文档


文档评论(0)