今天我发现了一些令人难以置信的愚蠢行为 - 我的朋友用sha512算法哈希用户密码而没有盐。我立即向他提出这个问题,但他说他希望看到有人在他的数据库中破解一个密码。我告诉他,如果没有哈希,他的数据库很容易受到彩虹攻击,但他说没有人拥有sha512的这个大型彩虹表,因为每个都有64个十六进制字符长。
我如何说服他仍然需要加盐?有谁知道sha512的哈希破解率是多少?我可以争辩说,要花费这么多或者那么多时间来破解所有8个字符密码等等。
答案 0 :(得分:6)
问你的朋友他的数据库中是否有以下任何哈希值:
b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86
bc547750b92797f955b36112cc9bdd5cddf7d0862151d03a167ada8995aa24a9ad24610b36a68bc02da24141ee51670aea13ed6469099a4453f335cb239db5da
adfb6dd1ab1238afc37acd8ca24c1279f8d46f61907dd842faab35b0cc41c6e8ad84cbdbef4964b8334c22c4985c2387d53bc47e6c3d0940ac962f521a127d9f
3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
d404559f602eab6fd602ac7680dacbfaadd13630335e951f097af3900e9de176b6db28512f2e000b9d04fba5133e8b1c6e8df59db3a8ab9d60be4b97cc9e81db
3627909a29c31381a071ec27f7c9ca97726182aed29a7ddd2e54353322cfb30abb9e3a6df2ac2c20fe23436311d678564d0c8d305930575f60e2d3d048184d79
ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413
ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
c70b5dd9ebfb6f51d09d4132b7170c9d20750a7852f00680f65658f0310e810056e6763c34c9a00b0e940076f54495c169fc2302cceb312039271c43469507dc
0dd3e512642c97ca3f747f9a76e374fbda73f9292823c0313be9d78add7cdd8f72235af0c553dd26797e78e1854edee0ae002f8aba074b066dfce1af114e32f8
401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429080fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1
9719a6439375c9115e01dceda86e210e5f2d78a6cf3f4872997746832c4c0f58c5ae0923fabe5acfb923dfc94a117a7d444e453622912dfa193fc6636581f159
如果您想知道,那些是password
,password1
,letmein
,123
,1234
的SHA-512哈希值,分别为12345
,123456
,abc
,abc123
,qwerty
,asdf
和swordfish
。如果您愿意,可以轻松find more likely candidates。
然后让您的朋友阅读precomputed dictionary attacks和rainbow tables。
答案 1 :(得分:3)
告诉他,可以使用通用硬件计算多少个值。现在大概是180 Mega SHA-512 per second。
所以你可以建立一个彩虹......
...大约 2分钟!
然后我会告诉他,生成的哈希值的长度与破解密码所需的时间完全无关。
即使是盐渍的SHA-512也不足以使密码安全,因为这种算法太快了。这就是为什么人们应该使用慢速算法,如PBKDF2的BCrypt和成本因素。
最后我会谷歌搜索他的一些哈希,因为互联网上已经存在无盐的彩虹表。所以机会很好,你找到了一个较弱的密码。
我在有关safely storing passwords的教程中收集了所有这些信息。它不应该花费超过10分钟的时间。
答案 2 :(得分:0)
除了rainbowtables之外,还可以强制使用简单的哈希,请参阅http://hashcat.net/oclhashcat/。只要问他多长时间估计他的用户'如果每秒可以进行20亿次猜测,密码就会抵制。
现代算法,如scrypt,bcrypt,pbkdf2,sha512_crypt(后者使用sha512,但很多轮)速度较慢,因此蛮力攻击需要更长的时间。
所以你想要的不只是说服他在他的sha512哈希中添加盐,而是使用现代的"慢"用于密码散列的算法。