生成具有恒定轨道的盐
Posted
技术标签:
【中文标题】生成具有恒定轨道的盐【英文标题】:Generating salts with a constant in rails 【发布时间】:2014-07-07 10:36:20 【问题描述】:所以我对加密和 *** 比较陌生,所以请告诉我我是否要解决这个问题。
默认情况下,Bcrypt 在摘要中使用随机生成的盐来阻止彩虹表攻击。这些盐存储在密码摘要中的数据库中。 仅将常量存储在您将添加到随机生成的盐中的代码中不是更安全吗?从理论上讲,这将要求攻击者同时拥有您的数据库和代码来测试密码。如果我的想法没有任何缺陷,我会假设它将被内置到 bcrypt 中,那么我的想法中的错误在哪里?
【问题讨论】:
只是迂腐,但你说的不是加密,而是散列。 【参考方案1】:所以,基本规则:没有加密是牢不可破的,这只是时间问题。 “安全”加密只是意味着破解它需要很长时间。
带有预先破解密码的彩虹表。现在根本不需要时间,加密也没用。
输入盐。使用盐,你不能提前做任何工作,而使用单个盐,你也不能重复使用工作。
http://throwingfire.com/storing-passwords-securely/ 是一本好书。
在这一点上,从数据库中读取密码并非不可能,但要彻底猜出密码同样困难,而且从此时开始改进加密对您没有任何帮助,除非您开始让用户密码更难猜测。
另外,如果他们可以直接访问您的数据库(您只在部署机器上存储凭据),他们很可能可以访问该机器上的其他内容,并且有许多更简单的方法可以让您的用户密码而不是针对您的数据库的暴力测试。 (例如,重写您的代码以将输入的密码发送给他们)
【讨论】:
【参考方案2】:每个密码的盐是随机的并且不同,因此在代码中存储一个字符串不太安全,因为当您同时获得代码和数据库时,破解密码会更容易。当你把一切都做好了,那么好的盐和好的单向功能它应该能够抵抗暴力攻击(假设密码是“强”的)。你建议的是security through obscurity,不鼓励也不推荐。
【讨论】:
以上是关于生成具有恒定轨道的盐的主要内容,如果未能解决你的问题,请参考以下文章