施奈尔定律(可能应该称为巴贝奇定律)。指出:
任何人,从最无知的业余爱好者到最好的密码学家,都可以创建一个他自己无法破解的算法。
我认为很明显,这条法律可以适用于任何安全系统,而不仅仅是密码学。有什么好的方法可以解决这项法律?
施奈尔定律(可能应该称为巴贝奇定律)。指出:
任何人,从最无知的业余爱好者到最好的密码学家,都可以创建一个他自己无法破解的算法。
我认为很明显,这条法律可以适用于任何安全系统,而不仅仅是密码学。有什么好的方法可以解决这项法律?
严格来说,“解决”该法律意味着起诉上帝创造了大脑有限的人类。除了意识到评估安全系统安全性的困难之外,这里几乎没有什么可做的:也就是说,您无法评估自己创造的安全性。一种说法如下:如果你不能破坏你自己的系统,那么你并不是在证明它不能被破坏,只是你不知道如何破坏它。这不是您想要的:目标是拥有一个潜在攻击者不知道如何破解的系统。
因此,通常的准则是永远不要设计自己的加密算法或协议。训练有素的密码学家可以将其修改为:“我可以设计自己的算法变体,但前提是我可以肯定地证明我没有添加任何额外的弱点”。不能表现出这样的弱点并不能证明没有任何弱点。
解决这个问题的常用方法是同行评审。开源世界以此为生。更多的眼睛注视问题会产生更好的解决方案。
通过攻击软件,您可以通过练习变得更好。因此,您还可以更好地攻击自己的软件,并且根据施奈尔定律,您可以编写更安全的软件。
老实说,我认为这条法律不需要任何解决。业界对此非常了解,并且(几乎)每个人都遵循明智的行动方针。
对于大多数目的,加密应该是一个可靠的过程,只要给定适当的密钥长度并使用经过同行评审的商定算法(根据 Rook 的回答)并正确实施,即可满足此要求。
对于那些想要根据需要生成更强大或更快的算法,或者想要克服旧算法易受攻击的新攻击的人来说,评估强度的唯一方法就是让很多人去尝试它。
任何人,从最无知的业余爱好者到最好的密码学家,都可以创建一个他自己无法破解的算法。
解药是不要创建算法,即不要(重新)发明可以避免它的系统。不仅仅是算法——不要发明你自己的身份验证系统、安全协议、密钥交换等。你几乎肯定会弄错。
取而代之的是使用经过同行评审并根据Kerchoff 原则设计的久经考验的方法。理想情况下,实现也经受住了时间的考验。