AES加密算法介绍

AES加密算法介绍

AES(Advanced Encryption Standard)算法是一种对称加密算法,它对数据进行加密时执行了一系列复杂的变换。AES算法的核心是由四个基本操作组成的一轮变换,这些操作包括:

  1. 字节代换(SubBytes)

    • 这一步是对状态矩阵中的每一个字节进行非线性替换。AES定义了一个 S 盒(S-box),这是一个固定的查找表,用于将输入字节映射到另一个输出字节。S 盒的设计是为了增加算法的复杂度,使得加密更加难以被破解。
  2. 行位移(ShiftRows)

    • 这一步是将状态矩阵的每一行向左循环移位。第一行不移动,第二行向左移一位,第三行向左移两位,第四行向左移三位。这一操作增加了数据块内部的扩散性。
  3. 列混合(MixColumns)

    • 这一步是对状态矩阵的每一列应用一个固定的线性变换,通常通过矩阵乘法实现。这一操作增强了数据块之间的相互依赖性,使得单个字节的变化能够影响到整个数据块。
  4. 轮密钥加(AddRoundKey)

    • 这一步是将轮密钥与状态矩阵中的数据进行逐位异或操作。轮密钥是从主密钥派生出来的,每一轮都有不同的轮密钥。这一操作确保了每一轮变换的结果都是基于密钥的,从而增加了破解难度。

AES算法的加密过程通常包括一个初始轮密钥加操作,然后是多轮上述四个操作的重复执行,最后再执行一次不包括列混合的变换。对于AES-128,总共有10轮变换;对于AES-192,有12轮;对于AES-256,则有14轮。

示例流程

以AES-128为例,加密过程大致如下:

  1. 初始轮密钥加
  • 将初始明文与第一个轮密钥进行逐位异或。
  1. 9轮主要变换
  • 每轮包括:字节代换、行位移、列混合、轮密钥加。
  1. 最终轮变换
  • 包括:字节代换、行位移、轮密钥加(不包括列混合)。

通过这些变换,AES算法实现了对数据的加密,使得即使知道加密算法的具体步骤,没有正确的密钥也很难恢复原始数据。

AES的不同模式比较

AES的不同工作模式指的是在使用AES算法进行数据加密和解密时采用的不同策略。虽然AES算法本身的加密和解密过程(即上述的字节代换、行位移、列混合、轮密钥加)是相同的,但不同的工作模式会影响数据如何被处理以及密钥如何应用于数据。以下是几种常见的AES工作模式特点和其优缺点:

  1. ECB(Electronic Codebook)模式
  • 每个数据块独立地使用相同的密钥进行加密或解密。
  • 优点:
    • 是简单、快速、支持并行计算。
  • 缺点:
    • 相同的明文块总是产生相同的密文块,密文会暴露明文的排列顺序。
    • 通过删除、替换密文分组可以对明文进行操作。
    • 密文比特位出错时对应的分组也会出错。
    • 不能抵御重放攻击。
  • 安全性较低。
  1. CBC(Cipher Block Chaining)模式
  • 每个数据块在加密前与前一个密文块进行异或操作,首块使用一个初始化向量(IV)。
  • 解密时,先用密钥解密当前密文块,然后与前一个密文块异或得到明文。
  • 提供了更好的扩散性,使得相同的明文块在不同的位置会产生不同的密文块。
  • 优点:
    • 明文重复排列不会反应在密文中。
    • 解密支持并行计算。
    • 呢能够解密任意密文分组。
  • 缺点:
    • 对包含错误比特的密文解密时,第一个分组的全部比特以及后一个分组的相应比特会出错。
    • 加密不支持并行。
  1. CFB(Cipher Feedback)模式
  • 将前一个密文块的一部分(或一个完整的块)作为反馈输入到加密函数中,产生的输出与当前明文块异或得到当前密文块。
  • 解密时,同样的过程被用于生成一个伪随机序列,与密文块异或得到明文。
  • 可以将块加密算法转换为流加密算法。
  • 优点:
    • 不需要填充(padding)。
    • 解密支持并行。
    • 能够解密任意密文分组。
  • 缺点:
    • 加密不支持并行。
    • 对包含某些错误比特的密文进行解密时,第一个分组的相应比特及后一个分组的全部比特会出错。
    • 不能抵御重放攻击。
  1. OFB(Output Feedback)模式
  • 与CFB类似,但密文块不直接参与当前明文块的加密过程,而是通过将密钥和前一个密文块(或其部分)的加密结果作为反馈,生成一个伪随机序列,与明文块异或得到密文块。
  • 解密时,使用相同的伪随机序列与密文块异或得到明文。
  • 优点:
    • 不需要填充。
    • 可提前做好加密解密的准备,提高生成密文或者明文的速度。
    • 对包含某些错误比特的密文进行解密时,只有相应的比特会出错。
  • 缺点:
    • 不支持并行计算。
    • 主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转。
  1. CTR(Counter)模式
  • 使用一个计数器(通常是一个初始化向量IV)加上一个递增的数值,作为每个数据块的输入,通过加密函数生成伪随机序列,与明文块异或得到密文块。
  • 解密时,使用相同的计数器序列与密文块异或得到明文。
  • 允许并行处理,提高了性能。
  • 优点:
    • 不需要填充。
    • 可提前做好加密解密的准备。
    • 加解密结构相同。
    • 对包含某些错误比特的密文进行解密时,只有相应的比特会出错。
    • 加解密都支持并行计算。
  • 缺点:
    • 主动攻击者反转密文分组中的某些比特时,明文分组中相对应的比特也会被反转。

每种模式都有其适用场景和优缺点。例如,ECB适用于不需要扩散性的简单场景,而CBC则更适合需要更高安全性的应用场景。CFB和OFB模式适用于流加密,而CTR模式支持并行处理,提高了效率。选择哪种模式取决于具体的应用需求,如安全性要求、性能考虑等。

S-box之谜

S-box 是 AES 算法的一个核心组件,用于提供非线性变换,增强算法的安全性。AES 的 S-box 是预先定义好的,并且在整个加密过程中保持不变。S-box 的设计是基于有限域 GF(2^8) 上的数学运算,具体来说,它结合了多项式逆元、仿射变换和其他操作来构建一个固定的非线性映射表。

S-box 的设计目的是为了增加算法的复杂度,使得攻击者难以通过简单的数学手段来推断出密钥或明文。S-box 的固定性质意味着无论何时执行 AES 加密或解密,只要使用的密钥和模式相同,S-box 的行为就是一致的。

在 AES 的加密过程中,S-box 用于替换状态矩阵中的每一个字节,这个过程称为“字节代换”(SubBytes)。每个字节通过查找 S-box 得到一个对应的输出字节,这个过程是固定的,并且在 AES 标准中明确定义。这种固定的特性有助于确保 AES 算法的安全性和一致性。

AES128名称简单介绍

128bit == 16byte,当选择128比特的分组长度时,AES可以对16字节的明文进行加密,并生成16字节的密文。

Copyright

/**
 * @file aes.md
 * @author jimu (minijimu@foxmail.com)
 * @brief 分组密码是如何迭代的
 * @version 0.1
 * @date 2024-09-01
 * @reference 《图解密技术-第3版》
 * @copyright Copyright (c) 2024
 *
 */
  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值