以下推理是否正确:

使用Curve25519的ECDH之后,生成的共享密钥将是具有128位强度的EC公钥。

然后,此公钥将进行哈希处理(例如SHA-2-256)以生成长度为256位的密钥,用于对称加密。此对称密钥的位强度将略小于128位(因为哈希操作会稍微降低位强度)。

因此,将AES-256与256位哈希一起用作对称密钥将这样做会浪费时间,并且256位哈希必须被截断为128位,并且AES-128用于对称加密。 AES-128将比AES-256快40%,与AES-128相比,使用AES-256没有任何优势。

评论

即使忽略以下答案中指出的多目标攻击,AES256也比AES128多进行四轮攻击(14轮而不是10轮),这使其安全性裕度更高。

#1 楼

推论是错误的,因为在AES上的攻击范围与在X25519上的攻击范围在质量上是不同的。它可以恢复许多密钥之一,其成本远低于AES-128的$ 2 ^ {128} $美元评估。具体来说,使用Oechslin的Rainbow表,在并行$ p \ geq n ^ 2 $方式的计算机上,恢复第一个$ n $密钥的预期成本为$ 2 ^ {128} / n $,预期​​时间为AES-128的$ 2 ^ {128} / np $顺序评估。破坏所有$ n $密钥的预期成本仍然接近$ 2 ^ {128} $,但是在真实的用户网络中,折中其中一个可能足以损害其中许多。 />相比之下,使用最知名的策略,对X25519的成功攻击至少要花费$ 2 ^ {128} $位操作,即使这是多目标攻击也是如此。恢复所有$ n $密钥的预期成本约为$ 2 ^ {128} \ sqrt {n} $位操作,因此分批进行多目标攻击是有优势的,但是恢复第一个目标的成本仍然很高无法克服的$ 2 ^ {128} $位操作。

如果您说AES-128具有“ 128位安全级别”,那么您应该考虑X25519具有更高的安全级别。但我认为这不合理。相反,我认为说X25519具有“ 128位安全级别”和AES-128具有低得多的安全级别是很合理的。您的预算拮据使您无法这样做。如果您不需要经济学,也不要让对手也经济学。

如果您真正需要的是IND-CPA密码,而您打算使用AES-CTR或AES-CBC或其他方式,请考虑使用更简单,更快速,更安全的Salsa20或ChaCha。除非有理由,否则请考虑使用经过身份验证的加密-确实,请考虑使用NaCl crypto_secretbox,就像NaCl crypto_box在内部使用X25519密钥协议的结果一样。

评论


$ \ begingroup $
绝对要使用AEAD系统,即使它只是加密-然后是MAC。 ChaCha20-Poly1305很好。 AES-GCM很好。单独的ChaCha20。
$ \ endgroup $
– SAI Peregrinus
18年6月4日在1:41