密码安全存储——PBKDF2bcryptscrypt

Posted gm-201705

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码安全存储——PBKDF2bcryptscrypt相关的知识,希望对你有一定的参考价值。

密码用单向哈希存储保证了数据库被脱后用户密码的安全。

由于彩虹表这种攻击方式的存在,一般认为md5,SHA1等单向算法的安全性是不够的。那如何选择合适的加密算法?

下面介绍业界几种高强度单向哈希算法,并比较其优劣。

PBKDF2

PBKDF2 是一个比较简单的算法,它根据’iterations’参数大小,执行N次HMAC运算。

HW数据库密码存储的最低安全要求是,1000次HMAC-SHA256计算,推荐的是1万次。当然满足最低要求前提下,到底多少次合适需综合考虑性能要求。

使用GPU阵列、或FPGA来破解PBKDF2仍相对容易。注意这里说的是相对,为了比较接下来提到的另外两种算法。

BCrypt

BCrypt 在1999年发明,由于使用GPU、FPGA的破解是基于它们相对于CPU的并行计算优势,因此BCrypt算法不仅设计为CPU运算密集,而且是内存IO密集。

然而随着时间迁移,目前新的FPGA已经集成了很大的RAM(类型CPU缓存、大约几十兆),解决了内存密集IO的问题。

Scrypt

Scrypt 于2009年产生,弥补了BCrypt的不足。它将CPU计算与内存使用开销提升了一个层次,不仅CPU运算需要指数时间开销,还需要指数内存IO开销。

技术分享图片

 

上图摘自scrypt算法论文,粗略估计了破解上述每个算法需要的时间。

以上是关于密码安全存储——PBKDF2bcryptscrypt的主要内容,如果未能解决你的问题,请参考以下文章

在会话中存储密码是不是安全? [复制]

密码存储在内存中是不是安全?

程序员必备基础:如何安全传输存储用户密码?

PHP 密码存储/检查类。保持密码安全。

密码存储/检查类。确保密码安全。

存储可解密密码的安全方法