开发者社区> 问答> 正文

如何安全的存储密码 - hash、salt 以及更多 - 配置报错

"

<img alt="""" src=""http://static.oschina.net/uploads/img/201206/11175649_XNNW.gif"" />

最近爆出的网站安全问题越来越多,甚至有部分网站的密码泄露,这是一篇简单的教程,教你如何更加安全的保存密码。我这里说的“安全”是指当密码泄露以后,对方需要相当一段时间来破解以获得明文密码。


下面我列出了常用的密码存储手段,从不安全到安全:
明文存储
hash 存储,例如 MD5,SHA,SHA256
hash 加盐(salt)存储
使用 bit/key stretching 机制

大家已经知道,即使是大型网站例如 Linked-In,存储密码也是简单的 hash。我认为这是一个严重的疏漏。我们有很多方法来加强密码的存储以防止暴力破解和 彩虹表。在这里,我要大声的说一遍,仅仅加盐(salt)是不够的!

首先让我们来看看不同的技术出现的时间:
明文存储:有史以来
hash 存储:20世纪70年代早期
加盐 hash:20世纪70年代晚期
bit/key stretching: bcrypt 2002, scrypt 2009, PBKDF2 2009

不同技术的耐破解程度


Technique / KDF YearBruteforceDictionnaryRTGPUFPGAASIC

Hash 1970NoNoNoNoNoNo

Salted Hash1976NoNoYesNoNoNo

PBKDF2 *2000YesYesYesPartialNoNo

Bcrypt2002YesYesYesYes**??No

Scrypt *2009YesYesYesYes**YesYes


RT - Rainbow Table 彩虹表

在一年内破解一个密码的开销

Technique / KDF6 LL8 LL8 chars10 chars
DES CRYPT< 1$< 1$< 1$< 1$
MD5< 1$< 1$< 1$1.1K$
MD5 CRYPT< 1$< 1$130$1.1M$
PBKDF2 (100ms)< 1$< 1$18k$160M$
bcrypt (95ms)< 1$4$130K$1.2B$
scrypt (64ms)< 1$150$4.8M$43B$
PBKDF2 (5.0s)< 1$29$920K$8.3B$
bcrypt (3.0s)< 1$130$4.3M$39B$
scrypt (3.8s)900$610K$19B$175T$

解释:
  • "DES CRYPT" 和 "MD5 Crypt" 是加盐的
  • "LL" : 小写字母,例如"aeterws"
  • "chars" : 95 个可打印字符,例如"6,uh3y[a"
  • 括号中的数字是算法设置所需要的时间,跟 CPU 和循环此处都有关系。

 

原文链接OSChina 编译

"

展开
收起
montos 2020-06-04 14:01:29 1010 0
1 条回答
写回答
取消 提交回答
  • "

    摘要+每用户盐+全局盐

    摘要即md5,sha1,sha256..

    每用户盐增加单用户暴力破解的成本,避免通过已被攻破的本站其他用户继续攻击

    全局盐增加本站全用户暴力破解的成本,避免通过其他使用相同摘要方式被破解网站的信息来攻破本站

     

    ######

    利用32位古文+SHA256+加密因子(也是32位古文)
    基本上被破解的概率为0

    ######有例子或这案例么?或者写个博客吧######同问.什么叫古文?之乎者也?与数字有什么差别.######有具体的方法或者案例呢?######没看明白 ,怎么样才能安全 密码!?######有好的安全的存储密码的例子吗?######用彩虹表的话加salt也是白搭。如果知道加密方式,什么加密都是白搭。######要给每个用户加不同的盐,每次改密码盐要换。这样除非给每个用户构建一个彩虹表才能反推。######salt对彩虹表是可以阻止的, 看那个Yes.######我就不明白了,干什么要破人家的密码?干吗要盗密码?吃饱了撑的!######利字当头啊######闭上眼睛,连续无规律敲击键盘100次,这个盐够强大了吧 ######SHA512 安全吗?一直用这个~~~######

    可以利用改良的Hash算法,这样的话如果改良方式没有泄漏,即使被拿到也不会被破解。

    举例:将MD5密文映射到ASCII所有可见字符。

    另外,如果用户的用户名/密码都是一对,即使再强的加密算法也是白扯,毕竟你不能保证所有其他站点的加密算法都很强大。

    ######更多的是密码策略"
    2020-06-04 14:22:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载