Why is it recommended to make crypto algorithms public?
密码学书籍说,您应该公开您的加密/解密算法以对其进行攻击和密码分析测试,并且未对未公开的算法进行严格的测试,因为它没有针对攻击进行测试,但是他们还说,加密算法的安全性取决于 主要针对密钥的长度和密钥的随机分布,以保护其免受暴力攻击和对密钥的数学分析。
我的问题是,如果我的密钥足够长并且确实是随机的,为什么我们需要公开主要取决于密钥长度的算法,那么知道算法有什么好处?
-
完美的算法与您提到的元素一样好(挥手)。有缺陷的算法可以用不需要探索整个键空间的快捷方式来破坏。公开您的算法将有助于确定其是否有缺陷。
-
在密码学中-可能重要的信息被锁定了-没有"通过隐蔽性确保安全"这样的东西。该算法可能会在"密钥长度"上经过简单的手动挥挥手,而带来一些微不足道的缺陷。例如,采用简单的XOR算法-采用较大的密钥长度。输入一系列数据并观察输出。裂纹。记住,即使某些行业安全协议也被证明已被破坏-还记得WEP吗?
-
但是关键是,按照我的理解,经过审查的算法现在已经向所有人公开,因此每个黑客都知道该算法以及如何对其进行逆转,这意味着与被黑客入侵时我的hiden算法没有区别。如果我误解了,请告诉我。 @太平洋标准时间
-
@MohammadDorgham Thilo已经(两次)解释了它,并回复了他留下的答案。
-
如果您查看并理解了有缺陷的算法,则与未查看算法相比,您可以更轻松地将其逆转。理解完美的算法根本无法帮助您逆转它。 Kinda(好的)加密货币之美。
知道算法的好处是您不必信任制造商它确实是安全的。
如果我知道所使用的算法已经过大量测试和同行评审,并且普遍的共识是它是安全的,那么这将使我对系统更有信心。
相反的方法称为"默默无闻的安全",它完全取决于没有人发现事物是如何工作的。如果这样做(就像黑客一样),那么您就有问题了。
从理论上讲,如果您与其他任何人共享新的安全算法的细节,则没有任何区别。但是实际上,这是找出它是否真正安全的唯一方法,也是使其他人信任您的算法的唯一方法。
关键是,安全算法只能通过强行攻击(使用长密钥无法实现)。但是,并非所有算法都是安全的。与强行破解密钥相比,破解它们所需的精力要少得多。如果您没有对算法进行审查,那么我们将不相信您的算法是安全的(聪明的人也不会在这些事情上失败过)。
-
我的意思是..他们公开了提议的算法以对其进行测试,因此现在就知道了...所以,当我隐藏自己的算法并被密码分析者入侵并知道其详细信息时,会有什么不同?最后,它取决于密钥长度以防止暴力攻击和真正的随机密钥以防止数学分析。
-
没有!关键是,安全算法只能通过强行攻击(使用长密钥无法实现)。但是,并非所有算法都是安全的。与强行破解密钥相比,破解它们所需的精力要少得多。如果您不对算法进行审查,我们将不会相信您的算法是安全的(聪明的人也不会在这些事情上失败过)。
-
但是关键是,据我了解,现在已向所有人公开了经过审查的算法,因此,如果我误解了某些内容,那么每个黑客都知道该算法以及如何逆转该算法。
-
您知道AES的所有详细信息。现在继续并打破它。如果该算法是安全的,那么即使您知道所有详细信息,也无法"逆向"它。仅知道钥匙会为您提供帮助。那就是"安全算法"的定义。
-
从理论上讲,如果您与其他任何人共享安全算法的细节,都没有任何区别。但是实际上,这是找出它是否真正安全的唯一方法,也是使其他人信任您的算法的唯一方法。
-
我是密码学的初学者,不了解AES的详细信息,但是您是否表示该算法的设计方式不可逆?
-
@Mohammad,如果AES设计得当,则需要蛮力地将其反向(当然,假设您没有密钥)。使用大钥匙,这将需要一段时间。宇宙时代。
-
作为解决问题的最后一条评论(可能会增加您的困惑),如果密钥空间太小,那么完美无瑕的算法本身可能还不够。考虑MD5。该算法完全没有问题(我认为)。但是它不能再用于高安全性的应用程序,因为现代硬件只能蛮力地执行任务。因此,您始终都需要:一个好的算法和足够的密钥复杂性,以使强行破解(攻击它的唯一方法)不可行。
-
@Thilo:MD5实际上有一个严重的基本算法缺陷。
-
感谢大家的回答和评论,我从评论中的讨论中得到想法后就接受了答案,因此,您能否编辑您的答案并重新注释中的所有信息,以便将@thilo之后的任何人都放在一个位置
-
@MichaelPetrotta:哎呀。不好的例子。但我认为这一点仍然成立。当然,这是一个好的例子,说明制作一个好的算法有多困难。
-
哦,那不是在开玩笑。如果有人在考虑构建自己的加密算法,请不要。使用已经存在的东西。如果您真的想要,请在尼泊尔山区沉思应用密码学十年,然后考虑一下。