什么是 AES 加密?工作 |性能 |安全性
- 高级加密标准 (AES) 是目前最流行和广泛采用的对称加密算法。
- 它由两位比利时密码学家 Vincent Rijmen 和 Joan Daemen 开发。
- 如果实施得当,该算法目前是牢不可破的。
加密是保护敏感数据的最常用方法。它的工作原理是将数据转换为一种形式,其中隐藏了原始含义,只有经过授权的用户才能对其进行解密。
这是通过使用基于称为密钥的数字的数学函数对数据进行加扰来完成的。为了对数据进行解扰(解密),使用相同或不同的密钥保留该过程。
如果加密和解密使用相同的密钥,则该过程称为对称过程。如果使用不同的密钥,则该过程是非对称的。
高级加密标准 (AES) 是目前最流行和广泛采用的对称加密算法。它由美国国家标准与技术研究院 (NIST) 于 2001 年建立。
2002 年,AES 成为有效的联邦政府标准。到目前为止,它是唯一一个被 NSA(国家安全局)批准用于绝密项目的公开密码。
谁开发了 AES,为什么?
在 1990 年代中期,美国政府计划了一个项目来分析不同种类的加密技术。实际上,他们正在寻找一种可以安全有效地实施的标准。
NIST 分析了各种研究团队和组织提交的数百种算法。最终,他们在 2001 年底做出了选择。他们选择了“Rijndael”作为新的高级加密标准算法。
它由两位比利时密码学家 Vincent Rijmen 和 Joan Daemen 提交。
Rijndael 在 ANSI、Java 和 C 语言中经过严格测试,以确保加密/解密过程的效率和可靠性。他们确保新算法能够抵御以软件和硬件为中心的系统中的重大攻击。
他们为什么要寻找新的加密方法?
1976 年,美国国家标准局 (NBS) 采用数据加密标准 (DES) 来加密敏感的政府数据。是IBM开发的对称密钥算法。
该算法在 20 年中一直很好地发挥了作用,但随着更强大处理器的出现,一些安全问题开始出现。
事实上,一些研究人员能够使用蛮力方法开发出可以在 48 小时内破解 DES 的技术。尽管此类攻击非常昂贵且极难发动,但它们足以证明 DES 很快就会变得不可靠。
因此,NIST 宣布需要 DES 的后继算法,并于 1997 年开始开发 AES,旨在在全球范围内免版税使用。
AES 加密如何工作?
与 DES(使用相对较短的 56 位密钥大小)不同,AES 使用 128、192 或 256 位的密钥大小来加密/解密数据。
AES 是一种基于替代置换网络的迭代密码。它涉及一系列链接操作,例如用某些输出替换输入(替换)或打乱位(置换)。
该算法所做的第一件事是将明文(输入数据)拆分为 128 位的块。由于所有计算都是在字节(128 位 =16 字节)上执行的,因此它将每个块大小转换为 4*4 矩阵以供进一步处理。
AES算法主要涉及五个步骤:
1. 添加轮密钥: 初始密钥(从实际应用加密时的结构化过程派生)被添加到明文块中。这是通过应用称为异或 (XOR) 的加法加密算法来完成的。
2. 替换字节: 输入字节通过查找预先确定的表格进行替换。
3. 换行: 矩阵的第 2 行向左移动一个位置(字节),第 3 行向左移动两个位置,第 4 行向左移动三个位置。生成的矩阵包含相同的 16 个字节,但彼此相对。
4. 混合列: 该算法使用特殊的数学函数来变换矩阵的每一列。该函数用全新的字节替换原始列。
5. 添加轮密钥: 该矩阵现在被视为 128 位并与 128 位轮密钥异或。
如果你认为就是这样,那你就大错特错了。数据返回第2步、第3步、第4步、第5步,即循环执行第2步到第5步。
但是循环运行了多少次?这取决于 AES 密码密钥大小:当使用 128 位密钥时,循环运行 9 次;当使用 192 位密钥时,循环运行 11 次;使用256位密钥时,运行13次。
每增加一轮都会使算法更强大。循环结束后,再执行一轮,包括字节替换、行移位和密钥添加轮。
列混合步骤被排除在外,因为此时它不会更改数据并不必要地消耗计算资源,从而降低加密效率。
AES加解密涉及的步骤
解密数据
解密过程比较简单。所有操作都以相反的顺序执行。该过程从反向添加轮键、反向行移位和反向字节替换开始。
然后对于每一轮,四个过程以相反的顺序进行,即
- 倒圆键
- 反向混合列
- 反向移位行
- 反向字节替换
最后,执行反向添加轮密钥(加密的步骤 1)。完成此过程后,您将收到原始消息。
性能
由于 AES 比其前身 DES 速度更快且强度呈指数级增长,因此它非常适合需要高吞吐量或低延迟的各种应用程序、硬件和固件。
该算法可以在从高性能计算机到 8 位智能卡的各种硬件中表现出色。
大多数 CPU 制造商,包括 AMD 和英特尔,都将 AES 指令集集成到他们的处理器中。这增强了 AES 在许多设备上的性能,并提高了它们对侧信道攻击的抵抗力。
在 AMD Ryzen 和 Intel Core i7/i5/i3 CPU 上,AES 加密可以产生超过 10 GB/s 的吞吐量。在旧处理器(如 Pentium M)上,吞吐量约为 60 Mbit/s。
AES 算法的安全性如何?
自 2000 年标准定稿以来,密码学家一直在分析 AES 的弱点。到目前为止,他们已经发表了针对 AES-128 的理论和侧信道攻击。
2009 年,一组研究人员瞄准了 AES-128 的 8 键轮版本。找出加密的内部结构是一种已知密钥攻击。但由于它只针对AES-128的8发版本,而不是标准的10发版本,因此被认为是一个相对较小的威胁。
同年还发生了一系列相关密钥攻击,研究人员试图通过分析密码在不同密钥下的运作方式来破解密码。然而,事实证明,这些攻击只对未正确实施的协议构成威胁。
主要风险:侧信道攻击
旁道攻击基于从系统实施中获得的数据,而不是实施算法本身的弱点。例如,功耗、时序信息,甚至电磁泄漏都可以提供额外的数据来源,可供利用。
在一种情况下,研究人员通过仔细监控处理器内存缓存的状态,成功推断出 AES-128 密钥。但是,可以通过防止数据泄露的可能方式或确保泄露的信息与算法流程无关来减少此类情况。
阅读:研究人员在 3500 万核心小时内破解了最大的加密密钥 [RSA-240]
尽管存在潜在的旁道攻击和当前的理论攻击,但所有版本的 AES 仍然高度安全。正确实现的 AES 算法目前是牢不可破的。
事实上,世界上最强大的计算机需要超过 800 千万年才能暴力破解 128 位 AES 密钥。暴力破解 256 位密码所需的计算次数为 3.31 x 10 56 ,大致等于宇宙中的原子数。
申请
AES 包含在我们一直使用的程序中。例如,WinZip、RAR 和 UltraISO 使用 Rijndael 算法来加密您的数据。
BitLocker、CipherShed、DiskCyptor、VeraCrypt 和 FileVault 制作 AES 加密的驱动器映像。 IEEE 802.11i 是一种指定无线网络安全机制的 IEEE 标准,在 CCM 模式下使用 AES-128。
阅读:保存私人数据的 8 种最常见的加密技术
Facebook Messenger、Signal、WhatsApp 和 Google Allo 等一些最流行的消息传递应用程序使用 AES 来加密发送方和接收方之间的消息。
工业技术