发布于 2015-06-13 15:03:49
您的引用描述了对称密钥的强度,但是您的反示例(1024,2048位)引用密钥用于非对称加密。强度所需的比特数在两者之间是不同的。
您引用的是“应用密码学”第7.1节;例如,如果您转到7.2节,您将看到Schneier关于有安全非对称密钥需要多长时间的预测:

他的预言发表于1994年,结果看起来相当合理,除非它在各个片段中都比较平平(例如,个人不接受较小的密钥长度)。(出于非历史目的,您应该寻找更多最新的建议,如由KeyLength.com总结)。
发布于 2015-06-13 16:34:58
使用大键有几个原因。
你的引文只提到对对称密钥的暴力攻击。如果算法中存在弱点,那么就会出现比蛮力更快的攻击。这是一个很好的理由来设计有一定安全裕度的算法,这样,一旦有人发现算法中有一点弱点,它就不会被破坏。
非对称算法必然比对称算法具有更多的结构。而这种额外的结构意味着更大的密钥来达到相同的安全级别。在某些情况下,可以非常准确地量化额外的密钥大小。例如,可以使用密码散列作为唯一的原语来构建签名方案。可以非常精确地计算匹配底层256位密码散列安全性所需的密钥大小。
在其他情况下,非对称算法与对称算法的强度之间的关系是基于从已知攻击中计算出来的。您不能直接将RSA的特定密钥大小的安全性与SHA2哈希的特定输出长度进行比较。但是,您可以计算出在最有效的公开攻击情况下,每种攻击所需的计算能力。
此外,还有量子计算要记住。我们目前对量子计算的理解表明,对于对称密钥,如果量子计算成为现实,则需要将密钥大小加倍,才能使它们保持安全。我不知道这个256位的数字应该是在这一倍之前还是之后。
发布于 2015-06-13 15:35:55
强度在128位或更高的密钥目前被认为是不可能被打破的。但是,这并不一定意味着密钥本身是128位。密钥大小与键强度有关,但它甚至不必与键强度成线性关系。以RSA为例,您需要一个15K的位密钥才能保证256位的安全性。查看键大小和键强度如何相互关联的最佳方法是查看keylength.com (向下滚动到第二个表)。
不过,这只是与力量相关的关键尺寸。如果您编码一个私有RSA密钥,您至少需要密钥大小的两倍,用于模数和私钥(除非您希望再次从头生成整个密钥对,那么您可以为随机数生成器和大量CPU时间使用128到256位的种子)。如果包含CRT参数、ASN.1开销和ASCII装甲,则密钥的编码会快速增长。但是,秘密密钥通常被编码为原始字节。因此,128位的编码密钥实际上可能只需要16字节。
注意,除非密钥大小明显不足,否则其他攻击可能更可行。想想协议错误、侧通道攻击、密钥生成错误--清单还在继续。我认为,在StackOverflow上提出的问题中,大约有10%的问题显示了一种可以依赖于健全的加密实践的实现。选择正确的密钥大小可能是任何安全系统中最简单的部分。
https://security.stackexchange.com/questions/91571
复制相似问题