问题标签 [salt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
378 浏览

php - 这个可以吗?盐

嘿,我想听听你的意见

我使用它为我的每个用户在注册时生成唯一的盐(随机字母和数字)。盐类碰撞的可能性有多大?

然后,我使用 md5 将盐、密码和电子邮件(按此顺序)一起作为密码进行哈希处理,并在他们登录时重新哈希处理。

这比 md5 安全多少?我可以改进什么?

0 投票
6 回答
25762 浏览

security - Salt Generation 和开源软件

据我了解,生成盐的最佳做法是使用存储在源代码中的一些神秘公式(甚至是魔法常数)。

我正在做一个我们计划作为开源发布的项目,但问题是源代码带来了生成盐的秘密公式,因此能够在我们的网站上运行彩虹表攻击。

我想很多人在我之前就已经考虑过这个问题,我想知道最佳实践是什么。在我看来,如果代码是开源的,那么加盐毫无意义,因为盐很容易被逆向工程。

想法?

0 投票
7 回答
6917 浏览

security - 用哈希存储盐可以吗?

我的理解是,盐并不是要保密的,它只是为了与任何集中式标准不同,因此您不能开发彩虹表或类似的攻击来破坏使用该算法的所有哈希,因为盐会破坏彩虹桌。我在这里的理解可能并不完全正确,如果我错了,请纠正我。

在一个广泛使用的开源软件中,salt 将广为人知,这使您容易受到攻击,因为现在他们可以简单地攻击您的 hash 的 salted 版本并创建包含 salt 数据的彩虹表。

在我看来,有两种选择可以解决这个问题。首先是在每个新版本的软件中更改盐,但这并不好,因为新版本的软件将不再能够针对旧密码哈希进行测试。

我想到的第二个解决方案是为每个密码存储一个盐;换句话说,每个密码都有不同的盐。缺点是盐必须以某种方式与密码哈希相关联,可能只是将它们粘贴在数据库中的密码旁边。甚至可以使用用户名(但可能不会,用户名可能太短)。

我的问题是,这可以接受吗?将盐直接与其散列的密码一起存储是否有任何额外的风险?在我看来,将盐存储在源代码中没有什么不同,因此将盐与密码一起存储不会造成安全损失。

免责声明:我没有将它用于任何现实生活中的安全系统。事实上,我从未设计过任何类型的密码系统。我只是让自己对安全问题进行了模糊的教育。

0 投票
3 回答
5685 浏览

javascript - 使用 javascript 创建随机 sha1 salt

谁能推荐一个使用javascript创建sha1 salt的好方法?

0 投票
4 回答
1072 浏览

database - 有关哈希盐的综合信息

有很多关于盐和最佳实践的问题,但是其中大多数只是简单地回答了关于它们的非常具体的问题。我有几个问题相互补充。

假设数据库被破坏,每个用户加盐会阻止使用通用彩虹表来破解密码。必须为每个拥有唯一盐的用户生成一个单独的彩虹表,以获取他们的密码。这将是一个耗时的过程,而这正是使盐有效的原因。这对抵抗字典或蛮力攻击没有多大帮助。

这导致了一些问题:

  1. 尽管盐并不意味着通过默默无闻来保证安全,但将盐放在单独的表中不是更安全吗? 这样,即使“用户”表受到损害,盐也不会受到影响。
  2. 拥有第二个硬编码应用范围的盐会增加大量的安全性吗? 这样,即使数据库遭到破坏,实际应用程序也必须受到破坏,否则盐和散列将完全无用。
  3. 盐的最佳长度是多少?显然越长越好,但是随着用户数量的增加,数据库大小确实会成为一个问题,那么有效盐的最小长度是多少?
  4. 真的需要为“真正的随机盐”(random.org、random.irb.hr)使用第 3 方来源吗? 我知道使用基于服务器时间的盐在某种程度上是“可猜测的”,但是采用 sha1 随机字符串的随机子字符串似乎是一种有效的盐方法。

先感谢您。

0 投票
7 回答
777 浏览

hash - 强制使用复杂的密码比加盐“更重要”吗?

在过去的 2 个小时里,我一直在阅读加盐密码,以确保我理解了这个想法。我希望你们中的一些人可以就我的结论分享你们的知识。


如果我是攻击者,并且我获得了对用户数据库的访问权限,我可以获取表中存在的所有每个用户的盐,并使用它们来创建我的彩虹表。对于大桌子,这可能需要很长时间。如果我可以将列表缩减为感兴趣的用户(管理员、模组),我可以使用更大的字典列表来创建彩虹表,从而提高我的点击率......

如果这是真的,那么加盐似乎真的没有多大帮助。它只会稍微减慢攻击者的速度。

我知道理想情况下你会想要强制使用复杂的密码并用唯一和随机的字符串给它们加盐,但是强制使用复杂的密码会惹恼用户(我知道这让我很恼火),所以很多网站都没有这样做。似乎网站正在损害他们的用户,并且强制使用复杂的密码比一个好的加盐方法重要得多。

我想这不是一个问题,而是要求其他人了解情况。

0 投票
2 回答
284 浏览

php - php安全登录

您如何看待此登录程序?安全吗?

当他们登录时,我首先检查用户名是否存在,如果存在,我会从用户那里获取盐(每个用户都有唯一的盐),我用发布的密码重新散列

$pass = hash('sha256', $salt . $posted_password);

然后我只是比较

0 投票
4 回答
222 浏览

security - 加盐已经“强”的密码有什么价值吗?

对强、唯一(用户不用于其他应用程序)密码的加盐密码有什么好处吗?

加盐(据我所知)可以防止使用字典或通用密码生成的彩虹表。它还可以防止攻击者注意到另一个应用程序中具有相同哈希的用户。

看到强密码(可能)不会出现在生成的彩虹表上,并且聪明的用户将为他想要保护的每个应用程序使用唯一的密码,加盐是否保护已经“聪明”的用户?


这是理论上的。我不想停止腌制。


本质上,盐不只是成为密码的一部分吗?它恰好是由网守而不是用户提供的。

0 投票
4 回答
653 浏览

php - 盐渍算法强度

这 3 种制造盐的方法的优点/缺点是什么?

计算哈希:

0 投票
6 回答
475 浏览

php - 盐需要有多强?

盐需要有多强?

目前,我使用此功能在用户注册时生成“唯一”盐:

sha1然后我将它与密码一起散列。

你怎么看?

PS。我不打算让 MySpace 变大。