云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业邮箱_git服务器_哪个好

小七 141 0

关于Kerckhoff原理的一点注记

关于Kerckhoff'原理的注释

图片来源:Psicologiacolinica前几天,我写了一篇很长的文章,详细描述了我们过去是如何存储客户密码的,以及现在如何存储客户密码。有些人惊讶于我们对此持开放态度,而另一些人则希望了解安全系统的哪些部分需要保密。简单的答案是:一个安全系统只有在它的细节能够被安全地与世界分享时才是安全的。这就是克尔霍夫原理。这一原则有时被表述为"一个密码系统应该是安全的,即使系统的一切,除了密钥,都是公共知识",或者使用克劳德·香农的简单版本:"敌人知道系统"。其思想是,如果密码系统的任何部分(除了单个密钥)必须保密,那么密码系统就不安全。这是因为,如果披露系统某些细节的简单行为会让系统突然变得不安全,那么你就有麻烦了。你一定要对细节保密,为此你需要一个密码系统!考虑到密码系统的全部目的是保密,如果它需要其他系统来为自己保密,那么它是没有用的。公共安全系统的所有细节都应该是保密的。安全性依赖于系统本身,而不是系统的保密性。(当然,如果有人告诉你,他们有一些超机密的加密系统,他们不能告诉你,那么这很可能是垃圾)。这方面的一个很好的例子是在第二次世界大战期间打破了纳粹德国的谜密码。通过偷窃机器,从其他秘密部门获得信息,并阅读手册,盟军了解了所有关于"谜"机器如何工作的知识。Engima的安全性不依赖于它的保密性,而是它的复杂性(以及对每日密钥保密)。Engima是通过攻击加密背后的数学,并建造特殊的机器来利用加密中的数学缺陷而被破解的。今天也是如此。HTTPS、SSL和AES或RSA等密码的安全性依赖于算法的复杂性,而不是保密。事实上,它们都是公布的、详细的标准。唯一的秘密是当你连接到一个安全的网站(这是由你的浏览器和服务器自动随机完成的)或当你使用GPG这样的程序加密文档时所选择的密钥。另一个例子是家庭安全。想象一下,如果你买了一把锁,上面写着必须隐藏起来,这样就没有人知道你安装了什么类型的锁。这并不能保证锁是好的。锁的安全性应该取决于它的机制,你要保证钥匙的安全,而不是你对锁保密!

关于Kerckhoff's的说明原则

形象学分:保罗·奥雷尔当安全地存储密码时,我们依赖于bcrypt算法的复杂性。我们的存储机制的所有内容都被认为是可以公开的。所以可以说我们选择了一种随机的盐,我们用的是bcrypt。盐不是钥匙,也不需要保密。但更重要的是,我们假设在可怕的情况下,我们的密码数据库被访问,它仍然是安全的,即使散列的密码和盐可以被黑客使用。系统的安全性依赖于bcrypt的安全性,而不是其他安全性。当然,作为一个实际的问题,我们不会让任何人访问数据库。它被放在防火墙后面并安全地存储。但是在考虑安全性时,重要的是要考虑最坏的情况,安全信息的完全公开,并且依赖于算法的强度,而不是其他任何东西。