- 1
- 0
- 约5.13千字
- 约 36页
- 2019-10-27 发布于福建
- 举报
密码编码学与网络安全 福州大学软件学院 林宇峰 Lin_yf@ 分组密码原理 现在使用的大多数对称分组密码加密算法都是基于Feistel分组密码结构。 流密码和分组密码 流密码:每次加密数据流的一位或一个字节 vigenere密码和vernam密码(古典) 分组密码:将一个明文组作为整体加密,并且通常得到的是与之等长的密文组。(典型的有64位和128位,应用更加广泛些,常规的加密通常应用到分组加密,这是本书讨论的内容) 注:第六章会提到两者的等效问题。 Feistel设计的动机 可逆与不可逆 变换(映射)的总数:2n! N=4的一个普通代换密码结构 矛与盾 较小的分组: 1.密码系统等价于传统的代换密码 2.利用统计分析法破解(轻而易举) 3.脆弱性的来源:小,而非代换 4.若n充分大,且有可逆变换,掩盖统计学特征 大规模分组 1.密钥的确定 n=4 :4*16=64;n=64:64*264=270 密钥长度 : n*2n,变换为2n! Feistel设想 n很大时,近似一个理想分组密码,使之能够用容易的部分组合起来。 思想:用乘积密码的方式近似简单的替代密码 乘积密码:以某种方式连续使用多个密码,使所得的结果比使用单一密码的强度更大。(实质) 扩散和混淆 扩散与混淆 理想密码:密文的所有统计特征多与所用的密钥 无关 扩散:明文的统计学特征在密文中消失。 1. 让每个明文数字尽可能多得去影响密文(等价) 2. 使得密文中的单、双字母的频率接近于平均 混淆:尽可能的是密文和密钥之间的关系变复杂,阻止攻击者发现密钥。 本质性的体现。 Feistel(DES)加密框架 明文分组的长n=2w 分左右两半L0 R0 密钥K产生子钥:K→k1,k2,…,kr r是轮数,比如16轮 ⊕是异或函数XOR p⊕x⊕x = p 函数F是散列混乱函数 可以是手工精心构造的查表函数 Feistel网络 Feistel解密 Feistel – ‘for’ Loop 加密计算序列 L0=左半 R0=右半 L1=R0 R1=L0⊕F(k1,R0) L2=R1 R2=L1⊕F(k2,R1) L3=R2 R3=L2⊕F(k3,R2) … Li=Ri-1 Ri=Li-1⊕F(ki,Ri-1) … Ln=Rn-1 Rn=Ln-1⊕F(kn,Rn-1) 密文即(Ln,Rn) 解密计算 2轮解密举例 假设n=2轮,C =(L2,R2) 加密 明文=半+半=L0+R0 L1=R0 R1=L0⊕F(k1,R0) L2=R1 R2=L1⊕F(k2,R1) 解密 密文=半+半=L2+R2 R1=L2 L1=R2⊕F(k2,R1) R0=L1 L0=R1⊕F(k1,R0) 明文=L0+R0 Feistel参数特性 分组大小 密钥大小 循环次数 一般仅几轮是不够的,得十几轮才好,如16轮 子钥产生算法 越复杂越好 轮函数Round 关键 其他考虑 速度(尤其是软件实现的速度) 便于分析(使用简洁的结构) 数据加密标准DES DES是为美国政府研制的,并建议普通大众采用 它已经被美国和其他一些国家作为官方加密标准 很多软件和硬件加密系统都是根据DES进行设计 然而,人们开始对其充分性(即安全性)开始表示怀疑(在1977年,Diffie和Hellman提出,56位密钥过于短小。) 谈谈历史 20世纪70年代NBS的意识 国防部和联邦政府的任务委派给NBS 同时,几家主要的软硬件公司也在研制加密设备,有通过软硬件进行实现的。问题:产生了加密技术商业增值的难度,这个难度在于“交换” 两个设备用户无法交换他们的加密信息。 很快人们明白了,加密应该被…… 号召的发起 NBS在1972年发出号召,征集制定公开加密算法的意见,并提出了算法的标准: 1. 能提供高度的安全性,说明详细且易于理解 2. 可发布,这样安全性不依赖于算法的保密性 3. 可用于所有用户 4. 可适用于不同的应用 5. 用电子设备实现起来比较经济 6. 使用有效 7. 可验证,可输出等 NBS原本的打算……,IBM的Lucifer算法 IBM的Lucifer算法 20世纪60年代后期,IBM成立了计算机密码学研究项目,并在1971年研制成功Lucifer算法 Lucifer算法是分组长度为64位,密钥长度为128位,具有Feistel结构的分组密码。 Lucifer修订版本:为了能够适合芯片的实现,同时抗击密码分析的能力更为
原创力文档

文档评论(0)