AES 加密如何工作?

AES 是一种对称密钥加密密码,通常被视为加密数据的“黄金标准”

AES 已获得 NIST 认证,并被美国政府用于保护“安全”数据,这导致 AES 被更广泛地采用,作为几乎每个人选择的标准对称密钥密码。它是一个开放标准,可免费用于任何公共、私人、商业或非商业用途。

AES 是一种对称密钥加密密码。这意味着用于加密数据的相同密钥也用于解密它。这确实产生了一个问题:如何以安全的方式发送密钥?

非对称加密系统通过使用每个人都可以使用的公钥来保护数据来解决这个问题。它只能由持有正确私钥的预期接收者解密。

这使得非对称加密能够更好地保护传输中的数据,因为发送者不需要知道接收者的私钥。一个很好的例子是RSA加密,用于保护连接到安全 HTTPS 网站时所需的 TLS 密钥交换。

因此,像 AES 这样的对称密码在保护静态数据(例如当数据存储在硬盘驱动器上时)方面要好得多。为此,它们优于非对称密码,因为:

  • 它们需要的计算能力要少得多。这使得使用对称加密加密和解密数据比使用非对称加密快得多。从长远来看,对称密码通常被认为比非对称密码“快 1000 倍”左右。
  • 由于速度更快,对称密码对于批量加密大量数据更加有用。 RSA 等非对称密码仅真正用于加密少量数据,例如用于保护对称密钥加密的密钥。

当然,在当今的互联世界中,仅位于硬盘驱动器上的数据的用途有限。幸运的是,它可以与非对称加密结合在互联网上安全地传输,非对称加密用于处理安全连接到远程服务器所需的远程密钥交换。

开放VPN例如,使用对称密码(现在通常是 AES)来保护原始数据。为了在您的 PC 和 VPN 服务器之间安全地传输加密数据,它使用非对称 TLS 密钥交换来协商与服务器的安全连接。

AES 加密是最好的加密类型吗?

AES 被广泛认为是迄今为止发明的最安全的对称密钥加密密码。其他被认为高度安全的对称密钥密码也存在,例如由著名密码学家 Bruce Schneier 共同发明的 Twofish。

不过,此类密码尚未像 AES 那样经过实战检验。嘿,如果美国政府认为 AES 是保护其“安全”数据的最佳密码,谁在争论呢?然而,有些人认为这是一个问题。请参阅下面有关 NIST 的部分。

AES 的广泛采用在其他方面也让 AES 受益。大多数 CPU 制造商现已将 AES 指令集集成到其处理器中。硬件提升提高了许多设备上的 AES 性能,并提高了它们对侧信道攻击的抵抗力。

128位AES加密能被破解吗?

如果正确实施,AES 本身是牢不可破的。

2011 年,世界上最快的超级计算机是 Fujitsu K。它的 Rmax 峰值速度为 10.51 petaflops。根据这个数字,可以Fujitsu K 1.02 x 10^18 - 大约十亿亿(五分之一) - 年强制破解 128 位 AES 密钥。这比宇宙的年龄(137.5 亿年)还要古老。

2017年全球最强大的超级计算机是中国的神威·太湖之光。这头野兽的峰值速度可达 93.02 petaflops。这意味着世界上最强大的计算机仍需要大约 885 万亿年才能暴力破解 128 位 AES 密钥。

暴力破解 256 位密码所需的操作次数为 3.31 x 10^56。这大约相当于宇宙中原子的数量!

早在 2011 年,密码学研究人员就发现了弱点AES 使他们破解算法的速度比以前快四倍。但正如一位研究人员当时指出的那样:

“从这个角度来看:在 1 万亿台机器上,每台机器每秒可以测试 10 亿个密钥,需要超过 20 亿年才能恢复 AES-128 密钥。”

为了应对这种攻击,AES-128 加密过程中又添加了四轮(见下文),以提高其安全裕度。

侧信道攻击

因此,无论出于何种目的,只要正确实施,AES 本身就牢不可破。但它并不总是得到正确实施。

侧通道攻击从实施 AES 加密的计算机系统中寻找线索,以找出其他信息。这可能有助于减少暴力破解 AES 所需的可能组合的数量。

这些攻击利用计时信息(计算机执行计算需要多长时间)、电磁泄漏、音频线索,甚至使用高分辨率摄像头拾取的光学线索来发现有关系统如何处理 AES 加密的额外信息。

针对 AES 的著名旁道攻击成功推论出通过仔细监控密码对处理器缓存表的共享使用来实现 AES-128 加密密钥。

正确实施的 AES 可以通过防止可能的数据泄漏方式(这是使用基于硬件的 AES 指令集的帮助)以及通过使用随机化技术来消除受密码保护的数据与可以使用旁路攻击收集的任何泄漏数据之间的关系来减轻旁路攻击。

不安全的密码

AES 加密的安全性取决于其密钥。这些密钥本身总是使用密码进行保护,我们都知道如何糟糕的我们人类擅长使用安全密码。由病毒、社会工程攻击等引入的键盘记录器也可能是破坏保护 AES 密钥的密码的有效方法。

使用密码管理器使用双向防火墙、优秀的防病毒软件以及更多有关安全问题的教育可以极大地缓解这个问题。

AES 加密简史

当您还是个孩子的时候,您是否玩过通过用消息中的一个字母替换另一个字母来创建“秘密消息”的游戏?替换是根据您选择的公式进行的。

例如,您可能已将原始消息的每个字母替换为字母表中后面的三个字母。如果其他人知道这个公式是什么,或者能够算出它,那么他们就能够读取你的“秘密信息”。

用密码学术语来说,您所做的就是根据非常简单的数学算法“加密”消息(数据)。

自此以来,加密一直被用于隐藏敏感数据古代,但真正的出现是在二十世纪。第二次世界大战期间,德国人利用恩尼格码机,该代码同样被阿兰·图灵在布莱切利公园破解。

什么是 DES 加密

数据加密标准 (DES) 于 20 世纪 70 年代中期创建,旨在保护美国政府通信的安全。它成为第一个现代、公开、免费的加密算法,因此几乎单枪匹马地创建了现代密码学学科。

尽管 DES 是由 IBM 开发的,但它是美国国家标准局 (NBS,后来的 NIST) 的创意。

尽管担心 NSA 的干预,美国政府还是于 1976 年针对“敏感但非机密”的流量采用了 DES。这包括个人、财务和后勤信息等。

由于当时没有其他类似的方法,因此它很快被需要加密来保护数据的商业公司广泛采用。因此,DES(使用 56 位密钥)成为近二十年来默认的主力加密标准。

DES 被授予联邦信息处理标准 (FIPS) 地位,这对这种几乎无处不在的采用有很大帮助。所有美国非军事政府机构和民事政府承包商都必须仅使用 FIPS 标准。

然而,到了 20 世纪 90 年代中期,DES 开始显得过时了。当时,人们普遍认为 NSA 可以暴力破解 DES,这一点在 1998 年得到了证明,当时电子前沿基金会 (EFF) 制造的一台耗资 22 万美元的机器在短短两天内成功破解了 DES。显然是时候制定新标准了。

AES 是如何产生的

1997 年,美国国家标准与技术研究所 (NIST) 宣布正在寻找 DES 的替代品。 2001 年 11 月,它宣布获胜者:AES,以前称为 Rijndael,以其联合创始人之一的名字命名。

根据 NIST 的建议,新密码被美国联邦政府正式采用,并于 2002 年 5 月开始有效使用。与之前的 DES 一样,AES 也获得了 FIPS 地位。美国政府认为所有 AES 密钥大小足以满足“机密”级别的机密信息,“绝密”信息需要 AES-192 或 AES-256。

AES 现已在全球范围内完全取代 DES,成为默认的主力对称加密标准。

AES 加密如何工作?

AES 加密算法以 128 位块的形式对数据进行加密和解密。它可以使用 128 位、192 位或 256 位密钥来执行此操作。使用 128 位密钥的 AES 通常称为 AES-128,等等。

下图提供了 AES 过程的简化概述……

纯文本

这是您要加密的敏感数据。

秘密钥匙

这是由算法创建的 128 位、192 位或 256 位变量。

密码

然后,实际的 AES 密码以明文和密钥为起点执行一系列数学转换。按顺序,这些是:

  1. 密钥扩展。这使用原始密钥通过 Rijndael 的密钥调度算法派生出一系列新的“轮密钥”。
  2. 混合。每个轮密钥都使用加法与明文组合异或算法

  3. 使用替换表替换结果数据。此步骤在原理上与您小时候创建的替换密码非常相似(如果实践中要复杂得多)。

  4. 移动行。其中构成 128 位块的 4 x 4 列(共 16 个字节)中的每个字节都右移。

5. 混合色谱柱。进一步的算法应用于每一列。

站起来并重复。该过程重复多次,每次重复称为一轮。每轮都使用密钥扩展期间生成的轮密钥之一重新加密(步骤 1)。

执行的轮数取决于所使用的密钥长度。 AES-128 使用十轮,AES-192 使用十二轮,AES-256 使用十四轮。

每增加一轮都会减少 2011 年用于攻击 AES-128 的那种捷径攻击的机会。正如已经指出的那样,由于这次攻击,AES-128 中又添加了四轮,以提高其安全裕度。

密文

这是密码经过指定轮数后的加密输出。

如何解密 AES 加密

解密 AES 很简单——只需颠倒上述所有步骤,从逆轮密钥开始。当然,您需要拥有原始密钥才能使用每个逆轮密钥反转该过程。

加密文件会使其变大吗?

是的。通常。 AES 使用 16 字节的固定块大小。如果文件不是块大小的倍数,则 AES 使用填充来完成块。

从理论上讲,这并不一定意味着加密数据大小的增加(请参阅密文窃取),但简单地添加数据来填充块通常要容易得多。这增加了加密的数据量。

传闻证据表明,使用 AES 加密的大于 1 MB 的文件往往比加密前大 35% 左右。

AES 加密中密钥大小有多重要?

衡量密码强度的最粗略方法是通过密钥的大小。键越大,可能的组合就越多。

AES 可与 126 位、192 位或 256 位密钥大小一起使用。最初的 Rijndael 密码被设计为接受额外的密钥长度,但这些并未被 AES 采用。

暴力攻击

算法越复杂,使用密码破解的难度就越大暴力攻击。这种非常原始形式的攻击也称为穷举密钥搜索。它基本上涉及尝试所有可能的数字组合,直到找到正确的密钥。

我们确信您知道,计算机使用二进制数(零和一)执行所有计算。正如我们所看到的,密码的复杂性取决于其密钥大小(以位为单位) - 表达其算法所需的 1 和 0 的原始数量,其中每个 0 或 1 由单个位表示。

这称为密钥长度,也代表了对任何给定密码成功执行强力攻击的实际可行性。

可能的组合数量(以及因此暴力破解它们的难度)随着密钥大小呈指数增长。对于 AES:

正如我们已经讨论过的,世界上最快的超级计算机甚至需要比宇宙年龄更长的时间才能破解 AES-128 密钥!

加密轮次

正如我们还讨论过的,AES 使用的密钥越长,它经历的加密轮次就越多。这主要是为了防止捷径攻击,捷径攻击可以降低密码的计算复杂性,从而更容易暴力破解密码。

正如已放弃密码学家布鲁斯·施奈尔 (Bruce Schneier)2011 年对 AES-128 的快捷攻击,

“密码学就是关于安全边际的。如果你能破解n一轮密码,你用 2 来设计它n或 3n回合”。

他确实建议为 AES 的每个密钥大小引入更多轮次,但 NIST 认为当前的级别足够了。

那么为什么要使用 AES-128 以外的标准呢?

所有这些都引出了一个问题:如果破解 AES-128 需要比宇宙年龄更长的时间,为什么还要使用 AES-192 或 AES-256?正如施奈尔指出的:

“我建议人们不要使用 AES-256。在可预见的未来,AES-128 提供了足够的安全裕度。但如果您已经在使用 AES-256,则没有理由进行更改。”

事实上,Schneier 过去曾指出,AE-128 实际上比 AES 更安全,因为它具有更强与 AES-256 相比的密钥调度。

那么为什么 AES-256 被视为对称密钥加密的黄金标准呢?

安全裕度

2011 年的捷径攻击表明,无论专家认为密码算法有多安全,有创造力的人总会找到没人想到的方法来削弱它们。

与使用的轮数一样,较大的密钥大小可以提供更高的防止破解的安全裕度。

金光闪闪

考虑到 AES-256 加密的普遍性,营销的影响不容忽视。 AES-256 被广泛认为是世界上最安全的对称加密密码,这一简单事实使其成为许多人的第一选择。

我的意思是,如果 AES-128 很好,那么按理说 AES-256 一定更好,对吗?

美国政府使用 AES-256 来保护其最敏感数据的事实只会增加其“闪亮”价值,并允许 VPN 公司等声称他们使用“军事级”加密。

鉴于这种“金光闪闪的感知”(很大程度上)是准确的,AES-256 的普及几乎没有什么坏处(尽管请参阅下面 NIST 的注释)。

AES 和 OpenVPN

然而,VPN 用户尤其应该小心。大多数 VPN 服务使用 AES-256 来保护 OpenVPN 协议传输的数据的安全,但这只是 OpenVPN 用于保证数据安全的各种机制之一。

使用 OpenVPN 时,TLS 连接可确保 AES 所使用的加密密钥的传输安全,以保护数据的安全。因此,如果 OpenVPN TLS(控制通道)设置较弱,则尽管使用 AES-256 加密,数据仍可能受到损害。请参阅我们的VPN 加密终极指南了解更多详情。

AES-CBC 与 AES-GCM

直到最近,您在 VPN 世界中可能遇到的唯一 AES 密码是 AES-CBC(密码块链)。这是指分组密码模式,这是一个不值得在这里讨论的复杂主题。

尽管 CBC 理论上可能存在一些漏洞,但共识是 CBC 是安全的。 OpenVPN 手册中确实推荐了 CBC。

OpenVPN 现在还支持 AES-GCM(Galios/Counter 模式)。 GCM 提供身份验证,无需 HMAC SHA 哈希函数。它也比 CBC 稍快,因为它使用硬件加速(通过线程到多个处理器核心)。

AES-CBC 仍然是最常用的模式,但 AES-GCM 越来越受欢迎。鉴于 GCM 的优势,这种趋势很可能会持续下去。不过,从加密角度来看,AES-CBC 和 AES-GCM 都是高度安全的。

美国国家标准技术研究院

AES 是 NIST 认证的标准。这是一个自认在运作的机构密切与国家安全局合作开发密码。

鉴于我们现在所知的 NSA 系统性地削弱国际加密标准或在国际加密标准中建立后门,我们有充分的理由质疑 NIST 算法的完整性。当然,NIST 强烈反驳了此类指控:

NIST 不会故意削弱加密标准。

它还邀请了公众参与在许多即将提出的加密标准中,此举旨在增强公众信心

纽约时报然而,指责 NSA 通过引入无法检测的后门或颠覆公共开发流程来削弱算法,从而规避了 NIST 批准的加密标准。

当 RSA Security(EMC 的一个部门)私下告诉客户停止使用据报道存在缺陷的加密算法时,这种不信任进一步加剧。工程化的由国家安全局。该算法也得到了 NIST 的认可。

此外,双EC_DRBG(双椭圆曲线确定性随机位生成器)是 NIST 设计的加密标准。多年来,人们都知道它是不安全的。

2006年 荷兰埃因霍温理工大学著名的对它的攻击很容易在“普通 PC”上发起。微软工程师也提出了要求疑似后门在算法中。

尽管存在这些担忧,但 NIST 引领的领域,整个行业也紧随其后。这在很大程度上是因为遵守 NIST 标准是获得美国政府合同 (FIPS) 的先决条件。

NIST 认证的加密标准(例如 AES)在全球范围内几乎无处不在,遍及依赖隐私的工业和商业的所有领域。这让整个情况变得相当令人不寒而栗。

也许正是因为如此依赖这些标准,密码学专家一直不愿意正视这个问题。

图片来源:xkcd.com/538。