我的背景是,在加密方法考试中,我需要计算暴力攻击成功的预计时间。因此,我需要对用于破解算法的系统做出假设。
作为讲座中的一个例子,我有:
- 假设每秒进行一百万次测试(快速)
- DES 有 2^56 个密钥
我想对比现代个人计算机和复杂系统(许多处理器 - 例如每秒 900 亿个测试/密钥)
如何将 4 核 3.5 GHz 处理器粗略地转换为每秒的运算次数?
每秒一百万次测试相当于 800 Mhz / 3k mhz?
抱歉,听起来很蠢,但显得愚蠢总比显得错误要好。
答案1
我怀疑您误解了讲师的问题。
当 Q 写“假设每秒进行一百万次测试”时,这意味着“假设它可以每秒测试一百万个密钥”。实际的物理实现并不重要。
这使得答案变得相当简单:
256个按键/每秒 1,000,000 个按键
整个键空间需要 72057594037 秒。
(相当于 833999 天或 2283 年)。
这是为了所有的键空间。一般你只需要检查一半,答案就是 1141 年。
加分项:
- 这是假设 PC 速度在这 1141 年内不会增加。
- 即使用单个系统来解决这个问题。(请参阅 dnetc 和类似内容,了解如何解决该问题)
- 而且它假设了相同的架构。标准的愚蠢 PC,擅长通用任务,一千年来只做一组非常专业的操作。
这显然不是完成这些任务的方法。
值得一看: 大型CCC记录
我想对比一下现代个人计算机和复杂系统(许多处理器 - 例如每秒 900 亿个测试/密钥)
在现代 PC 上获取实际(而非理论)速度的最简单方法是遍历密钥空间的一部分。测量每小时实际签入的密钥数量。(或任何足够长的时间段来计算平均值)。
这不是一个非常科学的解决方案,但它会给你非常好的实际答案。
如何将 4 核 3.5 GHz 处理器粗略地转换为每秒的运算次数?
事实并非如此。不同的操作需要不同的周期数。一个简单的加法可能只需要一个时钟周期。乘法可能需要 80 个。所以你需要提前知道你要使用什么。为了让事情变得更加复杂,你需要调整管道衬里,你需要假设没有热节流。你需要补偿初始涡轮增压,这将使计算的前几秒更快。你需要补偿环境温度、冷却质量……
每秒一百万次测试相当于 800 MHz / 3k MHz?
因为 MHz 并不能告诉您 CPU 的速度有多快。
我所能想到的最接近的非技术性类比是将其与发动机转速或骑自行车时腿部的旋转速度进行比较。 没有指定您处于哪个档位或者您使用的是 10CC 发动机还是巨大的 10 升发动机。