对称加密算法——AES总结(最全版,持续更新中)

对称加密算法介绍

        对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。

如上图发送方使用该密钥对信息进行加密,接收者使用同样的密钥对信息进行解密。

        对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特点,但是也有着密钥单一、密钥管理困难等缺点。目前国际主流的对称加密算法是AES,国内主推的则是国标的SM4。

        常见的对称加密算法有 AES、SM4、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia

对称加密算法的应用场景如下:

  • 网络通信
  • 文件加密存储
  • 数据库加密
  • 数字签名
  • 数字认证

AES算法介绍

        AES 数据加密是一种在数学上更高效、更优雅的加密算法,由美国国家标准与技术研究院于 2001 年推出,用于替代DES算法。作为高级加密标准,AES提供三种密钥长度,分别是128 位、192 位和 256 位,密钥长度越高,破解系统或破解系统所需的时间就越多。

AES只是个基本算法,常见的AES算法有以下模式:

  1. ECB,电码本模式(Electronic Codebook Book Mode)
  2. CBC,密码分组链接模式(Cipher Block Chaining Mode)
  3. XTS,基于XEX的密文窃取算法的可调整密码本模式((XEX-TCB-CTS Mode)
  4. CFB,密码反馈模式(Cipher FeedBack Mode)
  5. OFB,输出反馈模式(Output FeedBack Mode)
  6. CTR,计算器模式(Counter Mode)
  7. CMAC,基于密码的消息验证码模式(Cipher-based Message Authentication Code Mode)
  8. GMAC,伽罗瓦消息验证码模式(Galois Message Authentication Code Mode)
  9. CCM,结合CTR模式和CMAC的分组加密模式(Counter with CBC-MAC Mode)
  10. GCM,结合CTR模式和GMAC的分组加密模式(Counter with CBC-MAC Mode)

AES-ECB模式

ECB,Electronic Codebook,电子密码本模式是最简单的块密码加密模式,加密前根据加密块大小(长度可以定为128,256或512bits)将明文分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

ECB 模式中,相同的明文使用密钥一样的话,输出的密文也一样,这样有严重的漏洞,容易被攻击。当明文最后一个明文分组的内容小于分组长度时,需要使用一些特定的数据进行填充。

ECB优势

  • 实现简单;
  • 计算快速;
  • 可并行计算

ECB劣势

  • 安全性低(明文中重复排列会反映在密文中);
  • 不能抵御重放攻击;
  • 对包含某些比特错误的密文进行解密时,对应的分组会出错;
  • 通过删除、替换密文分组可以对明文进行操作

插入一个概念

重放攻击


AES-CBC模式

CBC模式,Cipher Block Chaining Mode,对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密,所有的密文分组像是链条一样互相连接在一起。

由于第一个明文分组前没有密文分组,所以在进行第一个明文块加密时,需要准备一个叫初始化向量的数据块代替需要进行异或操作的密文分组。CBC模式引入了IV(Initial Vector)和组间异或的概念,通过异或操作将加密快链接在一起。一般来说,每次加密都会随机产生一个不同的比特序列来作为初始计划向量。

CBC模式相比于EBC模式,确保了即使明文块相同,每个密文块也都是唯一的,增加了安全性,但带来的问题是没有办法随机访问各个区块了,访问某个区块必须解出前一个区块数据。

CBC模式的解密过程中,如果密文分组中有一个分组损坏,这种情况当密文长度没有发生变化,则解密时最多只有两个文组收到数据损坏的影响,但是当某个密文分组一些比特缺失时(长度发生变化),则此后所有的密文都无法解密。

CBC优势:

  • 相比于ECB更安全(明文的重复排列不会反应在密文中);
  • 支持并行计算(仅解密);
  • 可解密任意密文分组;

CBC劣势:

  • 加密不支持并行计算;
  • 解密有关联性,对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错,不影响后续的解密过程

AES-XTS模式

XTS,XEX-TCB-CTS,基于XEX的密文窃取算法的可调整密码本模式是一种用于加密大于128位元的数据的区块加密模式。它是AES的一种变体,旨在提供更高的安全性。XTS模式比‌ECB和CBC模式更安全,因为它解决了相同数据块加密后产生相同密文的问题,并且实现了不同数据块的独立加密和解密。

XTS模式通过引入‌Tweak key与AES key配合使用来解决ECB和CBC模式存在的问题。在每个数据块的加密解密过程中,虽然使用同样的AES key,但Tweak key却不同,通常与数据块的索引相关联。这样一来,各个数据块的加密解密过程就相互独立了,确保了相同的数据块加密后产生不同的密文,并且实现了不同数据块的独立加密和解密。

XTS优势:

  • 支持并行计算

XTS劣势:

  • 当密文包含错误比特时,解密后该明文分组的全部比特以及后一个分组的相应比特会出错

AES-CFB模式

CFB模式,Cipher FeedBack Mode,密文反馈模式,所谓反馈是指前一个密文分组会被送到密码算法的输入端。

ECB和CBC模式中,明文分组都是通过密码算法进行加密的,但是在CFB模式中,明文分组没有通过密码算法直接进行加密,明文分组和密文分组之间进行了异或(XOR)操作。

CFB模式的解密需要注意的是分组密码算法依然是执行加密操作,因为秘钥流是通过加密实现的。

与CBC模式类似,CFB模式在生成第一组密文分组时,由于不存在前一个输出数据,所以需要使用初始化向量(IV),一般来说,需要在每次加密时生成一个不同的随机比特序列用作初始化向量。

与CBC模式相比,CFB引入了一个秘钥流(Key Stream)的概念,CFB模式中由密码算法生成的比特序列成为秘钥流。CFB模式中,密码算法相当于用来生成秘钥流的伪随机数生成器,初始化向量可以看做伪随机数生成器的种子。


此处插入两个概念:

一次性密码本

分组密码


CFB模式中,密码算法的输出相当于一次性密码本中的随机比特序列,但是CFB中的密码算法输出(Key Stream)是计算得出的,不可以看做真正的随机数,所以CFB模式也是可以被破译的。CFB模式明文数据是逐比特加密的,所以CFB模式是一种使用分组密码来实现流密码的方式

CFB优势:

  • 不需要填充;
  • 支持并行计算(仅解密);
  • 能够解密任意密文分组;

CFB劣势:

  • 加密不支持并行计算;
  • 当密文包含错误比特时,解密后该明文分组的全部比特以及后一个分组的相应比特会出错;
  • 不能低于重放攻击;

AES-OFB模式

OFB,Output-FeedBack,输出反馈模式,密码算法的输出会反馈到密码算法的输入中。与CFB模式类似,OFB模式不是将密码算法直接对明文进行加密,是将明文分组与密码算法的输出进行异或(XOR)操作来产生密文分组。

OFB模式也需要引入初始化向量(IV),一般来说,需要在每次加密时生成一个不同的随机比特序列来当做初始化向量

与CFB模式相比,CFB密码算法的输入是前一个密文分组(将密文分组反馈到密码算法中,Chiper-FeedBack),OFB中,密码算法的输入是前一个密码算法的输出(Output-FeedBack)。

CFB模式中密文分组需要反馈,所以必须从第一个明文分组开始按书序进行加密,无法跳过某个分组进行后续加密。OFB模式中,明文和加密算法的输入的秘钥流进行异或,OFB的秘钥流是可以可以通过密码算法提前生成的,与明文无关,所以可以对各组明文块进行并行加密。

OFB优势:

  • 不需要填充;
  • 加解密使用相同结构;
  • 可事先进行加密解密的准备;
  • 对包含某些错误比特的密文进行解密时,只有明文中相应的比特会出错;

OFB劣势:

  • 不支持并行计算;
  • 主动攻击者反转密文分组中某些比特时,明文分组中对应的比特也会被反转

AES-CTR模式

CTR,Counter,计数器模式是一种使用逐次累加的计数器来进行加密生成秘钥流的方法。

从上图可以看出,CTR模式中,每个分组对应一个逐次累加的计数器,对计数器进行加密操作来生成秘钥流,最终的密文分组是明文分组与加密算法的输出进行异或(XOR)操作得到的。

CTR模式在每次加密时都会生成一个不同的值(nonce)作为计数器的初始值,用来保证计数器每次的值不同,如下图所示:

计数器逐次累加的效果(前八个字节为nonce,后八个字节主次累加)如下图:

CTR模式中每个分组中对计数器的输出进行加密,所以每组加密的秘钥流也是不同的,这种方法用分组密码来模拟生成随机比特序列。

CTR模式和OFB模式一样,都属于流密码,区别是CTR模式是将计数器累加值的输出作为加密算法的输入(OFB是将加密算法的输出作为下一个加密的输入),因此也可以实现任意分组处理,实现并行计算。

CTR优势:

  • 不需要填充;
  • 加解密使用相同结构;
  • 支持并行计算;
  • 对包含某些错误比特的密文进行解密时,只有明文中相应的比特会出错;

CTR劣势:

  • 主动攻击者反转密文分组中某些比特时,明文分组中对应的比特也会被反转

AES-CMAC


持续更新中.................................................................


  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值