什么是 AES?

2025年03月17日 | 阅读 9 分钟

如今,在 IT 领域,安全是每个人的首要关切。根据 Gartner 的数据,信息安全和风险管理的支出预计将从 1550 亿美元增加到 2022 年的 1720 亿美元,可见其重要性。虽然有许多工具可以购买来保护您的数据,但加密是每个计算机用户都应该熟悉的网络安全工具。对于密码学家来说,对密码系统的“破解”是指任何比暴力破解(一次尝试一个密钥进行解密)更快的攻击方式。因此,破解可以产生目前技术上不可能实现的成果。尽管理论上的破解没有用,但它们有时会揭示漏洞模式。2006 年,distributed.net 对一种广泛使用的分组密码加密技术进行了一次已知的最大规模的暴力破解攻击,使用的是一个 64 位 RC5 密钥。

加密有什么用?

加密是一种使数据消息或文件无法阅读的技术,确保只有授权人员才能访问该数据。数据使用复杂的算法进行加密,然后使用消息发送者提供的密钥进行解密。加密在存储或传输信息时,可以保护信息的机密性和私密性。任何未经授权的访问只会看到一堆杂乱的字节。

您应该熟悉以下与加密相关的概念

算法

算法,有时也称为密码,是加密过程的规则或方向。加密的效率取决于所使用的加密方法的密钥长度、功能和特性。

解密

解密是将不可理解的密文转换为可理解数据的过程。

加密密钥是一个随机的比特串,用于加密和解密数据。密钥越长越难破解,并且每个密钥都是独一无二的。公钥的长度通常为 2048 位,而私钥通常为 128 位或 256 位。

有不对称和对称的加密密钥方案。

对称密钥系统

在对称密钥系统中,访问数据的每个人都使用相同的密钥。为了保持匿名性,加密和解密密钥也必须保密。虽然这在技术上是可行的,但由于需要安全地分发密钥以确保正确的控制措施到位,因此在广泛的商业应用中使用对称加密是不可行的。

非对称密钥系统

公钥/私钥系统,有时也称为非对称密钥系统,使用两个密钥。私钥是唯一保密的密钥,而其他密钥则对所有人开放。公钥是众所周知的。由于私钥和公钥之间存在数学关联,因此只有合适的私钥才能解密使用公钥加密的数据。

加密实践

这里有一个关于加密如何工作的例子,使用了对电子邮件友好的程序 Pretty Good Privacy (PGP),对于开源软件的爱好者来说,它也被称为 GnuPG 或 GPG。假设我想私密地给你发送一条消息。我使用下面列表中的一个程序来加密它。

建议如下

消息在加密后变成一堆杂乱的随机字符。但是,如果你拥有我给你的密钥,你就可以解开它,找到消息的原始内容。

即使有人设法访问了你的网络或系统,加密也能保护你的数据免受窥探,无论它是在传输中(就像我们讨论热狗派对的电子邮件一样)还是存储在你的硬盘上。

该技术有各种形状和大小,其中密钥大小和强度通常是类型之间最大的差异。

高级加密标准 (AES)

AES 是 Rijndael 分组密码的一种变体,由两位比利时密码学家 Joan Daemen 和 Vincent Rijmen 创建,并作为 AES 选择过程的一部分提交给了 NIST。Rijndael 是一组具有不同密钥和块大小的密码。NIST 为 AES 选择了一个 Rijndael 家族的三个成员,每个成员都有 128 位块大小,但有三个不同的密钥长度:128、192 和 256 位。

AES,即高级加密标准,是最广泛使用的对称加密算法。它主要用于加密和保护电子数据。由于它比 DES(数据加密标准)更快、更有效,因此被用来取代 DES。AES 加密系统由三个分组密码组成,用于加密数据。NIST(美国国家标准与技术研究院)于 1997 年创建了 AES。它的创建是为了取代速度慢且易受多种攻击的 DES。为了修复 DES 的缺点,开发了一种新的加密算法。AES 于 2001 年 11 月 26 日发布。

美国国家标准与技术研究院 (NIST) 于 2001 年制定了高级加密标准 (AES),作为电子数据加密的标准。尽管 AES 的构建难度更大,但由于其强度远高于 DES 和三重 DES,它仍然被广泛使用。

需要注意的事项

  • AES 是一种分组密码。
  • 密钥长度从 128 位到 256 位不等。
  • 数据以 128 位块进行加密。

因此,它从 128 位输入生成 128 位加密的密文输出。AES 使用一系列链接操作来替换和混淆输入数据,这被称为替换-置换网络概念。对于密钥长度的每一个额外位,密钥空间都会增加 2 倍,假设密钥的每一个可能值都等可能,这会导致平均暴力密钥搜索时间加倍。这意味着随着密钥长度的增加,暴力搜索的难度呈指数级增长。鉴于存在一些密钥非常长的密码被发现是弱的,仅凭密钥长度并不能保证免受攻击。

AES 的代数基础非常简单。Nicolas Courtois 和 Josef Pieprzyk 在 2002 年发表了一项理论攻击,称为“XSL 攻击”,该攻击声称由于非线性组件的复杂性不足而证明 AES 算法存在缺陷。

密码工作原理

AES 以字节为单位处理数据,而不是位。由于每个块的大小是 128 位,因此该密码一次处理 128 位(或 16 字节)的输入数据。

根据密钥长度,轮数将如下变化:

  • 使用 128 位密钥时为 10 轮
  • 使用 192 位密钥时为 12 轮
  • 使用 256 位密钥时为 14 轮

生成轮密钥

所有轮密钥都是使用密钥调度方法从主密钥计算出来的。因此,使用原始密钥创建多个独立的轮密钥,这些密钥将在加密的相应轮中使用。

加密

AES 将每个块视为一个 16 字节(4 字节 x 4 字节 = 128)的网格,采用列主序排列。

[ b0 | b4 | b8 | b12 |

| b1 | b5 | b9 | b13 |

| b2 | b6 | b10| b14 |

| b3 | b7 | b11| b15 ]

What is AES

每轮包含 4 个步骤

  • 字节替换 (SubBytes)
  • 行移位 (ShiftRows)
  • 列混合 (MixColumns)
  • 轮密钥加 (Add Round Key)

最后一轮没有 MixColumns。在算法中,SubBytes 处理替换,ShiftRows 和 MixColumns 处理置换。

字节替换 (SubBytes)

此操作执行替换。

在此阶段,每个字节都替换为另一个字节。用于查找表的查找表也称为 S-盒。由于替换的方式,一个字节永远不会被自身或当前字节的补码替换。此过程产生与之前相同的 16 字节(4 x 4)矩阵。

置换在接下来的两个阶段中应用。

行移位 (ShiftRows)

此步骤顾名思义。每一行都会被移位一定的次数。

  • 第一行不移位
  • 第二行向左移位一次。
  • 第三行向左移位两次。
  • 第四行向左移位三次。

(执行左循环移位。)

列混合 (MixColumns)

此步骤本质上是矩阵乘法。每一列都乘以一个特定的矩阵,从而改变了该列中每个字节的位置。

此步骤在最后一轮中被跳过。

添加轮密钥

前一阶段的输出现在与相应的轮密钥进行 XOR 运算以获得结果。在这种情况下,16 字节被简单地视为 128 位数据,而不是网格。

每个周期都会返回 128 位的加密数据作为输出。此过程一直持续到所有需要加密的数据都经过它为止。

解密

轮次中的步骤易于反转,因为每个步骤都有一个相反的操作,使用时可以撤销修改。根据密钥长度,每个 128 位块都经过 10、12 或 14 轮的处理。

以下是解密每轮的步骤

  • 添加轮密钥
  • 逆列混合 (Inverse MixColumns)
  • 行移位 (ShiftRows)
  • 逆字节替换 (Inverse SubByte)

解密过程是加密过程的逆向,因此我将解释这些步骤及其显著差异。

逆列混合 (Inverse MixColumns)

此步骤类似于加密中的 MixColumns 步骤,但在用于执行操作的矩阵方面有所不同。

逆字节替换 (Inverse SubBytes): 逆 S-盒用作查找表,在解密过程中使用它来替换字节。

应用

  • 许多需要安全数据存储和传输的应用程序经常使用 AES。
  • AES 用于无线网络安全,例如 Wi-Fi 网络,以确保数据机密性并阻止未经授权的访问。
  • AES 可用于加密存储在数据库中的私人信息。这有助于防止在发生数据泄露时未经授权访问私人数据,如财务记录、个人信息和其他数据。
  • AES 经常用于语音/视频通话、电子邮件、即时消息和互联网通信的协议中。它确保信息保持私密。
  • 数据存储:为了在丢失或被盗的情况下防止未经授权的访问,使用 AES 加密敏感数据并将其存储在硬盘、USB 驱动器和其他存储设备上。
  • AES 经常用于虚拟专用网络 (VPN) 协议,以保护用户设备和远程服务器之间的通信。它确保通过 VPN 传输和接收的数据是安全的,并且不能被窃听者读取。
  • 密码安全:AES 加密通常用于安全地存储密码。密码以加密形式而不是明文形式存储。在发生未经授权访问存储的情况下,这增加了额外的保护层并保护用户凭据。
  • 文件和磁盘加密:在 PC、外部存储设备和云存储上,AES 用于加密文件和文件夹。它在数据传输或存储过程中保护敏感数据,以阻止未经授权的访问。

特性

AES 使用 128、192 和 256 位的密钥长度。

  • 它具有适应性,并有软件和硬件实现。
  • 它提供出色的安全性,可以阻止许多威胁。
  • 由于它是免费的,任何人都可以将其用于世界任何地方。
  • 对于 128 位密钥,有 10 轮处理。

优点

  • 它可以与软件和硬件一起使用。
  • 它为用户提供了高水平的安全性。
  • 它提供了顶级的开源加密解决方案之一。
  • 该算法非常可靠。

缺点

  • 加密需要多个轮次。
  • 软件实现具有挑战性。
  • 它需要在多个阶段进行大量处理。
  • 当性能是一个因素时,实现具有挑战性。

总结

现在 AES 已内置到 CPU 中,使用它进行加密和解密的程序可以更快、更安全地运行(吞吐量可达几 GB/s)。尽管 AES 算法已经存在了 20 年,但我们仍未成功破解它,因为即使以当今的技术,它也无法被破解。到目前为止,算法的实现是唯一的风险领域。


下一个主题什么是 MD5 算法