AES加密学习笔记

1,071 阅读4分钟

AES是对称加密,全称高级加密标准。

基础概念

AES加密学习的关键概念

  • 工作模式,不同模式加密逻辑不同
  • IV ,初始化向量,不是所有模式都有,IV大小和数据库大小相同,为128bit
  • Key,秘钥,长度有特殊要求,例如aes-128的秘钥为16个bytes,即16 * 8 bit=128 bit,三种可选
    • 128位,即16 bytes
    • 192位,即24 bytes
    • 256位,即32 bytes
  • 数据块,数据会被分割成若干个单独的块,AES块大小是128bit,即16 bytes为1块数据。
  • 数据块大小,密码学概念,128位 = 16 bytes
  • 加密轮
    • 128位密钥为10轮。
    • 192位密钥的12轮。
    • 256位密钥为14轮。

算法加密过程可简单理解为以下步骤:

  1. 初始化参数,秘钥、向量等。
  2. 将数据按数据块大小分割成N个数据库。
  3. 依次将数据块按设定的工作模式进行处理。
  4. 输出加密后的内容。

疑问点

问:AES加密会增加文件的体积吗?

结论:影响很微小,可忽略 AES加密后的数据本身不会变大(结合分组密码工作模式原理),一般会结合填充,会增加几个字节,例如AES-128-CBC会增加16 byte。 原理参考维基百科 CBC工作原理

问:先加密还是先压缩?

结论:先压缩再加密

压缩后的数据大部分是随机的,压缩效果不好。(Todo: 充文件压缩原理)

先压缩可能会引起的漏洞?(Todo:待补充)

问:AES的性能如何?

Todo:待补充

问:可以进行流式加密吗?

Todo:待补充

问:IV需要单独保管和保密吗?

结论: IV需要保存,如果加密时存在IV,则解密也需要相同的IV。IV不要保密,但是不能使用固定的IV,同一组key和IV不能使用两次,否则不安全。

原理参考 维基百科 初始化向量

问:不同模式如何选择?

结论:没有特殊需求使用CBC

几种模式对比:

  • ⚠️ ECB,最简单的加密模式,缺点在于同样的明文块会被加密成相同的密文块,它不能很好的隐藏数据,这种方法不能提供严格的数据保密性,因此并不推荐用于密码协议中。

Pasted image 20221125165017.png

  • CBC,是最为常用的工作模式,每个明文块先与前一个密文块进行异或后,再进行加密,每个密文块都依赖于它前面的所有明文块,证每条消息的唯一性。主要缺点在于加密过程是串行的,无法被并行化(解密可并行),息必须被填充到块大小的整数倍。
  • PCBC,应用较少,一种可以使密文中的微小更改在解密时导致明文大部分错误的模式,并在加密的时候也具有同样的特性
  • CFB,模式类似于CBC,CFB拥有一些CBC所不具备的特性,这些特性与OFB和CTR的流模式相似:只需要使用块密码进行加密操作,且消息无需进行填充。
  • OFB,优点是不需求填充;可事前进行加密、解密的预备;加密、解密运用相同结构;对包含某些错误比特的密文进行解密时,只要明文中相对应的比特会出错,缺点是不能并行化处理、主动攻击者发转密文分组中的某些比特时,明文分组中相对应的比特也会被反转。
  • CTR,又称ICM或SIC,与OFB相似,具体可自行查阅资料。

加密原理

参考维基百科 AES 高级加密标准维基百科 分组密码工作模式

引用资料