为什么大多数人使用 256 位加密而不是 128 位?

信息安全 密码学 加密
2021-08-13 23:43:23

对于大多数实际应用来说,128 位安全性还不够吗?

4个回答

人们为什么要买红色跑车?它们不会比任何其他颜色的跑车跑得更快……

AES带有三种标准密钥大小(128、192 和 256 位)。很多人看到这一点,认为如果有三种不同的大小而不是只有一种,那肯定有一些区别,而且由于 256 位版本比 128 位版本慢一点(大约 40%),它必须“更安全”。所以他们选择“最安全”并选择 256 位密钥。

实际上,AES 具有三种不同的密钥大小,因为它已被选为美国联邦算法,适用于美国联邦政府控制下的各个领域,其中包括美国陆军。美国陆军拥有使用密码学的悠久传统,并且该传统以世界各地军队不断展示的所有灵活性和微妙性体现在内部监管中(只要听一些“军事音乐”,你就会明白我的意思) . 不幸的是,这发生在很久以前,在计算机发明之前,当时大多数加密系统都可以被破解,而且更强大的加密系统也很难使用并且速度很慢。所以优秀的军事头脑想出了应该有三个的想法“安全级别”,以便最重要的机密使用他们应得的重型方法进行加密,但战术价值较低的数据可以使用更实用但更弱的算法进行加密。

因此,这些法规需要三个不同的级别。他们的设计者只是假设低层在某种程度上必然是弱的,但弱不是强制性的。因此,NIST决定正式遵守规定(要求提供三种密钥大小),但也要做聪明的事情(最低级别必须是可预见的技术牢不可破)。128 位对于安全性来说已经足够了(有关详细信息,请参阅此答案)。因此 AES 接受 256 位密钥是因为官僚主义的懒惰:要求一些稍微荒谬的东西(密钥大小过大)比修改军事法规更容易。

大多数人不知道或不关心历史,他们只是因为他们觉得自己应得的而大做文章。

当您构建安全系统时,您需要计划失败。这就是纵深防御战略背后的理念

随着时间的推移,密码原语变得越来越弱。尽管 128 位原语就足够了,但密码中可能会发现一个缺陷,从而降低了这种安全级别。因此,当下划线原语失败时,您需要添加安全边际。

例如 md5 产生一个 128 位的散列,但是使用选择前缀攻击,攻击者可以产生一个复杂度仅为 2^39 的冲突

我没有在答案或评论中看到这一点,所以我想将其添加为答案。密钥大小并不总是与算法的复杂性直接相关。一个常见的谬误是假设使用 AES256 加密的消息比使用 AES128 保护的相同信息更难破解(对手获得任何类型的仅给出密文的含义信息)。从逻辑上讲,更大的密钥大小会带来更大的复杂性,但与任何系统一样,实现也会受到弱点的影响。

假设您谈论的是 AES 128 与 AES 256,那么密钥扩展功能中存在一个已知的弱点会影响 AES256。从根本上说,该弱点将 AES256 的复杂性降低到低于 AES128。AES192 也有类似的攻击,但在这种情况下,AES192 的复杂性仍然高于 AES128。

故事的道德,人们不了解加密...... j / k(我不是数学家)。现实是人们假设“大”与“安全”。大枪比小枪好。较大的密钥大小比较小的密钥大小更安全。

实际上,加密的实现比单独的密钥大小更重要。

FWIW,NIST 关于后量子加密的草案推荐 256。

http://csrc.nist.gov/publications/drafts/nistir-8105/nistir_8105_draft.pdf