#1 楼
人们为什么要购买红色跑车?它们的运行速度不会比任何其他颜色的跑车快。AES带有三种标准密钥大小(128、192和256位)。许多人看到了这一点,并认为如果存在三种不同的大小而不是只有一种,那么一定会有区别,并且由于256位版本比128位版本慢一点(大约40%),因此必须“更安全”。因此,他们选择了“最安全”的方法并选择256位密钥。
实际上,AES具有三种不同的密钥大小,因为它已被选为美国联邦算法,易于在各种应用中使用。受美国联邦政府控制的地区,其中包括美国陆军。美国陆军使用加密技术的传统由来已久,并且这种传统已结晶成内部规章,具有世界各地军队不断展现的所有灵活性和微妙性(只要听一些“军乐”,您就会明白我的意思) 。不幸的是,这是在计算机发明之前的很久以前发生的,那时大多数加密系统都可能被破坏,而且更强大的系统也很难使用且缓慢。因此,精明的军事头脑想出了应该有三个“安全级别”的想法,以便使用应有的沉重方法对最重要的机密进行加密,但是战术价值较低的数据可以用更实用的方法加密,如果较弱,则使用算法。
因此,这些法规要求三个不同的级别。他们的设计师只是假设较低级别在某种程度上一定是弱点,但是弱点不是强制性的。因此,NIST决定正式遵循法规(要求三个密钥大小),但也要做一些聪明的事情(最低级别必须在可预见的技术下坚不可摧)。 128位足以保证安全性(有关详细信息,请参见此答案)。因此,由于官僚作风,AES接受256位密钥:要求稍微有些荒谬(密钥大小过大)的事情比修改军事法规要容易。
大多数人不知道或不知道在乎历史,他们之所以大胆发展,是因为他们觉得自己应得的。
评论
您能否提供这三个级别确实仅满足(旧)军事法规的消息来源?对于我来说,这没有多大意义,如果128位足够安全,那么他们可能会为此使用128、136和156。根据您的说法,加密/解密时间会更短,但仍然安全。
–吕克
2012年9月6日在16:05
@Luc:128/192/256位用于美学:2的幂总是更好(并且3DES正式使用了192位密钥-其中24位被忽略,但这是另一回事了)。对于消息来源,那是当时有人直接告诉我的(我认为是Schneier),所以我没有书面消息来源。至于解密时间,它是Rijndael特有的;其他一些候选者对于所有密钥长度都提供相同的性能。
–托马斯·波宁(Thomas Pornin)
2012年9月6日18:15
256位密钥并非完全没有用。它们确实为防止量子计算机的可能性提供了防御,特别是可以将搜索空间减少一半的Grovers算法。我们还没有真正的量子计算机,而且没人知道我们什么时候会。关键是,如果您想保护自己的秘密超过50年,则可以选择当前接受的密钥大小的两倍。 en.wikipedia.org/wiki/Post-quantum_cryptography
– Steve Sether
2015年10月1日17:10
@SteveSether:借此机会指出“ 128位”限制绝不是通用的;我们使用128位密钥,因为这远远超出了传统计算所能破解的范围。 Grover的算法在理论上使搜索花费2 ^ 64的努力,但是这些是2 ^ 64的量子操作。单个质量控制操作的成本是否类似于单个经典操作的成本仍有待观察。目前,2 ^ 64 QC操作比2 ^ 64经典操作困难得多,这主要是因为QC计算机尚不存在。
–托马斯·波宁(Thomas Pornin)
2015年10月1日17:29
@ThomasPornin我认为关键是256位提供了一些额外的安全级别,但是却很少。还有很多事情有待观察。对于某些人来说,即使消息被破解的理论可能性也足以引起40%的额外CPU周期成本。大部分都归于NSA或CIA等。对于那些声称需要保护50年以上秘密的人,我也会提出同样的建议。 CPU便宜。
– Steve Sether
2015年10月1日在17:38
#2 楼
在构建安全系统时,您需要计划故障。这就是纵深防御策略的思想。随着时间的流逝,密码原语变得越来越弱。尽管一个128位基元就足够了,但是密码中可能会发现一个漏洞,从而降低了这种安全级别。因此,当带下划线的原语失败时,您需要添加安全边距。
例如md5产生128位哈希,但是使用选择前缀攻击,攻击者可以产生仅2 ^ 39的复杂度的冲突。
评论
本质上,这是关于安全裕度的。密钥越长,有效安全性越高。如果AES出现中断,从而减少了破解它所需的有效操作次数,则更大的密钥将为您提供更好的安全保护机会。此外,利用当今的商用硬件,256位AES和128位AES之间的性能差异很小。就像CodeInChaos提到的那样,更大的声音听起来更好,更安全。
–多项式
2012年4月23日在9:49
好的,逻辑不错。但是,如果没有发现严重的漏洞并且没有实现大型量子计算机,那么谁能确切地说出当前128位密码的强度?
– H M
2012年4月23日在10:24
@ HM,crypto.stackexchange.com / a / 753/706
– Mikeikeazo
2012年4月23日在11:35
关于md5的故事,我听说加密哈希算法通常不如密码算法可靠,因为它们没有像密码算法那样强大的安全性证明。我不知道细节,抱歉,不提供参考,但是我已经在多个地方多次阅读过这些单词,因此认为在这方面,哈希算法和密码算法之间确实存在差异。同样,在现代和标准加密算法(如AES)中,多年以来一直没有发现任何危险的突破。
– H M
2012年4月23日在11:59
与MD5的比较有点误导。由于生日的悖论,MD5的耐碰撞性从未超过2 ^ 64。
–英仙座
14年4月25日在11:05
#3 楼
我没有在答案或评论中提及此问题,因此我想将其添加为答案。密钥大小并不总是与算法的复杂性直接相关。一个常见的谬误是,假设使用AES256加密的消息比使用AES128保护的相同信息更难破解(对手仅获得密文就获得任何含义信息)。从逻辑上讲,提供更大的密钥会带来更大的复杂性,但是与任何系统一样,实现也存在弱点。假设您是在谈论AES 128与AES 256,那么密钥扩展功能中存在一个已知的弱点会影响AES256。从根本上讲,该弱点将AES256的复杂性降低到比AES128低的复杂性。 AES192也有类似的攻击,尽管在这种情况下,AES192的复杂性仍然大于AES128。
故事的寓意,人们不了解加密货币……j / k(我不是数学家)。现实是人们以“安全”来假设“大”。大枪总比小枪好。较大的密钥比较小的密钥更安全。
实际上,加密的实现比单独的密钥更重要。
评论
如果我没记错的话,这种弱点仅在使用AES是非常不寻常的模式时才有意义,而与使用随机密钥的任何典型加密模式无关。我很确定AES-256对于正常使用会更强(CBC,CTR等)
– CodesInChaos
2012年5月3日,9:14
用大枪总比用小枪好。在某人的脸上引爆沙皇炸弹比在其脸上引爆小男孩更具杀伤力,但无论如何他们都死了。
–森林
18 Mar 7 '18 at 10:16
@CodesInChaos另外,更大的键是否需要更多的回合才能实现完全扩散(如果我记得,给AES256的额外回合数是基于预感,而不是任何经验测试或证明)?还是只有密钥本身不统一才是问题?
–森林
18-4-24在7:20
@forest我希望只有在您想要达到256位密钥的更高安全级别或者密钥严重不一致时(例如后半部分是恒定的),这才有意义。还有一个问题是扩散是什么意思,要扩散的输入需要进行很小的改变的轮数,或者要扩散的键需要进行小的改变的轮数。
– CodesInChaos
18年4月24日在16:30
令人困惑的是,资料来源的结论不支持针对AES256的建议:“尽管这些复杂性比穷举搜索要快得多,但它们完全不切实际,并且似乎并未对基于AES的安全性构成任何真正的威胁系统”,来自eprint.iacr.org/2009/374
–xpereta
20年1月21日在13:43
#4 楼
FWIW,有关后量子密码的NIST草案建议256。http://csrc.nist.gov/publications/drafts/nistir-8105/nistir_8105_draft.pdf
评论
尽管他们说这可能是“过于保守的”,并没有考虑“更复杂的量子攻击的可能性”,但他们的确确实说过:“对于对称密钥系统,一种简单的启发式方法是将密钥长度加倍以补偿二次加速通过格罗弗的算法实现。”知道量子计算机已经取得了许多进步,并且对该技术的兴趣正在增长,这似乎是目前采取的一种合理方法。如果今天发送的消息使用不是“量子安全”的加密技术,则可能会在几年后被解密。
–youen
18年4月22日在15:06
进行更复杂的量子攻击的可能性是否没有证据证明格罗弗的算法是遍历有限键空间的最有效方法?即等效密钥空间永远不可能减少到小于2 ^(n / 2)/√k,其中n是位长,k是grover算法的并行实例数。我可能记错了。
–森林
18-4-24在7:15
#5 楼
你的前提对我来说似乎是错误的。我没有任何证据表明“大多数人使用256位而不是128位加密”。确实,如果我不得不猜测,我怀疑情况恰恰相反。评论
我认为您是正确的,因为默认情况下,大多数SSL设置都设置为首选128位。但是,我认为问题的关键是“如果反正128位是安全的,为什么要使用更长的密钥呢?”。
–多项式
2012年4月23日在9:51
例如,Firefox和Opera都更喜欢AES-256密码套件。他们甚至更喜欢具有AES-256的非(EC)DHE套件,而不是具有IMO的具有AES-128的(EC)DHE套件。
– CodesInChaos
2012年4月24日17:56
#6 楼
最终,您遇到了类似于压缩软件的问题,过多的压缩可能会导致数据丢失。虽然“理论上”加密强度没有有限的数字,但这并不意味着您需要对256位以上的数据进行加密。从技术上讲,您可能会这样做,但是要冒着花一个月或几年时间才能启动并加载操作系统的机器的风险?处理加密强度是128位加密就够了,还是您需要更多3338b53f1e3d#7 楼
我假设您正在谈论对称密码学。答案是它永远都不够安全(即使我怀疑使用256位和128位密钥是使客户感到更安全的营销策略)。不要忘了上升的趋势量子计算,大大减少了暴力攻击所需的时间。
评论
是的,它是对称的。关于量子计算机的维基百科说:“本内特,伯恩斯坦,布拉萨德和瓦济拉尼在1996年证明,在量子计算机上进行强行密钥搜索的速度不能快于底层密码算法的大约2n / 2调用,而在密码学中大约是2n / 2。因此,在大型量子计算机的存在下,n位密钥至少可以提供n / 2位安全性。通过将密钥长度加倍,很容易消除量子暴力。
– H M
2012年4月23日在10:34
但是在我看来,为了使这种攻击变得切实可行,需要非常大型的成熟量子计算机,我认为这不可能很快实现。无论如何,如果需要相对长期的保护,使用256位似乎是一个好主意(并且更改所需的密钥/密钥长度不切实际),尽管在量子计算机时代256位将变成128位,所以为什么不使用512一点?但我个人不记得有任何512位支持密码!
– H M
2012年4月23日在10:34
@HM“通过加倍密钥长度很容易克服量子暴力”。我对此一无所知,所以我不会赘述,但这是对的,您可以理解为什么在任何情况下都使用256位而不是128位:),正如您所说的,较长的键可以使您长期使用保护,这可能足以证明其使用合理性。
–user1301428
2012年4月23日在10:50
无论如何,在很多情况下仅在密钥交换的公共密码上运行Schors算法就容易了。
– ewanm89
2012年4月23日在11:12
它很容易就足够安全了。 2 ^ 128很难,但从理论上讲似乎是合理的,而2 ^ 256则远远超出了我们为制造机器而拥有的任何想法的范围。但是,对于“完美高效”的计算机(我很确定,就我们所知,这是不存在的),这些限制实际上变得毫无意义。这实际上可以归结为:从理论上讲很难,或者仅鉴于我们有什么想法怎么做才很难?我怀疑大多数人都更关注后者。
–用户
17年1月19日在22:35
评论
因为它更大,所以听起来更好。我认为最少128位是在考虑到较大的安全余量的情况下确定的。也许很多人不知道,所以认为128和256之间的差异对他们的需求很重要。如果用128位密钥需要500年才能破解密文,而用256位密钥需要1000000000年才能破解?
daemonology.net/blog/2009-07-31-thoughts-on-AES.html
我可能记错了这一点...如果要加密大量数据,则如果有足够的数据,则可能会得到重复的子项(子项可能是错误的术语)。这在功能上等同于重用一个键盘的密码。我相信密钥大小,块大小和密码模式决定了多少数据就是太多数据。
量子计算的进步将在可预见的将来将对称密钥密码系统的有效密钥大小减少一半。 2 ^(128/2)= 2 ^ 64 =可以想象在量子计算机上是蛮力的。 2 ^(256/2)= 2 ^ 128 =仍然安全。