![]() |
1
17
不,它们不是无用的。
只要每行使用一种独特的盐,盐就会
正如评论中提到的,您应该确保盐的大小是合理的。 |
![]() |
2
8
salting是在unix/etc/passwd文件中引入的(或者至少使其流行),它是世界可读的。通常假定破解程序知道salt和加密密码。salt的目的是减慢破解过程(因为同一密码不会映射到同一加密字符串);它是 不 秘密本身。 |
![]() |
3
4
知道盐可以做一个野蛮的力量攻击,但这并不意味着它是无用的。salt防止攻击者使用已经生成的彩虹表(您可以在Web上找到)。 防止暴力强迫的最好方法就是使用长而复杂的密码。 |
![]() |
4
2
如果攻击者知道salt、散列密码和散列算法,那么他们可以进行暴力字典攻击(或彩虹攻击)。 |
![]() |
5
1
这应该让你了解它是如何工作的。 假设你想加密一个单词“秘密”。加密后,假设它现在看起来像这个00110010。 如果黑客知道加密算法,他们可以创建一个单词表及其相应的加密值。所以他们把加密的密码“00110010”拿到表格里。现在,他们知道用于生成“00110010”的密码是“秘密”一词。如果先对该词加盐,那么一般的查找表对黑客来说将是无用的。(通用查找表是由未加密字典单词及其加密值组成的表) 如果你先对这个词加盐(“saltsecret”),那么加密后的值看起来就不同了,黑客在查找表中找不到它。 但是,他们仍然可以使用您的salt从头开始创建自己的查找表,最终他们将能够反向查找密码。 因此,要回答这个问题,如果密码足够复杂,黑客要花很长时间才能弄清楚。你可以每年更换食盐,他们必须重新开始制作一张桌子。 |
![]() |
6
1
不,这不是毫无价值的。 要成功攻击一个帐户,攻击者需要知道该帐户的salt(每个帐户的salt应该不同),使用的哈希算法, 和 最后存储的密码哈希。 鉴于 全部的 在这些信息中,您可以编写一个程序,不断尝试散列不同的潜在密码,直到找到匹配的密码。 如果是 坏的 salt(太简单或太短),这可以快得多,因为程序可以使用彩虹查找表将最终存储的密码散列与散列的字符串相匹配,然后减去salt。但他们仍然需要所有的信息。 如果是 共享 salt,这很糟糕,因为攻击者会提前使用salt生成一个彩虹表,这对系统中的任何帐户都是有益的。 |
![]() |
7
0
假设使用gpu的md5、sha1、sha256算法的暴力攻击的吞吐量大于每秒10亿次尝试,sha512的吞吐量约为300m/s。如果使用其中一种算法,它将减慢使用彩虹表的黑客的速度(可能性较小),但不会减慢使用暴力攻击的黑客的速度(可能性更大)。它肯定不会保护你,它只是增加了一点安全,以防过时的彩虹表(这些算法)。有一点总比没有好。 但是,如果使用最强大的算法(如bcrypt),即使使用哈希存储,salt也绝对值得,因为从时间角度来看,蛮力是不可行的,所以彩虹是有意义的。 看看这个 article 总结一下:
|