柯克霍夫原则
大家好!
今天想和大家聊一个有点意思,而且实际上非常重要的“柯克霍夫原则”。
啊,等等等等。
也许有人会想:“什么‘柯克霍夫原则’,根本没听说过,那么多片假名看着就头晕……”请放心。这篇文章正是为你准备的。
“安全的密码”到底是什么意思?
比如有人跟你说:“这个保险箱,只有知道秘密开法的人才能打开。”
乍一听,感觉超级安全吧。
但是,仔细想想,难道不会觉得有点不安吗?
“要是那个秘密暴露了,不就全完了吗?”
其实,这正是柯克霍夫原则登场的契机。
到底什么是“柯克霍夫原则”?
这个原则简单来说,就是:
“即使密码系统的机制暴露了,也应该是安全的。”
说得更明确一点,就是“安全性只能依赖于‘密钥’,密码本身的加密方法公开也没关系!”
反过来说,如果“只是把密码算法(机制)当作秘密,那么它的可靠性就会被认为很低”。
“只要机制保密就安全”——这种想法可能有点危险
我们经常会听到这样的说法:
“这个应用的代码谁也没给看过,所以安全性没问题。”
我能理解这种心情。
但这就像在说:“因为谁也没看过,所以就找不到坏处,肯定没问题吧。”
而实际上,“谁也没看过”这件事本身,有时就会成为一种风险。
但是,为什么这个原则那么重要?
因为,如果有人拿到了机制,并且能轻易破解,那么这个密码系统就彻底完蛋了。
打个比方,这就好比你家门锁的结构非常复杂,但实际上用百元店买的万能钥匙就能打开。
重要的不是“锁保密所以安全”,而是“就算把锁的结构全给你看,没有正确的钥匙你也打不开”。
“可是,这样不觉得可怕吗?”
很多人在这里会觉得:
“把机制全都暴露出来,不觉得可怕吗?”
我很理解。
因为大家都会想:“要是全让人看了,会不会被模仿、被恶意利用啊?”
但这正是柯克霍夫原则的核心所在。
“即使给人看也坚不可摧的强度”,才是真正的安全。
话虽如此,一开始还是需要点勇气的
如果站在开发者的角度想,“公开机制=弱点也会被看到”,这当然会让人心跳加速。
但是,请想一想。
能够坦诚地公开机制,并说“欢迎任何人来验证”的东西,结果反而会更受信任。
这和人际关系很像。
“在你展现了真实的自己后,还能和你愉快相处的人”,才是最让人安心的。
总而言之
柯克霍夫原则听起来可能有点理论化,但它的本质非常简单。
只不过是说 “我们要打造一个不管给谁看都不会被破坏的机制”。
比起表面的保密,更需要的是靠谱的设计。
比起不想给任何人看的代码,更需要的是公开也不觉得丢人的代码。
或许,在未来的时代,会越来越需要这种“强度”吧。
感谢你的阅读!
安全的话题虽然有点难,但其实它和“人际关系”、“日常生活中的安全感”也有相通的地方。
不用觉得有压力,只要慢慢了解,一定会发现其中的好处。

