AES模式详解

AES的六种模式详解

分组密码算法是用于加密或解密的方案,其中明文块被视为单个块,并用于获得具有相同大小的密文块,AES(Advanced Encryption Standard)是分组密码算法中最常用的算法之一。2001年,NIST(美国国家标准与技术研究所)对其进行了标准化,以取代当时用于加密的DES和3DES。AES块的大小为128 bits,而加密密钥的大小可以是128 bits、192bits或256bits(密钥有三个长度可选择,但加密块的大小始终是128位)。分组密码算法允许对数据长度不同于块定义大小(128 bits)的明文(len(Plaintext) % 128 != 0)进行加密,我们可以使用一些算法填充明文使得满足长度要求(len(Plaintext) % 128 == 0),如PKCS5或PKCS7。

下面将会介绍六种AES的模式.

  • ECB mode: Electronic Code Book mode
  • CBC mode: Cipher Block Chaining mode
  • CFB mode: Cipher FeedBack mode
  • OFB mode: Output FeedBack mode
  • CTR mode: Counter mode
  • GCM mode: Galois/Counter mode

ECB Mode

ECB模式是所有模式中最简单的,由于存在明显的缺点,一般不推荐使用,该模式的分块方案如下图所示
在这里插入图片描述
从图中可以看出,明文被分成若干块,每块都是128bits的长度,因此,ECB模式需要对Plaintext填充数据,直到它能被128bits的块刚好整分,每个区块都将使用相同的密钥和相同的算法进行加密,如果我们加密相同的明文,我们将得到相同的密文,明文和密文块是一一对应的,这种模式有很高的风险。

又由于加密/解密是独立的,所以我们可以并行地加密/解密数据,如果一个明文或密文块被破解,它不会影响到其他块。

CBC Mode

CBC模式中使用了初始化向量IV,IV具有与加密块相同的大小(128bits),一般来说,IV是一个随机数,而不是一个只使用一次的数nonce(Number used ONCE)
在这里插入图片描述
由图中可以看到,明文被分成许多块,每块都占128bits,因此对于明文长度无法整分的成块的需要填充数据。

首先使用第一个明文块P1与IV异或,然后将结果加密到密文块C1,在下一个块中,使用上一次的密文块C1与明文块异或…,按照相同的步骤直到最后一个块。在这种模式下,即使加密相同的明文块也会得到不同的密文块。

在CBC模式中,可以并行的解密数据,但无法并行加密数据,如果一个明文块或密文块被破坏,那么将会影响到后面的所有块。

CFB Mode

CFB模式允许流模式(stream)的加解密方式,同样也需要一个IV
在这里插入图片描述
首先将IV进行加密,然后将密文与第一个明文块P1进行异或的到密文C1,再对C1进行加密…,这样操作直到最后一个块。由于这种模式不会直接对明文Plaintext进行加密,它只是使用密文与明文异或来获得密文,因此不需要对明文进行填充数据。

CFB模式可以并行解密数据,但不能并行加密,类似于CBC模式,如果有一个块坏了,将会影响到后面所有块。

OFB Mode

OFB和CFB类似,分块方案如下图所示
在这里插入图片描述
在OFB模式里,在第一次运算中加密IV,并在后续过程中不停的对结果进行加密,然后将加密结果与明文进行异或得到密文,与CFB不同的是,OFB总是对IV进行加密(无法并行),明文/密文块中如果有损坏的话,并不会对后续的块产生影响。

CTR Mode

在这里插入图片描述
CTR模式很像OFB模式,加密和解密都是最后通过异或实现的,只不过OFB使用的是IV及其每次的加密结果,而CTR使用的是counter,counter+1…的加密结果,这样有什么好处呢?只要知道counter的值,就可以快速算得后续某个块对应的counter是多少,而在OFB中,却得不停地从初始IV算过去。可以认为CTR模式中,加密和解密是并行的。

GCM Mode

  • 加密
    在这里插入图片描述
  • 解密
    在这里插入图片描述
    GCM模式除了有CTR模式的优点外,还可对数据的完整性做校验,也就是说,密文一旦被攻击者做了修改,那么便会被发现,图中的具体实现细节可以参考NIST GCM

总结

Mode优点缺点
Electronic
CodeBook
(ECB)
- 简单
- 快
- 支持并行地加密/解密
- 明文中的重复数据将在密文中反映出来
- 可以通过对密文的删除/替换达到操作明文的目的
- 不能抵御重放攻击
- 不应该被使用
Cipher Block
Chaining
(CBC)
- 支持并行地解密
- 明文中的重复数据不会在密文中反映出来
- 不支持并行加密
- 错误的块会影响到后续所有的块
Cipher-Feedback
(CFB)
- 不用填充
- 支持并行地解密
- 不支持并行地加密
- 错误的块会影响到后续所有的块
Out-FeedBack
(OFB)
- 不用填充
- 可以提前准备加密和解密
- 加密和解密采用相同的结构
- 坏块只影响当前的块
- 不支持并行计算
- 攻击者可以改变密文实现破坏明文
Counter
(CTR)
- 不用填充
- 支持并行地加密和解密
- 加密和解密使用相同的结构
- 坏块只影响当前的块
- 攻击者可以改变密文实现破坏明文
Galois/Counter Mode
(GCM)
- 除了CTR模式的优点外,还具备检查数据完整性的功能
  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值