古典密码学
经典加密技术
- 代换:
- 明文内容的表示形式改变,内容元素之间相对位置不变
- 明文字母用密文中对应字母代替
- 置换:
- 明文内容元素的相对位置改变,内容的表示形式不变
- 乘积:
- 多个加密技术的叠加
算术密码
- 仿射密码
- 希尔密码
代换密码
单表替代:
- 凯撒密码
- playfair密码(二维单表替代)
多表替代:
- 维吉尼亚密码
这两种密码均无法抵抗频率分析攻击。
课后题:
某加密系统,明文/密文字符集都是英文字母集合。加密算法首先对明文进行单表代换操作,再对代换结果进行置乱操作。该系统是不能抵抗选择明文攻击的。即,攻击者可以设计若干个明文,并得到它们对应的密文,根据这些明文-密文对来破译密钥。问,若每个明文/密文的长度限制为15个字符,最少需要多少个选择明文就能保证破译?
- 单表代换:
- 对于一个长度为15的明文,单表代换会将每个字母替换为另一个字母。由于有26个字母,所以每个字符都有26种可能。
- 所有可能的明文组合:
- 一个长度为15的明文总共有 26^{15} 种可能的组合。
- 破解单表代换:
- 单表代换对于每个明文字母的替换是独立的,因此,破解这样的加密至少需要足够的信息来确定所有可能的字母映射。
选择明文的数量
- 要确定密钥,即所有26个字母的映射,攻击者需要收集足够多的明文-密文对,以便推断出映射关系。由于字母表的大小是26,至少需要收集26个不同的明文字符(最好是不同的字符组合),以便在不同的上下文中看到每个字符的加密形式。
- 然而,由于置乱操作的存在,仅仅收集26个明文可能不足以完全破解密钥,因此需要考虑更加复杂的映射。
建议的选择明文数量:
- 实际上,为了确保能够破解整个密钥,攻击者可能需要更多的明文对。一般来说,选择明文的数量应大于26个,以保证在不同的组合和上下文中看到字母的加密形式。
结论
在此情况下,攻击者至少需要26个选择明文,以理论上保证足够的信息来推断出密钥。但为了确保稳妥,实际上选择超过26个的明文(例如,30个或更多)是更安全的策略。这可以帮助更好地应对不同的替换和置乱组合。
现代密码学理论
完美安全
完美安全含义:
- 窃听者截获的密文不能提供任何信息
- 完美安全的充分必要条件为:对所有的消息m和密文c,都有等可能的对应。
n个等概率消息,需要用n个等概率密钥来实现完美安全。此即一次一密。
Feistel结构分组密码
分组密码
分组密码(Block Cipher) :
- 通常以大于等于64位的数据块为处理单位
- 密文仅与算法和密钥有关,与明文数据块的位置无关
n比特的明文分组,加密产生n比特的密文分组
2^n个不同的明文分组,各自产生2^n个唯一的密文分组
- 本质上是一个巨大的代换表
完美安全的密钥需求
- n位的分组就有2^n种输入
- 每种输入需要n位“密钥”控制,确定映射到哪一个密文
- 共需
n × 2^n
位密钥
加密算法结构
- 将输入等分为两段,进行若干轮运算,每轮中
- 对左半段数据进行代换
- 依据轮函数F(右半段数据和子密钥)
- 然后置换:交换左右两段数据
一个轮函数示例:
注意解密算法与加密算法过程相同,但子密钥使用的次序相反。
DES
雪崩效应:
- 明文或密钥的一比特的变化,引起密文许多比特的改变
- 加密算法的关键性能之一
- 希望明文或密钥的1比特变化,会使大约半数密文比特发生变化;否则,可能存在方法减小待搜索的明文和密钥空间
DES安全性分析
DES不能抵御差分分析、线性分析。
- 差分分析:
- 一种选择明文攻击
- 分析明文对的差分与密文对的差分之间的关系
- 确定轮运算的子密钥,从而恢复密钥比特
- 线性密码分析:
- 攻击16轮DES需2^43个已知明文
- 基本原理:寻找密码算法的有效线性近似表达式
- 建立关于密钥的方程组
中间相遇攻击
攻击双重DES,平均工作量仅为2^56
思路:寻找X = E[K1 , P] = D[K2 , C]
,即加密解密的中间态
3DES:
加密、解密交替使用,为了与单次DES兼容。