这些关于现代 CPU 和 AES 解密的说法是真的吗?

信息安全 AES 密码破解 解密
2021-09-02 11:15:07

由于这个问题的格式,在将它发布到这个网站或怀疑论者之间是一个折腾,但我最终选择了这里,因为我可能更有可能得到一个明确的答案。

根据以 InfoSec 为主题的 Twitter 帐户@SwiftOnSecurity,在一条推文上,该推文是此处看到的更大线程的一部分:

有趣的事实:现代 CPU 可以以每秒几 GB 的速度解密 AES,使用率约为 3%。说真的,这甚至不再是一个考虑因素。

对我来说,这里的“现代”一词似乎意味着“平均”,正是这一点让我在最初遇到这种说法时怀疑是夸张的。根据我自己使用几个不同的 RAR 破解程序对采用 AES 加密的 WinRAR 文件进行密码破解的经验,我很难相信普通 CPU 可以做到这一点。

我在双核 i3-2100 上的平均速度仅为 200 p/s,而我使用的所有程序都花了一天的大部分时间来处理包含数百万个密码的纯文本字典。此外,这始终是通过将 CPU 以 100% 的使用率推到极限来实现的。诚然,i3-2100 不再是现代 CPU,所以也许去年左右发布的 CPU 已经有了显着改进,因此我在这里提出以下问题。

2017 年生产的平均 CPU 是否能够以每秒几 GB 的速度解密 AES?

这样的 CPU 是否能够以仅 3% 的使用量来执行此操作?

有问题的引用是否歪曲或过度简化了主题,还是相当准确?

免责声明:我绝不是信息安全专业人士,也没有深入研究过信息安全,所以如果我在这里发言,我在此先道歉,这是不可原谅的无知。

3个回答

在现代英特尔 CPU 上,使用密钥进行AES 解密肯定会以 GB/s 的速度进行。暴力破解整个 AES 密钥空间(例如 2^128 种可能性)在今天被认为是不可能的比宇宙年龄还多)。

AES 被认为是如此强大,以至于已知明文攻击和差分密码分析可以与在(不)合理的时间(数十亿年)内获取明文的蛮力相提并论!

AES 加密实现了类似的速度,因此 SwiftOnSecurity 认为关于 HTTPS 如何影响性能的说法已经过时。

您好,这是@SwiftOnSecurity,他在问题中写了引用的推文。

请忽略我的 3% 索赔。这是一个我不应该为我的中心点服务的临时评论。我错误地使用这样一个微不足道的数字来强调开销通常不是问题,消费级 CPU 甚至可以处理荒谬的解密速度要求。

老实说,我确实认为它低于 10%,因为我认为核心 AES-NI 指令以某种方式免除了 CPU 利用率,并且不会最大化核心。这就是“3%”主张的主旨。我对 CPU 体系结构知之甚少,它在这里显示。

我将在返回 Twitter 时进行更正。(目前正在休息)

再次,我对误导性信息深表歉意。我确实尝试在我的具体技术声明中总体可靠。我很谦虚,您对此想得足够多,可以在 StackExchange 上提问。

问候,
斯威夫特

是的,至少如果您忽略“3%”部分,该声明基本上是正确的。例如,根据这些基准测试结果,英特尔酷睿 i3-6100 3.70 GHz CPU(来自英特尔的上一代低端台式机 CPU 系列,因此可能相当代表“普通现代 CPU”)可以执行 AES在单个内核上以每秒 3.28 GB 的速度进行加密(或者可能是解密),几乎是使用两个内核的两倍。

我不完全确定声明中的“3% 使用率”部分应该是什么意思;从表面上看,即意味着进行加密只会使其他同时处理的速度降低 3%,这似乎不切实际。借助超线程,您大概可以同时在该 Core i3 CPU 上运行多达三个其他线程,同时仍保持接近完整的单核 AES 吞吐量,但这仍然是 25% 的 CPU 使用率,而不是 3%。我想如果您升级到具有 16 个内核的高端服务器 CPU,那么通过超线程,您可以同时运行多达 31 个其他线程,CPU 使用率为 3.125%。这可能就是索赔的内容,即使这不再是“平均水平”了。

那么为什么密码破解仍然如此缓慢呢?那是因为它被设计成很慢。具体来说,任何设计合理的基于密码的加密方案都将使用故意缓慢的迭代密钥派生函数来实现密钥拉伸基本上,当你输入密码时,软件做的第一件事就是哈希几千、几百万或几十亿次;然后使用所有这些重复散列的最终结果来生成实际的 AES 密钥。在现代 CPU 上,所有这些散列仍然只需要一小部分时间,因此普通用户几乎察觉不到。但是,它有效地减慢了蛮力密码猜测尝试的速度,其速度与每个密码需要被散列的次数成正比。