目录
4.1 密码学概述
密码学分为密码编码学(cryptography)和密码分析学(cryptanalysis)。
4.1.1 密码学发展简史
- 古典密码时期
- 近代密码时期
- 现代密码时期
4.1.2 密码体制的基本组成及分类
密码学的基本思想:对信息进行伪装。
伪装前的信息称为明文,通常用 p(plaintext)或者m(message)表示;
伪装后的信息称为密文,通常用 c(ciphertext)表示;
从明文到密文的变换称为加密(encryption);
从密文到明文的变换称为解密(decryption);
加密和解密都是在密钥(key)的控制下进行的。
密码体制由五个部分组成:
- 明文空间 M,全体明文 m 的集合;
- 密文空间 C,全体密文 c 的集合;
- 密钥空间 K,全体密钥 k 的集合,其中每一个密钥 k 均由加密密钥 ke 和解密密钥 kd 组成,即 k = (ke, kd)。
- 加密算法 E,是在密钥控制下将明文信息从 M 对应到 C 的一种变换,即 c = E(ke, m)。
- 解密算法 D,是在密钥控制下将密文消息从 C 对应到 M 的一种变换,即 m = D(kd, c)。
密钥空间中不同密钥的个数称为密码体制的密钥量。
根据加密、解密密钥的使用策略不同,可将密码体制分为对称密码体制和非对称密码体制。
对称密码体制(Symmetric Cryptosystem)或单钥密码体制(One-key Cryptosystem):
加密密钥 ke 和解密密钥 kd 相同,或者其中一个密钥很容易推算出另一个密钥。
根据处理数据的方式,对称密码体制分为分组密码(Block Cipher)和序列密码(Stream Cipher)。
分组密码:将定长的明文块转换成等长的密文,这一过程在密钥的控制下完成,解密时使用逆向变换和同一密钥来完成。
序列密码:加、解密时对明文中比特逐个进行处理,也被称为流密码。
非对称密码体制:
加密过程和解密过程使用两个不同的密钥来完成。
4.1.3 密码体制的设计原则
密码学的基本目的:保障不安全信道上的通信安全。
衡量密码体制安全性的三种方法:
- 计算安全性(computational security)或实际保密性(practical secrecy)。如果一种密码系统最有效的攻击算法至少是指数时间的,则称这个密码体制是计算安全的。
- 可证明安全性(provable security)。如果密码体制的安全性可以归结为某个数学困难问题,则称其是可证明安全的。
- 无条件安全性(unconditional security)或完善保密性(perfect secrecy)。假设存在一个具有无限计算能力的攻击者,如果密码体制无法被这样的攻击者攻破,则称其为无条件安全。
实用的密码体制的设计遵循原则:
- 密码算法安全强度高;
- 密码体制的安全性不应依赖加密算法的保密性,而应取决于可随时改变的密钥;
- 密钥空间应足够大;
- 既易于实现又便于使用。
4.1.4 密码体制的常见攻击形式
密码分析或密码攻击:非授权者在不知道解密密钥的条件下,对密文进行分析,试图得到明文或密钥的过程。
密码分析者攻击密码体制的方法:
- 穷举攻击:密码分析者通过试遍所有的密钥来进行破译;
- 统计分析攻击:密码分析者通过分析密文和明文的统计规律来破译密码;
- 数学分析攻击:密码分析者针对加密算法的数学特征和密码学特征,通过数学求解的方法来设法找到相应的解密变换。
常见的密码分析攻击类型:
- 唯密文攻击(ciphertext only attack)
- 已知明文攻击(known plaintext attack)
- 选择明文攻击(chosen ciphertext attack)
4.2 对称密码体制
4.2.1 分组密码
将明文信息编码后的序列划分成固定大小的组,每组明文分别在密钥的控制下变成等长的密文序列。
- 如果 n < m,则分组密码对明文加密后有数据扩展;
- 如果 n > m,则分组密码对明文加密后有数据压缩;
- 如果 n = m,则分组密码对明文加密后既无数据扩展也无数据压缩。
分组密码的基本原理:扩散(diffusion)和混淆(confusion)。其目的是为了抵抗攻击者对密码体制的统计分析。
扩散: 让明文中的每一位以及密钥中的每一位能够影响密文中的许多位,或者说让密文中的每一位受明文和密钥中的许多位的影响。
混淆:将密文与明文、密钥之间的统计关系变得尽可能复杂,使对手即使获取了关于密文的一些统计特性,也无法推测密钥。
S1 和 S2 的乘积密码体制:扩散和混淆两种基本密码操作的组合变换。
数据加密标准 DES
- DES 加密算法
- DES 解密过程
DES 算法是对称的,解密时第一次迭代使用子密钥 K16 ,以此类推。解密过程的16次迭代形式化表示为
分组密码的工作模式
四个常用的工作模式:
- 电子编码本模式(Electronic Code Book,ECB)
- 密码分组链接模式(Cipher Block Chaining,CBC)
- 输出反馈模式(Output Feedback,OFB)
- 密码反馈模式(Cipher Feedback,CFB)
电子编码本模式:
将明文消息分成 n 个 m 比特组,如果明文长度不是 m 的整数倍,则在明文末尾填充适当数目的规定符号,使长度为 m 比特的整数倍。对每个明文组用给定的密钥分别进行加密,生成 n 个相应的密文组。
密码分组链接模式:
每个明文组在加密前与前一组密文按位异或运算后,再进行加密变换,首个明文组与一个初始向量 IV 异或运算。
要求收发双方共享加密密钥和初始向量 IV 。
密码反馈模式:
数据解密过程中使用的是指定分组密码的加密算法而不是解密算法。