为了账号安全,请及时绑定邮箱和手机立即绑定

盐生成与开源软件

盐生成与开源软件

三国纷争 2019-06-29 17:22:21
盐生成与开源软件据我所知,生成盐类的最佳做法是使用源代码中存储的一些神秘公式(甚至神奇常数)。我正在做一个项目,我们计划以开源的方式发布,但问题是,随着源代码的出现,产生盐的秘密公式,以及在我们的站点上运行彩虹表攻击的能力。我想很多人都在我面前考虑过这个问题,我想知道最好的做法是什么。在我看来,如果代码是开源的,那么使用SALT是没有意义的,因为盐类可以很容易地进行反向工程。思想?
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

真正的盐只是需要独特的每一个条目。即使攻击者能够计算出盐是什么,这也使得创建彩虹表非常困难。这是因为SALT在进行散列之前被添加到密码中,因此它有效地将彩虹表必须包含的条目总数添加到密码字段的所有可能值的列表中。


查看完整回答
反对 回复 2019-06-29
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

自从Unix流行以来,存储密码的正确方法是附加一个随机值(SAT)并对其进行散列。把盐留给你以后可以得到的地方,但你希望坏人不会得到它。

这有一些好的效果。首先,坏人不能仅仅列出诸如“Password 1”这样的预期密码,将它们散列到彩虹表中,然后遍历密码文件寻找匹配的密码。如果你有一个很好的两字节盐,他们必须为每个预期密码生成65,536个值,这使得彩虹表变得不那么实用了。第二,如果您可以防止查看您的密码文件的坏人使用SALT,那么计算可能的值就会变得困难得多。第三,你让坏人无法确定一个人是否在不同的网站上使用相同的密码。

为了做到这一点,你会产生一个随机的盐。这应该以均匀的概率在期望的范围内生成每一个数字。这并不难;一个简单的线性同余随机数生成器会做得很好。

如果你有复杂的计算来制造盐,那你就错了。如果你根据密码计算它,你就错了。在这种情况下,您所做的只是使散列复杂化,而不是在功能上添加任何盐分。

没有一个擅长安全的人会依赖于隐藏一个算法。现代密码学的基础是经过广泛测试的算法,为了进行广泛的测试,它们必须是众所周知的。通常,人们发现使用标准算法比使用自己的算法更安全,并且希望它是好的。不管代码是否是开源的,坏人仍然有可能分析程序所做的事情。


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 637 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信