发送随机密码盐作为激活码?

Posted

技术标签:

【中文标题】发送随机密码盐作为激活码?【英文标题】:Sending random password salt as activation code? 【发布时间】:2014-02-16 02:25:58 【问题描述】:

我将设置我的注册表单以发送包含唯一代码(非常标准)的激活电子邮件。

我已经在我的数据库中为每个用户存储了一个随机生成的盐,它在注册时应用于他们的密码。

我的问题是,我有什么理由不应该只使用该盐作为用于激活电子邮件的唯一代码?这不会为我节省任何工作,但它可以随着时间的推移节省数据库空间。大多数情况下,我只是好奇人们会怎么想向用户展示他的密码盐。

【问题讨论】:

好吧,如果您的空间太紧,您可以在使用后从数据库中删除激活码。事实上,如果激活码存在,您可以使用删除操作作为验证。 一个适当的加盐和散列的字符串不应该因为公开盐而受到损害,但是,拥有盐可能有助于暴力破解散列。 【参考方案1】:

这不一定是一个好的解决方案,但由于盐是独一无二的,所以它不应该是一个大问题。您可以对盐进行 rot13 和 base64 编码。然后,实际上没有人知道它是盐,您可以轻松地将其反转以查找它。

【讨论】:

【参考方案2】:

如果用户是黑客,知道自己的 salt 会让他们更容易破解自己的自己的帐户,但如果每个人的 salt 都不一样,那么没有理由不这样做,如果是对你来说更容易。了解自己的盐只会帮助您作为黑客破解您自己的帐户。所以,简而言之,没有真正的原因。

【讨论】:

【参考方案3】:

最好使用单独的、安全生成的值。

正如@SyntaxLAMP 提到的,使用盐作为激活码是information leakage 的一种形式。这也可能为MITM attack 打开大门,如果有人有足够的位置来检索所有通过明文发送的注册用户的盐分。

【讨论】:

以上是关于发送随机密码盐作为激活码?的主要内容,如果未能解决你的问题,请参考以下文章

生成用于创建密码检索令牌的随机“站点盐”的好方法是啥?

nodejs进阶:密码加盐:随机盐值

基于盐+Sha算法的安全密码保护机制

随机密码如何变为固定的?

数据库存储安全之(MD5+盐)加密

设计安全的账号系统