乘积密码
因为语言特性,用代替和置换是不安全的,可以考虑用多次的加密增强密码强度。多次加密想要提高密码强度,要求多次加密不能成为一个群,那么加密就可以被重复并且组合复杂度会增加。
分组密码
分组密码就是把明文分组后进行一一映射。
对于n位的分组密码,密钥的大小是2^n*n的,代价太大,因此需要一种算法,可以在密钥的控制下,从一个足够大的代替子集中简单迅速的找到一个代替。
这要求:分组足够长,密钥量(子集)足够大,确定密钥的算法要足够复杂以抵抗攻击。
feistel分组加密算法
分组加密密码在n小的时候和代替变换没多少差别,大的情况下密钥太大,Feistel分组加密结构使用代替和置换来产生一个类似分组加密的效果。
数据加密标准DES
显而易见的DES采用了feistel结构,其中扩展,子钥异或和压缩共同组成feistel的F加密函数。
DES的子密钥产生
DES的子密钥通过原始密钥的循环位移来产生,而明文经过多轮的迭代加密,其中经过扩展和压缩后,一个明文可以同时影响多个密文,这就是雪崩效应。
DES加密不是群,因为DES就是一个置换,置换有2^64 种,而一种DES密钥确定了一个置换,只有2^56种。因此DES不能和所有置换一一映射,直观上看DES不是群。这个结论在1992年被证明。
因为DES不是群,因此也存在二重,三重等DES加密算法
AES加密算法
分组密码操作方式
ECB电码本形式
可并行,简单,差错控制在一个分组内
CBC密码分组链接
密文作为下一组的密钥进行异或,不能并行,密文块损坏意味着两个明文块损坏
CFB密码反馈,实际上是流密码
密文反馈给移位寄存器,和原始密钥共同产生下一轮的密钥,和CBC基本上是实现方式存在一些差异。
OFB输出反馈
和CFB类似,但是是密钥反馈
Counter计数器形式,实际上是流密码
类似,但是由计数器共同组成密钥
最后几种就是密钥产生方法的区别