我正在研究两个类似的软件,它们使用密码短语对磁盘上的数据进行加密。一种使用PBKDF2从密码短语生成加密密钥,而另一种使用两轮SHA256。有什么不同?是一个比另一个更好的选择吗?

评论

相关:如何安全地对密码进行哈希处理?

PBKDF2内部使用SHA;)

#1 楼

区别在于:



PBKDF2设计得很慢
SHA256是一个很好的哈希函数;因此,按设计,它并不慢。

因此,如果有人尝试使用许多不同的可能的密码短语,例如整个词典,然后每个单词都附加一个数字,然后每个单词都使用不同的大写字母,然后

,但是如果您的密码短语确实是安全的,那是很长,很随机的,并且超出了任何系统枚举过程的范围,那么,它没有任何实际区别,只是攻击者可能会花费更多资源来尝试破坏您的密码短语(如果他们决定尽快放弃,则可能会花费更少的资源)。

评论


为什么要投票?

–好奇
2012年6月29日15:48

因为互联网;)

–meso_2600
16-09-26在8:35

通过成千上万次镜像数据库文件并使用协调的多线程蛮力攻击,还是不能阻止它?在物理上超安全的服务器机房中进行后端威胁检测监视时,PBKDF2似乎(从直觉上来说)可能是最安全的。

– Chiramisu
17年4月7日在20:37

那么PBKDF2的优势是什么?

– AminM
18年7月18日在5:47

@AminM PBKDF2的优势是“加密速度较慢”(1)。 (1)我只是编造了这个短语,我的意思是说,要使基础加密哈希函数的加密功能破灭,就需要巨大的突破,以使其效率更高。 (使硬件具有更高的每秒操作数不算在内。)

–好奇
18年7月18日在19:28

#2 楼

密码散列算法(例如PBKDF2,bcrypt和scrypt)旨在与密码一起使用,并且故意变慢。加密哈希算法速度很快。在大多数情况下,快速是件好事,但在这里不是。放慢算法(通常通过迭代)会使攻击者的工作更加困难。密码哈希还会在每个哈希中添加一个盐值,以使其具有唯一性,从而使攻击者无法同时攻击多个哈希。

攻击者将尝试通过执行字典和蛮力攻击来恢复密码。他们通过对密码进行散列并将其与存储的密码进行比较以确定它们是否匹配来猜测密码。借助常规的密码哈希功能(例如MD5,SHA256),攻击者每秒可以猜测数十亿个密码。使用PBKDF2,bcrypt或scrypt,攻击者每秒只能进行几千次猜测(或更少,取决于配置)。

这意味着,如果PBKDF2,bcrypt,

此外,PBKDF2,bcrypt和scrypt都使用较大的随机“ salt”值,以确保每个用户的密码都被唯一地哈希。攻击100个密码哈希将比攻击一个哈希花费100倍的时间。攻击一百万将花费一百万倍的时间,以此类推。使用SHA256,攻击者可以尝试同时破解成千上万的哈希值,而速度却很少。

您应该始终使用密码密码的哈希或“密钥推导公式”,而不是普通的密码哈希。如果密码经过诸如SHA或MD5之类的哈希运算,则很难选择足够强大的密码来承受专门的破解工作。使用PBKDF2,bcrypt或scrypt,密码可以短至7或8个字符,而使用MD5或SHA时,密码至少应为13-14个字符。

评论


您低估了这种全功能且可操作的GPU破解设置的功能。如果我们以一台配备8倍AMD R9 290X的PC作为核心时钟使用[oclHashcat],则它是1620亿MD5 /秒,110亿SHA-256 /秒,7.97亿SHA-512 /秒和130万WPA或WPA2 /秒(WPA / WPA2大致等于PBKDF2-HMAC-SHA-1(通过,加盐,8192次迭代,20个输出字节)

–反弱密码
2014年4月10日下午3:45

#3 楼

上面有很好的答案,但是直接的原因是sha256没有加盐并且两轮攻击的可怜性与计算4位数密码的弱性相同:


GPU设置可以轻松计算所有未加盐的4位sha256哈希(以毫秒为单位)