(二) 解密
Rijndael 的解密过程为加密的逆过程 。
在 Rijndael 加密过程中,每一轮处理的顺序为:
SubBytes -> ShiftRows -> MixColumns -> AddRoundKey
在 Rijndael 解密过程中,每一轮处理的顺序为:
AddRoundKey -> InvMixColumns -> InvShiftRows -> InvSubBytes
解密过程中除了第一步和加密完全一样,其他三步都为加密的逆过程 。

文章插图

文章插图

文章插图

文章插图
(三) 优点
SPN 网络和 Feistel 网络相比,加密效率更高,因为 SPN 一轮会加密所有位 。所以加密所需轮数会更少 。
还有一个优势在于加密用的 4 步可以并行运算 。
目前还没有针对 AES 有效的攻击破译方式 。
六、分组模式
由于 DES 和 AES 一次加密都只能加密固定长度的明文,如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方式就称为分组密码的“模式” 。
分组密码有很多模式,如果模式选择的不恰当就无法充分保障机密性 。
**分组密码(block cipher)**是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”被称为分组 。一个分组的比特数称为分组长度 。例如 DES 和 3DES 的分组长度都是 64 位 。AES 分组长度为 128 位 。分组密码处理完一个分组以后就结束,不需要记录额外的状态 。
**流密码(stream cipher)**是对数据流进行连续处理的一类密码算法 。流密码中一般以 1 比特、8比特、32比特等单位进行加密和解密 。例如一次性密码本就属于流密码 。流密码处理完一串数据以后,还需要保持内部的状态 。
流密码算法密钥长度说明一次性密码本和原文相同长度永远无法破译RC4可变密钥长度,建议长度 2048 比特目前已经被证明不再安全ChaCha可变密钥长度,建议长度 256 比特一种新型的流密码算法
1. ECB 模式
ECB 模式是分组模式里面最简单的,也是最没有安全性的 。所以使用的人很少 。
ECB 模式全称“Electronic CodeBook”模式,在 ECB 模式中,将明文分组加密之后的结果直接就是密文分组,中间不做任何的变换 。

文章插图
ECB 的加密和解密都非常直接 。针对密文中存在多少种重复的组合就能以此推测明文,破译密码 。所以 ECB 模式存在安全风险 。
对 ECB 的攻击
针对 ECB 的攻击有很多种,最简单的一种就是交换分组的位置 。例如明文分组中 1,2 分组表示的明文消息是 付款方A 和 收钱方B,第 3 个分组中记录着转账金额 。攻击者可以把 1,2 分组顺序逆序一下,这样消息的寓意完全颠倒 。攻击成功 。
2. CBC 模式
CBC 模式的全称是 Cipher Block Chaining 模式,密文分组链接模式 。名字中也展示它的实质,像链条一样相互链接在一起 。

文章插图
CBC 加密“链条”起始于一个初始化向量 IV,这个初始化向量 IV 是一个随机的比特序列 。
如果把 ECB 单个分组加密抽出来和 CBC 分组对比,如下:

文章插图
ECB 模式只进行了加密,CBC 模式则在加密之前进行了一次 XOR 。这样也就完美了克服了 ECB 的缺点了 。比如密文分组 1 和密文分组 2相同,ECB 加密以后 2 个密文分组也是相同的,但是 CBC 加密以后就不存在 2 个密文相同的情况,因为有 XOR 这一步 。
CBC 加密必须是从“链条”头开始加密,所以中间任何一个分组都无法单独生成密文 。
CBC 解密的时候,如果解密“链条”中间有一环“断”了,会出现什么问题呢?

文章插图
CBC 解密过程中如果有一环出现了问题,硬盘等问题出现了,但是整个链条长度没变,如上图的情况,那么一个坏的环会影响 2 个分组的解密 。

文章插图
如果链条长度也发生变化了,或者某个分组中的 1 个比特位在网络传输过程中缺失了 。那么影响的解密分组可能就不止 2 个分组了 。因为会引起整个链条上重新分组,这样一来导致原文无法解密(因为位数少于分组要求,解密的时候不会填充末尾分组不足的比特位) 。
推荐阅读
- 华为WLAN无线漫游配置
- 对称密码——DES加密算法
- RSA加密原理&密码学&HASH
- 简述对称加密和非对称加密
- 周杰伦|周杰伦300多万NFT被黑客盗走 上链加密艺术就这?
- 在电脑上直接生成MD5值
- 接口数据使用了RSA加密和签名?
- shell脚本明文不安全,这样做,两步安全加密
- 对称加密算法之王 AES
- 通信安全:哈希、加密、证书、签名、密钥协商、ECDH、TLS、DTLS
