上一篇文章介绍了古典密码,分为单表代换和多表代换,我们还通过算法破译了曾经认为不可破解的维吉尼亚密码,今天开始介绍分组密码。先来看看现代密码体系中有哪些主流的密码算法吧。
对称加密和非对称加密大家应该都比较熟悉了,对称加密就是消息接收方与发送方拥有同一个密钥,能力相等,我们后面将会着重介绍DES与AES,并会实现破解DES的实验。
今天的重点是分组密码的总体介绍。
分组密码也是对称加密的一种:将明文划分为m比特长的组,每一块依次进行加密算法,由密钥k决定的一个明文到密文的可逆映射。
1977年美国国家标准局颁布了数据加密标准DES,后面逐渐衍生出一系列的Feistel结构的算法(Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 命名)常见的结构为:
1.给明文分组(L,R)
2.对R进行加密
3.密文=加密后的R+L(即LR的位置交换)
4.重复n轮
1990年IDEA的出现打破了DES的垄断局面,随后出现了SPN结构的分组密码算法。SPN的常见结构为:
1.用一子密钥对明文进行一轮的替换
2.进行多轮的如S盒P置换等的加密
1997年针对DES存在的问题,NIST开展AES的征集以以替代DES,这也掀起了分组密码研究的新高潮。
对比:Feistel结构加解密几乎相同,不要求函数可逆,轮数较长,SPN结构易于并行,要求可逆,雪崩效应更快。
分组密码的设计原则:
1.允许生成最大数量的加密映射来映射明文分组。
对于下面这个表,每个明文n比特的输入都会产生n比特的输出,如果分析者不知道这个表则只能穷举所有的表,显然有2n!种可能, 密钥长度n*2n,若要抵抗统计攻击密钥需要的比特太多并不可行
2.安全性原则:混淆(打乱PKC的关系)与扩散(明文的统计特性消散)
方法:乘积密码即用多种基本密码的逐次应用实现交替的代替与置换