关于安全性:为什么建议公开加密算法?

Why is it recommended to make crypto algorithms public?

密码学书籍说,您应该公开您的加密/解密算法以对其进行攻击和密码分析测试,并且未对未公开的算法进行严格的测试,因为它没有针对攻击进行测试,但是他们还说,加密算法的安全性取决于 主要针对密钥的长度和密钥的随机分布,以保护其免受暴力攻击和对密钥的数学分析。

我的问题是,如果我的密钥足够长并且确实是随机的,为什么我们需要公开主要取决于密钥长度的算法,那么知道算法有什么好处?


知道算法的好处是您不必信任制造商它确实是安全的。

如果我知道所使用的算法已经过大量测试和同行评审,并且普遍的共识是它是安全的,那么这将使我对系统更有信心。

相反的方法称为"默默无闻的安全",它完全取决于没有人发现事物是如何工作的。如果这样做(就像黑客一样),那么您就有问题了。

从理论上讲,如果您与其他任何人共享新的安全算法的细节,则没有任何区别。但是实际上,这是找出它是否真正安全的唯一方法,也是使其他人信任您的算法的唯一方法。

关键是,安全算法只能通过强行攻击(使用长密钥无法实现)。但是,并非所有算法都是安全的。与强行破解密钥相比,破解它们所需的精力要少得多。如果您没有对算法进行审查,那么我们将不相信您的算法是安全的(聪明的人也不会在这些事情上失败过)。