对称加密算法
传统加密技术
两个安全性要求:
(1)加密算法时足够强的。敌手知道一定数量的明文密文,不能破解
(2)发送者和接收者保证某种形式下的密钥安全。(密钥破,加密算法破)
传统密码的简化模型:
密钥的发送:安全信道和第三方
密码分析和攻击
两种攻击类型:
(1)密码分析。依赖于算法的性质和明文的一些特征
(2)穷举攻击
如果一个密码体制满足条件:无论有多少可用的密文,都不足以唯一的去欸的那个密文所对应的明文,即是无条件安全的。除了一次一秘,都不是无条件安全的。
应该使用的算法满足的标准:
(1)破译密码的代价超过密文信息的价值
(2)破译密码的时间超出密文信息的有效生命期
代替技术
凯撒密码
穷举分析基于以下三个特征:
(1)已知加密和解密算法
(2)需要密钥测试的密钥只有25个
(3)明文所用的语言是已知的,且其意义易于识别
单表代替密码
置换:优先元素的集合S的置换是S的所有元素的有序排列,且每个元素只出现一次
如果密文行是26个字母的任意置换,密码空间大了很多。
攻击方法:词频信息攻击
Playfair 密码
密钥的生成方式:5x5 矩阵,先填充,然后按照字母表的顺序依次填充。I/J 一个
密文的生成方式:(1)字母对不相同,如果相同需要填充(2)同一行右移(3)同一列下移(4)对角线,先横着的,再纵着的
多表代替密码Hill
多表代替维吉尼亚密码
用一个单词作为密钥,单词的长度作为一组,一组的内的每一个字母用单词相应位置的密钥进行凯撒加密。
密码强度原因:每个明文字母对应着多个密文字母,且每个密文字母使用唯一的密钥字母,因此字母出现的频率信息被隐蔽了
攻击:(1)判断是不是单表加密。通过次品信息判定
(2)寻找密钥词的长度:如果两个相同的明文序列之间的距离是密钥词长度的整数倍,那么产生的密文序列也是相同的。
Vernam 密码
选择一个和明文毫无统计关系,且和它一样长的密钥。
加密:ci = pi 异或 ki
解密:pi = ci 异或 ki
一次一秘
一次一密的安全性取决于密钥的随机性:如果构成密钥的字符流是真正随机的,那么构成密文的字符流也是随机的。
两个基本难点:
(1)产生大规模随机密钥有实际困难
(2)密钥的分配与保护
置换技术
写成矩阵,然后列置换
可以双重置换
转轮机
隐写术
分组密码和数据加密标准
Feistel 密码结构
扩散
使明文的统计特征消散在密文中,这可以让每个明文数字尽可能地影响多个密文数字获得。每一个分组密码都是明文分组到密文分组地变换,而这个变换又是依赖于密钥的。扩散的方法是尽可能地使明文与密文之间地统计关系变复杂,以挫败推导出密钥的企图
混淆
混淆是尽可能地使密文和加密密钥之间地统计关系变得复杂,以阻止攻击者发现密钥。
Feistel 结构实现依赖的特征
分组长度
密钥长度
迭代轮数
子密钥产生算法
轮函数