熵问题的答案是,是的,256 位机密不能被暴力破解,也不会很快变得实用。
但是您需要使用更大的密钥和非对称加密算法。也更难预测这些类型的键有多强。密钥强度和密钥长度并不总是相同的。 (256 位 RSA 没有 256 位强度。)非对称算法的世界比对称算法更具有军备竞赛的性质。
我经常看到与比特币哈希率或 DES 破解硬件相关的暴力破解。您不能将用于这两个目的的性能指标直接转换为针对其他算法的强力性能指标,但我们可以将它们用于估计。
看起来 2018 年比特币的峰值估计哈希率约为 60 million terra-hashes per second。为了便于计算,让我们将每秒 60 * 106+12 个哈希值取整为 2 的下一个幂,即 266。
现在假设
- 我们提高了硬件的效率。假设某些新技术在使用相同数量的能源的情况下完成的工作量是现代硬件的 100 万倍。
- 人类设法以某种方式产生了一百万倍的电力。 (也许使用融合或魔法。)
- 假设我们获得了新技术并且我们的计算机时钟速度增加了一百万倍。
- 我们的 GPU 拥有 100 万倍的内核,或者我们可以将计算机尺寸缩小相同的倍数。
- 人类居住在其他恒星系统中,我们的人口增加了 100 万倍。
- 每个人都能买得起比现在多一百万倍的计算机,而且他们都想猜测您的 256 位秘密。
让我们假设每个改进都是正交的,并且我们的蛮力与所有这些改进成线性关系。让每 100 万个舍入到 220。我们的新性能衡量标准是每秒 266+6(20) = 2186 次猜测。测试每个可能的 256 位值需要多长时间?
需要 2256 / 2186 = 2256-186 = 270 秒。那是超过 37 万亿年。比大爆炸以来所经过的时间长数千倍。所以使用 256 位的熵是相当保守的。
(而我们目前在现实世界中拥有的技术和资源,我们甚至无法暴力破解 128 位机密。)
在对称算法方面,量子计算机并不是一个大问题。如果我们使用 256 位对称密钥,那么仍然需要使用 Grover's algorithm 进行 2128 次函数评估。然而,假设在量子计算机上进行 n 次评估的成本至少是在经典计算机上进行 n 次评估的成本是合理的。
如果您生成许多随机值并期望每个值都是唯一的,则您需要使用两倍于您可能认为由于birthday problem 而需要的位。对 k 位散列函数的一般碰撞攻击的成本大约相当于 2k/2 个散列函数评估。对于量子计算机,它可能是 2k/3。 (所以不要混淆密钥长度和哈希函数输出长度。)
这些通用攻击假定了一个理想的功能。特定算法可能会被“破解”,这意味着发现了比蛮力更好的攻击。
重要的是,您生成的任何秘密都是使用不可预测的输入派生的。如果你想要一个 n 位的安全级别,你需要有 n 位的熵。 (因此您不能使用 Mersenne Twister 或 PCG,也不能使用系统时间或密码初始化 RNG。)
256 位的熵在 2018 年是不错的,除非不可思议的科幻般的技术进步或魔法,在 3018 年仍然是安全的。
另外,请参阅Landauer's principle,它限制了我们进行计算的效率。出于显而易见的原因,我什至不会尝试将这个基于时间的论点转换为美元金额。