这是我一直想知道并试图找到答案的事情,但还远远没有找到答案。
当 AES 仅使用密钥时,为什么需要4096-bit
DSA/El-Gamal256-bit
密钥?
这是我一直想知道并试图找到答案的事情,但还远远没有找到答案。
当 AES 仅使用密钥时,为什么需要4096-bit
DSA/El-Gamal256-bit
密钥?
对称密钥只是一堆比特。当您拥有 128 位对称密钥时,您就有 128 位,具有以下两个重要特征:
这两个特征意味着(除非使用这些密钥的加密算法有一些弱点),如果你想破解这样一个密钥,你别无选择,只能尝试所有可能的密钥,直到你幸运并击中正确的一个,平均费用为 2 127 次试验。
使用非对称算法,事情不会那样发展。要获得“不对称”,您不能像对称算法那样将操作和关键位拼凑成一个大杂烩;你需要数学。结构。所以公钥将是一个具有很多内部结构的编码数学对象:
在 RSA 用语中,公钥是一对整数:模数和公共指数。公共指数通常很短。“密钥长度”传统上是模的长度(以位为单位),其中数学结构隐藏:模是一个大的复合整数,隐藏的结构是模的两个(或更多)素因数的知识. 我们知道整数分解算法可以在少于 2 n -1次试验中分解一个n位模数。
最终结果是非对称密钥“大于其强度”:数学结构需要空间。
另一个后果是非对称密钥实现的“强度”取决于密钥类型:例如,ECDSA 密钥内部使用椭圆曲线,这与整数分解几乎没有关系。所以通常估计你用 256 位曲线得到“128 位强度”。
碰巧的是,由于某种奇怪的巧合(嗯,大多数情况下),基于离散对数模一个大素数的算法(Diffie-Hellman、DSA、ElGamal——不是椭圆曲线变体)提供的强度大致类似于RSA 对于相同大小的模数。从那里出现了一种传统(且令人困惑)的习惯,即谈论“非对称密钥强度”,就好像它是“密钥大小”的通用属性,而不管实际的密钥类型和算法如何。这是一个错误但普遍存在的观念。
有关关键强度估计的详细信息,请参阅此站点。
尼安德特人,对于某些作者来说,应该被称为智人尼安德特人,显然能够进行抽象思维,并留下了神秘主义的痕迹(例如葬礼)和一些艺术品(虽然不多)。然而,他仍然是一个“狩猎采集者”,当你整天试图将长矛插在一只大动物身上以免挨饿时,你倾向于对日常问题采用实用、严肃的解决方案。除非你有足够规模的农业和城市来支持那些对今天的晚餐没有直接贡献的人,否则你不会找到数学家。
在可预见的未来,对称密钥实际上被认为是安全的 128 位。RSA 需要 2048 位密钥才能实现 112 位安全性,而 ECC 仅需要 256 位才能实现 128 位安全性。
在所有情况下,密钥的长度都是完全无关的。重要的是可能发生什么样的攻击。使用对称密钥,它本质上是一个任意长度的随机字符串;攻击者除了密钥长度之外没有其他限制。这意味着蛮力是一个普遍的搜索问题,即使在 2^128 个可能的键上也需要非常非常长的时间。
对于非对称密钥,有两个因素。首先,很少有适当长度的字符串是有效的 RSA 密钥。这意味着 2048 位给你留下了很多与长度相似的对称密钥相比,检查的可能性更少。此外,你会是一个随机蛮力的白痴:你有一个公钥,并且知道它与私钥有什么关系。您可以改为使用复杂且效率最高的算法来尝试获取私钥(例如,您可以尝试分解 RSA 密钥)。使用椭圆曲线加密,这些对安全性的影响比使用 RSA 低得多,这是 ECC 的主要优势——ECC 需要的密钥大约是类似对称算法的两倍,而 RSA、DH 和其他有限域上的问题需要更长的密钥才能获得类似的安全级别。
这归结为算法设计。
对称算法被设计为尽可能简单和快速(无论如何用于密码学),并保持高水平的安全性。具有 256 位的对称 AES 密钥产生 256 位的工作。目前这是足够的安全性。非对称加密要求密钥大小更大以提供等效的安全级别(以位为单位)。