密码学 - AES 变换函数



我们现在将逐一介绍 AES 的四个变换。我们将描述正向(加密)算法、逆向(解密)算法以及每个步骤的阶段原理。

AES Structure

字节替换变换

AES 加密过程中的主要阶段是字节替换变换,或 SubBytes。现在我们将学习它 -

目的

  • SubBytes 变换的目标是使加密过程非线性。
  • 使用预先制作的称为 S 盒的替换表,状态矩阵中的每个字节都将更改为一个新字节。
  • 通过引入混淆,这种修改提高了加密过程对密码分析技术的抵抗力。

S 盒

  • S 盒是一个固定的 16x16 矩阵,包含 256 个预定义的字节值。
  • S 盒中每个字节的值都由特定的数学过程确定。
  • S 盒对输入和输出字节的一对一映射允许可逆性。

工作原理?

  • 在 SubBytes 变换期间,状态矩阵中的每个字节都将更改为与 S 盒中的字节匹配。
  • 状态矩阵中的每个字节都将被单独替换,从而创建一个新的状态矩阵。
  • 通过引入非线性,此替换阶段提高了加密过程对包括差分密码分析在内的各种攻击的防御能力。

优点

  • SubBytes 破坏了明文中的任何对称性,这增加了加密的难度。
  • 它增加了强加密所需的扩散和混淆特性。
  • 当使用预设的 S 盒时,逆 S 盒确保了恒定且可逆的替换方法,这使其可用于解密。

因此,SubBytes 变换对于 AES 加密过程非常重要,因为它提高了加密数据的非线性度和混淆度,从而增强了其安全性。它是著名的 AES 加密方法的一个关键组成部分,用于保护私人信息。

行移位变换

行移位变换是高级加密标准 (AES) 加密过程中的一个重要阶段。让我们看看这个变换的工作原理 -

目的

行移位变换的目的是在状态矩阵中产生扩散,将每个字节的影响分布到整个矩阵。它有助于创造不确定性并提高加密的复杂性,从而提高密文的安全性。

工作原理?

  • 在行移位变换期间,状态矩阵中每一行的字节都连续向左移动。
  • 第三行移动两个位置,第四行移动三个位置,第二行向左移动一个位置。第一行保持不变。
  • 对状态矩阵中每一行独立进行的移位操作会产生一个新的状态矩阵。

示例

假设我们的状态矩阵是 4x4 -

[a0, a1, a2, a3]
[b0, b1, b2, b3]
[c0, c1, c2, c3]
[d0, d1, d2, d3]

行移位变换后 -

[a0, a1, a2, a3]
[b1, b2, b3, b0]
[c2, c3, c0, c1]
[d3, d0, d1, d2]

优点

  • 行移位通过重新排列状态矩阵中每一行内的字节,为加密过程增加了扩散。
  • 它通过确保状态矩阵中的每个字节都会影响后续加密轮次中的多个字节,从而提高了加密的整体安全性。

行移位变换是 AES 加密过程中的一个关键组成部分,它增加了强加密所需的扩散和混淆特性。它对于维护加密数据的安全性至关重要,因为它将每个字节的影响分布到整个状态矩阵。

列混淆变换

列混淆变换是 AES(高级加密标准)加密过程中的另一个步骤。让我们现在来研究它 -

目的

  • 列混淆变换试图增加扩散并增强加密安全性。
  • 它通过将每一列视为有限域上的多项式来对状态矩阵的列进行操作。
  • 列混淆提供了混淆,并使加密过程能够抵抗各种密码分析技术。

工作原理?

  • 在列混淆变换期间,一个固定的矩阵变换将乘以状态矩阵的每一列。
  • 此变换需要将每一列乘以某个矩阵,然后将输出模以预定义的多项式。
  • 原始状态矩阵的每一列都将独立地进行乘法和简化,以创建一个新的状态矩阵。

示例

让我们考虑一个 4x4 矩阵 -

[a0, a1, a2, a3]
[b0, b1, b2, b3]
[c0, c1, c2, c3]
[d0, d1, d2, d3]

列混淆变换后 -

[a0', a1', a2', a3']
[b0', b1', b2', b3']
[c0', c1', c2', c3']
[d0', d1', d2', d3']

优点

  • 列混淆通过混合状态矩阵中每一列的字节,将扩散引入加密过程。
  • 它通过确保状态矩阵中的每个字节都会影响后续加密轮次中的多个字节,从而提高了加密的整体安全性。

列混淆变换是 AES 加密过程的一个组成部分,它增加了强加密所需的扩散和混淆特性。通过混合每个状态矩阵列中的字节,它对于维护加密数据的安全性至关重要。

轮密钥加变换

轮密钥加变换也是 AES(高级加密标准)加密过程中的一个重要步骤。让我们仔细研究一下 -

目的

  • 轮密钥加变换将加密密钥添加到加密过程。
  • 由于状态矩阵和从原始加密密钥生成的轮密钥,每一轮加密现在都依赖于明文和加密密钥。
  • 此步骤将密钥数据集成到加密过程中,以确保生成的密文安全地依赖于明文和密钥。

工作原理?

  • 在轮密钥加变换期间,状态矩阵中的每个字节都将与轮密钥的相应字节进行异或运算。
  • 原始加密密钥通过密钥扩展过程来帮助生成每一轮中使用的轮密钥。
  • 对状态矩阵中的每个字节执行单独的异或运算,创建一个新的状态矩阵。

示例

假设我们有 4x4 的状态矩阵 -

[a0, a1, a2, a3]
[b0, b1, b2, b3]
[c0, c1, c2, c3]
[d0, d1, d2, d3]

轮密钥的AddRoundKey变换之后:

[k0, k1, k2, k3]
[k4, k5, k6, k7]
[k8, k9, k10, k11]
[k12, k13, k14, k15]

最终的状态矩阵如下:

[a0 ⊕ k0, a1 ⊕ k1, a2 ⊕ k2, a3 ⊕ k3]
[b0 ⊕ k4, b1 ⊕ k5, b2 ⊕ k6, b3 ⊕ k7]
[c0 ⊕ k8, c1 ⊕ k9, c2 ⊕ k10, c3 ⊕ k11]
[d0 ⊕ k12, d1 ⊕ k13, d2 ⊕ k14, d3 ⊕ k15]

优点

  • AddRoundKey确保明文和加密密钥对每一轮加密都有影响。
  • 使用密钥材料进行加密增加了额外的保护层,使得攻击者在没有密钥的情况下更难以解密密文。

AddRoundKey变换将密钥材料包含到加密过程中,并确保生成的密文的安全性,它是AES加密方法的一个重要组成部分。它对于保护个人信息在移动或存储过程中的安全至关重要。

广告
© . All rights reserved.