首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全密码存储机制

安全密码存储机制
EN

Cryptography用户
提问于 2018-01-10 09:57:35
回答 1查看 207关注 0票数 -2

我最近考虑了一种安全的密码存储机制。

我想问的是,下面的密码存储机制是否能够抵抗具有安全密码的彩虹表,以及攻击者是否知道哈希和盐渍机制。

tl;dr:

而不是使用随机生成的盐,盐是从密码派生出来的。因此,salt也不会存储在数据库中。

  1. 密码中的用户类型($password = "MySecurePassword123")
  2. $password正在使用sha256 ($hashed_pw = ccf9ac1c9ce02b9bb7810a1fff51e474f37d98c3582f2d3b5036caf559afd9bc)进行散列
  3. 前5位(比方说,分钟)。密码长度为8)来自$password的字符使用sha256进行散列。让我们将产生的散列称为“盐分”。($salt = 52824aa0d517c8d6e24d59e1374ee202e97ba730b00ae577c94cdf157cbc29af)
  4. $salt将被附加到hashed_pw中,并再次使用sha256 ($result = sha256($salt + $hashed_pw) = 63617328f94d025f2489f170388b42d954a73391250b0ad29bbfb7ce2f8373e1)进行散列。

最后,$result存储在数据库中。

用于生成sha256散列的工具:https://emn178.github.io/online-tools/sha256.html

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-01-10 15:02:18

这是一种非常不安全的存储密码的方法。

这里有两个重要因素在起作用:

  • the相同的密码总是导致相同的输出,允许使用简单的查找表
  • your整个算法在计算上很便宜&允许快速计算查找表或仅仅是蛮力。

这意味着攻击者可以相当快地计算output -> password的查找表,并根据查找表检查数据库中的原始值。

粗略的近似:我可以下载1,000万密码列表,并通过您的算法运行每个密码。openssl speed sha256报告说,我的笔记本电脑每秒可以在64个字节块上执行3M操作(上一步的大小)。除以三(您正在执行的sha256操作的数量,尽管有些操作在更小的块上,速度更快),我可以在平均硬件的几秒钟内构建一个10米的查找表。

如果将此方法用于具有数千名用户的站点,则会发现大量用户使用数据库中找到的密码。

这个近似的方法可以在几分钟内实现并运行,并将确定相当一部分用户的密码(取决于它们的性能如何,但即使是一个密码也太多)。注意,这里没有提到彩虹桌。这些是不需要的,因为给定的密码总是导致相同的存储值。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/54597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档