行业新闻与博客

高级加密标准(AES):它是什么?以及是如何工作?

基本了解高级加密标准并不需要计算机科学或 Matrix 级别的知识,而是将 AES 加密分解为外行的术语



大家好,我们知道,信息安全永远是一个热门话题。我们将个人和敏感信息委托给许多主要实体,但仍然存在数据泄露,数据泄漏等问题。部分原因是由于网络中的安全协议或身份验证管理的不当行为,但实际上,数据泄露的方式。但是,解密没有密钥的密文的实际过程要困难得多。为此,我们要感谢诸如流行的高级加密标准之类的加密算法,以及将我们的数据扰乱为难以理解的乱码的安全密钥。



让我们研究一下 AES 的工作原理以及它的不同应用。我们将对基于矩阵的数学知识有所了解-因此,抓住您的红色药丸,看看这个兔子洞能走多远。



什么是 AES(高级加密标准)加密?

您可能听说过高级加密标准(简称 AES),但可能不知道“什么是 AES?”这个问题的答案。关于 AES,您需要了解以下四件事:



名字的背后是什么?AES 是 Rijndael 对称块密码算法系列的一种变体,该算法是两位比利时密码学家的名字 Joan Daemen 和 Vincent Rijmen 的组合。(有点像“ Brangelina”和“ Kimye”等组合名人的名字)。

在哪里使用 AES?AES 加密通常以多种方式使用,包括无线安全性,处理器安全性,文件加密和 SSL / TLS。实际上,您的网络浏览器可能使用 AES 来加密您与此网站的连接:







为什么 AES 如此受欢迎?事实证明,AES 是非常有效的方法,如果使用正确的密钥,则对于使用该方法的任何过程,其开销的增加几乎没有或几乎没有差别。本质上,AES 是一种快速且高度安全的加密形式,受到全世界企业和政府的青睐。

AES 有多安全?使用 256 位加密密钥,AES 非常安全-几乎牢不可破。(只需几分钟即可获得更多信息。)

为什么高级加密标准是标准

美国国家标准技术研究院(NIST)在近 20 年前就将 AES 确立为加密标准,以取代老化数据加密标准(DES)。毕竟,AES 加密密钥最多可以增加 256 位,而 DES 只能增加到 56 位。NIST 可以选择提供更高安全性的密码,但是这种权衡将需要更大的开销,这是不切实际的。因此,他们选择了具有出色的全面性能和安全性的产品。



AES 的结果是如此成功,以至于许多实体和机构已经批准了该方法并将其用于加密敏感信息。在美国国家安全局(NSA) ,以及其他政府机构,利用 AES 加密和密钥来保护机密或其他敏感信息。此外,AES 通常包含在基于商业的产品中,包括但不限于:



Wi-Fi(可以用作 WPA2 的一部分)

行动应用程式(例如 WhatsApp 和 LastPass)

本机处理器支持

多种软件开发语言的库

VPN 实施

操作系统组件,例如文件系统

高级加密标准有多强?256 位密钥几乎可以永久破解

尽管从字面上看并不会花很长时间,但是使用现代计算技术破解 AES 256 位加密密钥所花的时间将比我们的一生都要长得多。从蛮力的角度来看,就像尝试每种组合一样,直到我们听到“喀哒”声 / 解锁声为止。



需要多长时间?我们正在冒险进入“一千只猴子在用一千台打字机工作来写'两个城市的故事'”的领域。AES 256 位加密的可能组合为 2256。即使一台计算机每秒可以执行多个四千万条指令,我们仍然处于“老鹰般的机翼侵蚀着珠穆朗玛峰”的时间范围内。



不用说,这是 waaaaaaaaaaaaaaaaaaaaaaaay(我们的计算机上没有足够的内存来支持我要传达的“ a”字母的数量),这比我们当前的宇宙存在的时间更长。那只是一个 16 字节的数据块。因此,您可以看到,即使是 128 位 AES,强行强制 AES 也没有用。



但是,一旦量子计算变得更加主流,可用和有效,这可能会改变。预计量子计算将打破 AES 加密并需要其他方法来保护我们的数据-但这仍然是一条路。



AES 如何工作?看一下密码块和密钥

为了更好地了解什么是 AES,您需要了解它是如何工作的。但是,为了了解高级加密标准实际上是如何工作的,我们首先需要研究如何设置它以及基于用户对加密强度的选择来确定有关该过程的“规则”。通常,当我们讨论使用更高级别的安全性时,我们所关注的是更安全,更难以破解或破坏的事物。当数据块分为 128 位时,密钥大小具有一些不同的长度:128 位,196 位和 256 位。这是什么意思?让我们在这里备份一秒钟。



我们知道,加密通常会将信息加扰处理成某种不可读的内容,并将相关的密钥解密。AES 加扰过程每轮使用四个加扰操作,这意味着它将执行这些操作,然后根据前一轮的结果 X 次重复该过程。简单来说,如果我们放 X 并离开 Y,那将是一轮。然后,我们将加快 Y 的速度,并在第 2 轮中退出 Z。冲洗并重复直到完成指定的轮数。



上面指定的 AES 密钥大小将确定该过程将执行的回合数。例如:



一个 128 位的 AES 加密密钥将进行 10 回合。

192 位 AES 加密密钥将进行 12 次回合。

256 位 AES 加密密钥将进行 14 回合。

如前所述,每个回合有四个操作。



如何读取数据

所以,您已经到此为止。现在,您可能会问:为什么,为什么不服用蓝色药丸?



在介绍高级加密标准的操作部分之前,让我们看一下数据的结构。我们的意思是,执行操作的数据不是我们通常认为的从左到右的顺序。它以每个块 128 位(16 字节)的 4×4 矩阵堆叠在称为“状态”的阵列中。状态看起来像这样:







因此,如果您的消息是“蓝色药片或红色”,则看起来像这样:







因此,需要明确的是,这只是一个 16 字节的块-因此,这意味着文件中每 16 个字节的组都以这种方式排列。在这一点上,系统的争夺始于每个 AES 加密操作的应用。



4 种 AES 加密操作是什么以及它们如何工作

如前所述,一旦我们有了数据安排,就会有某些链接的操作将对每个状态执行加扰。此处的目的是通过使用密钥将纯文本数据转换为密文。



四种类型的 AES 操作如下(注意:在下一节中,我们将介绍操作的顺序):



1.密钥扩展和 AddRoundKey







如前所述,密钥大小决定了将要执行的加扰次数。AES 加密使用 Rjindael 密钥计划,该计划从主密钥派生子密钥以执行密钥扩展。



AddRoundKey 操作获取数据的当前状态,并对当前回合子键执行 XOR 布尔操作。XOR 表示“异或”,如果输入不同(例如,一个输入必须为 1,而另一个输入必须为 0,则为 true),它将得出 true 的结果。每轮将有一个唯一的子项,再加上一个子项(将在末尾运行)。



2.子字节







SubBytes 操作代表替代字节,它将占用 16 个字节的块,并通过 S-Box(替代盒)运行它以产生备用值。简而言之,该操作将获取一个值,然后通过吐出另一个值来替换它。



实际的 S-Box 操作是一个复杂的过程,但是要知道,用传统的计算几乎不可能破译。结合其余的 AES 操作,它将有效地对源数据进行加扰和混淆。上图中白框中的 “ S” 表示 S-Box 的复杂查找表。



3. ShiftRows







ShiftRows 操作更直接一些,更容易理解。基于数据的排列方式,ShiftRows 的想法是通过包装将数据的位置移动到它们各自的行中。请记住,数据是按堆叠的方式排列的,而不是像我们大多数人习惯于从左到右读取的那样。提供的图像有助于可视化此操作。



第一行保持不变。第二行将字节向左移动一个位置,并绕行。第三行将字节向后移动一个位置,将字节向左移动总共两个位置,并绕行。同样,这意味着第四行将字节向左移动总共三个位置,并绕行。



4. MixColumns







简而言之,MixColumns 操作是数据集列的线性转换。它使用矩阵乘法和按位 XOR 加法输出结果。可以表示为 4×1 矩阵的列数据将以称为 Gallois 字段的格式与 4×4 矩阵相乘,并设置为输入和输出的倒数。如下所示:







如您所见,其中有四个字节是针对 4×4 矩阵运行的。在这种情况下,矩阵乘法会使每个输入字节影响每个输出字节,并且显然产生相同的大小。



操作顺序

现在,我们对用于通过 AES 加密对数据进行加扰的不同操作有了相当的了解,现在我们可以看看这些操作的执行顺序。它将是这样的:



“密钥扩展”设置了在每个回合中使用的回合密钥列表,以及一个额外的(以及您将看到的初始回合)回合。

AddRound 是混淆数据的第一步。立即,我们对数据进行了加密。

现在,我们进入密集数据加扰阶段。同样,取决于所选的密码位,轮数将有所不同。

对于 9、11 或 13 轮,根据密码位的选择,将按以下顺序执行以下操作:

子字节

排档

混合柱

加圆

在 10 个,12 个,或 14 个圆,分别,我们执行最终的一组操作,这是如下的:

子字节

排档

加圆

注意:MixColumns 操作不在最后一轮。如果不进行实际的数学计算,执行此操作不会带来任何其他好处。实际上,这样做只会使解密过程的开销增加一点。



如果我们考虑涉及的回合数和每回合的操作,那么到最后,您应该有一个不错的加扰块。那只是一个 16 字节的块。考虑一下在总体上相当于多少信息。与当今的文件 / 数据包大小相比,它是微不足道的!因此,如果每个 16 字节块看似没有可辨别的模式-至少任何可以及时解密的模式-我想说 AES 已经完成了工作。  



关于高级加密标准密码和密钥的最终思考

我们知道高级加密标准算法本身是非常有效的,但是其有效性级别取决于其实现方式。与上面提到的暴力攻击不同,有效攻击通常是在实现上而不是算法本身上发起的。这可以等同于攻击用户(例如在网络钓鱼攻击中),而不是攻击可能难以突破的服务 / 功能背后的技术。这些可以看作是边信道攻击,其中攻击是在整个过程的其他方面进行的,而不是安全实施的重点。



尽管我一直主张采用合理 / 有效的安全性选项,但许多 AES 加密正在发生,而您甚至都不知道。它限制了计算世界的本来就敞开的地方。换句话说,如果根本不实施高级加密标准,黑客将有更多机会捕获数据。我们只需要知道如何识别开孔并弄清楚如何将其堵塞即可。一些可能会使用 AES,而其他一些可能需要其他协议或过程。



让我们拥有的加密实现,在需要时使用最好的实现,并乐于审查!

需要帮助吗?联系我们的支持团队 在线客服