有没有一种密码,就算把加密方式告诉你,也无法破译,或者说破译的代价很高?
关于加密算法,其实很多人都有着些许的误区。
很多朋友,总想着通过自己的拍脑一想便来设计全新的加密/编码方法,以超越以往算法的安全度;亦或者是抛弃通用的加密算法,通过隐藏自创编码方式的加密算法本身,来保证密文的高安全度。
但实际上,现行的加密算法和哈希算法,其安全性和复杂度都是通过严格的数学演算来论证的。
首先,表面上来看,加密算法是一个你追我躲的游戏,实际上来看,加密算法是一个严格意义上的数学游戏,密码学一直以来都指的是一个数学概念。
一个加密算法是否可靠,不是以保密算法本身为安全保证的,而是取决于针对这段密文的密钥是否安全。因而那些真正能够为大家所认可的加密解密算法,都不是能够轻易创造出来的。
接着,加密算法的算法公开,并不对其安全性造成威胁,相反,如果系统的安全取决于算法的保密性,那么一旦被逆向还原,则整个系统付出的代价便太大了,而且,算法的保密性在现实世界实很难行通。
但是,如果算法公开,安全性取决于密钥,那么维护密钥的保密性以及更换密钥,就相对而言是更容易的事情了,付出的代价也小。
其次,这里面还有个类似循环论证的逻辑包含在其中
首先,安全性绝不取决于你是否公开算法,这和代码逆向有关系,前文谈到过。因而无需知道加密算法,也可能构造出解密算法。
其次,如果算法设计者不公开算法,不接受公开的分析和批评,以及顶级专家的钻研,怎么证明算法的强度,或者其是否留有后门呢?
毕竟,公开的RSA还被怀疑NSA在其中安置后门呢。
安全与否是后天赋予的,也是理论证明的,你无法自己声称,大家也不可能同意。
如果不服,大可公开算法给世人来挑战,当全世界也无法证实其不安全时,算法的安全性自然有人站台和担保。
相反,不公开算法,一则无法证明其安全度,二则隐藏算法本身也不会提高其诞生时自带的安全度,这些小伎俩以及拍脑一想的行为,大都是无效之举。