06现代密码学理论与实践--其他加密技术

本章主要讲述其他加密技术,主要包括有:多重加密与三重DES算法,如双重DES, 三重DES和使用三个密钥的三重DES;分组密码的工作模式,如电子密码本模式,密文分组链接模式,密码反馈模式,输出反馈模式和计数器模式;流密码和RC4算法
展开查看详情

1.Fifth Edition by William Stallings 苗付友 mfy@ustc.edu.cn 2016 年 10 月 现代密码学理论与实践 第 6 章 其他加密技术

2.本章要点 多重加密是将一个加密算法多次使用的技术,明文通过加密算法转化为密文,然后将该密文作为输入重新执行加密算法,该过程可以重复多次。 三重 DES(3DES) 在三个阶段使用 DES 算法,共用到两组或三组密钥。 选择工作模式是一项增强密码算法或者使算法适应具体应用的技术。 对称密码有 5 种工作模式 ,电码本模式、密文分组链接模式、密文反馈模式、输出反馈模式和计数器模式。 流密码 是一种对称密码算法,其输出密文是由输入明文逐位或者逐字节产生的, RC4 是应用最广泛的一种流密码。

3.本章目录 6.1 多重加密与三重 DES 算法 6.1.1 双重 DES 6.1.2 三重 DES 6.1.3 使用三个密钥的三重 DES 6.2 分组密码的工作模式 1 )电子密码本模式 2 )密文分组链接模式 3 )密码反馈模式 4) 输出反馈模式 5) 计数器模式 6.3 流密码和 RC4 6.3.1 流密码 6.3.2 RC4 算法

4.6.1 多重加密与三重 DES 算法 寻找代替 DES 的新密码的理由是显然的 理论分析已经证明 DES 是可破的 密钥的穷举攻击是可行的 AES 是一种新的安全的密码 在 AES 之前,还可以用 DES 进行多次加密,且使用多个密钥 三重 DES(Triple-DES) 被广泛接受

5.6.1.1 双重 DES 多次加密的最简单形式是进行两次加密,每次使用不同的密钥 双重 DES (Double DES) 给定明文 P 和加密密钥 K 1 和 K 2 , 加密: C=E K2 [E K1 [P]] 解密: P=D K1 [D K2 [C]] 密钥长度为 56x2=112 位 存在中途相遇攻击问题

6.6.1.1 双重 DES 中途相遇攻击 “ meet-in-the-middle” 只要连续使用密码两次,这种攻击总是有效,因为 X = E K1 (P) = D K2 (C) 用所有可能的密钥加密明文 P 并把结果按顺序存储起来 然后用所有可能的密钥解密密文 C ,寻找匹配的 X 值 因此复杂度只有 O(2 56 )

7.这种攻击对使用两次加密的分组密码都有效 C=E K2 [E K1 [P]] ,则 X=E K1 [P]=D K2 [C] 若已知 (P, C) ,则 对 2 56 个可能的 K 1 加密 P ,结果存入表中,按 X 值排序 对 2 56 个可能的 K 2 解密 C ,在表中寻找匹配 如果产生匹配,则用一个新的明文密文对检测所得两个密钥 如果两密钥产生正确的密文,则接受为正确密钥 对任意给定的明文 P ,双重 DES 产生的密文有 2 64 可能,密钥空间为 2 112 。对给定明文 P ,可产生给定密文 C 的密钥的个数平均为 2 112 /2 64 =2 48 。上述攻击过程对第一个 (P,C) 对将产生 2 48 个错误的结果,而对第二个 (P,C) 对,错误结果的概率就降为 2 48-64 =2 -16 ,即中途相遇攻击使用两组已知明密文对就可以检测到正确密钥的概率是 1-2 -16 ,攻击双重 DES ,工作量仅为 2 56 ,与攻击单 DES 所需的 2 55 差不多。 注释: 1 )按 X 值排序,则产生相同 X 值的不同( K1,K2 )组合将汇聚在一起 , 方便利用第 2 个明文密文对对这些密钥进行进一步测试。 2) 关于 2 -16 :对于每个特定的( K1,K2 ),将第 2 个明文 P 加密为特定密文 C 的概率为 1/2 64 ,共有大约 2 48 个错误密钥,因此出错的概率就是 2 48-64 =2 -16 中途相遇攻击 (Meet-in-the-Middle Attack)

8.6.1.2 三重 DES 使用两个密钥进行三次加密: E-D-E sequence C=E K1 [D K2 [E K1 [P]] 如果 K1=K2 ,则相当于单次 DES 已被用于密钥管理标准 ANSI X9.17 和 ISO8732 当前还没有对三重 DES 的可行攻击方法

9.对三重 DES 的已知明文攻击

10.6.1.3 使用三个密钥的三重 DES 虽然对于使用两个密钥的 Triple-DES 还没有实际的成功攻击,但是仍然令人有些担心 因此可以考虑使用三个密钥的 Triple-DES ,这样,密钥的长度就是 168 位 C = E K3 [D K2 [E K1 [P]]] 使用三个密钥的 Triple-DES 如今已被广泛采用,如 PGP, S/MIME 当然还有使用更多重 DES 的,如 5DES

11.6.2 分组密码的工作模式

12.1 )电子密码本模式 Electronic Codebook, ECB 明文分成 64 的分组进行加密,必要时填充,每个分组用同一密钥加密,同样明文分组加密得相同密文

13.ECB 模式特别适合数据较少的情况,如安全传输 DES 密钥 一段明文消息中若有几个相同的明文组,则密文也将出现几个相同的片段 对于很长的消息, ECB 是不安全的,如果消息是非常结构化的,密码分析可能利用其结构特征来破解 ECB 的弱点来源于其加密过的密文分组是互相独立的 ECB 模式的局限性

14.2 )密文分组链接模式 Cipher Block Chaining (CBC) 加密输入是当前明文分组和前一密文分组的异或,形成一条链,使用相同的密钥, 这样每个明文分组的加密函数输入与明文分组之间不再有固定的关系

15.CBC 的优点和局限 每个密文分组依赖于所有明文分组 明文消息中的任何一点变化都会影响所有的密文分组 发送方和接收方需要共享初始向量 Initial Value (IV) 如果 IV 被明文传送,则攻击者可以改变第一个分组的某些位,然后预先改变 IV 中的某些位,则接收者收到的 P1 也就相应改变了 因此, IV 必须是一个固定的值 (as in EFTPOS) 或者必须用 ECB 方式在消息之前加密传送 在消息的最后,还要处理不够长度的分组 可以填充已知非数据值,或者在最后一块补上填充位长度 eg . [ b1 b2 b3 0 0 0 0 5] <- 3 data bytes, then 5 bytes pad+count

16.是一种将 DES 转化成流密码的技术,不再要求报文被填充成整个分组,可以实时运行,如果要传输一个字符流,每个字符都可以使用面向字符的流密码立刻加密和传输。 加密:加密函数的输入是一个 64 位的移位寄存器,产生初始向量 IV 。加密函数高端 s 位与明文 P1 的第一单元异或,产生 s 位密文 C1 进入移位寄存器低端,继续加密,与 P2 输入异或,如此重复直到所有明文单元都完成加密。 解密:采用相同方案,但是使用加密函数而非解密函数。 3. )密码反馈模式 Cipher FeedBack (CFB)

17.

18.CFB 模式的优点和局限 当数据以位或字节形式到达时使用都是适当的 最通用的是流密码形式 在加密解密两端都需要用分组加密器 发生错误时,错误会传播几个分组 : (移位寄存器宽度 / 密文长度) +1 个分组

19.输出反馈模式 Output FeedBack (OFB) 结构上类似 CFB ,但是 OFB 中加密函数输出被反馈回移位寄存器, CFB 中是密文单元被反馈回移位寄存器。优点是传输中的比特差错不会传播。 4) 输出反馈模式 Output FeedBack (OFB)

20.输出反馈模式 Output FeedBack (OFB) 结构上类似 CFB ,但是 OFB 中加密函数输出被反馈回移位寄存器, CFB 中是密文单元被反馈回移位寄存器。优点是传输中的比特差错不会传播。 4) 输出反馈模式 Output FeedBack (OFB)

21.OFB 的优点和局限 与 CFB 模式非常相似 但是是从加密器输出反馈,与消息本身是独立的 是 Vernam 加密器的变形,因此绝不能重复使用相同的序列 ( key+IV ) 收发双方必须保持同步,如果不同步时必须有某种手段来恢复同步 进一步的研究表明只有使用 OFB-64 是合适的

22.Counter (CTR) 是一种新模式,虽然早就提出来了 与 OFB 很像,但是加密的是计数器的值而不是任何反馈回来的值 每一个明文分组都必须使用一个不同的密钥和计数器值,决不要重复使用 C i = P i XOR O i O i = DES K1 ( i ) 可以用于高速网络加密中 5) 计数器模式 Counter (CRT)

23.Counter (CTR)

24.CTR 的优点和局限 高效 可以做并行加密 对高速链路的突发数据加密尤其有效 可以对被加密的分组进行随机存取 相当安全 简洁 必须决不重复使用密钥和计数器值

25.6.3 流密码和 RC4 按位处理明文消息 (as a stream) 典型做法是用一个伪随机流密钥与明文按位异或 流密钥的随机性完全 扰乱 了明文消息的统计特性 C i = M i XOR StreamKey i 不能重复使用流密钥,不然系统可能被破解 6.3.1 流密码

26.流密码的结构

27.流密码设计方面的一些考虑 无重复的长周期 统计上是随机的 依赖于足够长的密钥 线性复杂性要大 对于相关性要有免疫性 扰乱 扩散 采用高度非线性的布尔函数

28.6.3.2 RC4 算法 由 RSA 在 1987 提出 Ron Rivest 设计,简单且高效 密钥长度可变,面向字节的流密码 使用广泛 (web SSL/TLS, wireless WEP) 对所有 8 位的值以密钥实现随机置换 用置换加密输入消息,每次一个字节

29.RC4 密钥安排 从数组 S 开始, S 为 {0..255} 使用密钥充分进行变换 S 形成密码的内在状态 internal state 密钥 k 的长度为 l 字节 for i = 0 to 255 do S[ i ] = i j = 0 for i = 0 to 255 do j = (j + S[ i ] + k[ i mod l]) (mod 256) swap (S[ i ], S[j])