Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 如果有人获得了salt密钥的访问权限,那么salt密码是否毫无意义?非服务器盐渍?_Hash_Passwords_Salt - Fatal编程技术网

Hash 如果有人获得了salt密钥的访问权限,那么salt密码是否毫无意义?非服务器盐渍?

Hash 如果有人获得了salt密钥的访问权限,那么salt密码是否毫无意义?非服务器盐渍?,hash,passwords,salt,Hash,Passwords,Salt,听到大科技公司最近发生的所有黑客事件,我不禁怀疑他们对密码存储的使用 我知道salting+hashing通常被认为是安全的,但我见过的salting示例都将salt密钥硬编码到密码脚本中,密码脚本通常存储在同一台服务器上 那么,一开始对用户密码进行散列,将散列传递给“salting服务器”或场外存储的某个函数,然后传回该散列,这是合乎逻辑的解决方案吗 我的看法是,如果入侵者获得对包含存储密码的服务器或数据库的访问权,他们将无法立即访问salt密钥。否——即使攻击者知道salt仍然有效 salt

听到大科技公司最近发生的所有黑客事件,我不禁怀疑他们对密码存储的使用

我知道salting+hashing通常被认为是安全的,但我见过的salting示例都将salt密钥硬编码到密码脚本中,密码脚本通常存储在同一台服务器上

那么,一开始对用户密码进行散列,将散列传递给“salting服务器”或场外存储的某个函数,然后传回该散列,这是合乎逻辑的解决方案吗

我的看法是,如果入侵者获得对包含存储密码的服务器或数据库的访问权,他们将无法立即访问salt密钥。

否——即使攻击者知道salt仍然有效

salt的思想是,它使得对大量用户进行字典攻击变得更加困难。在没有盐的情况下,攻击者会对字典中的所有单词进行散列,并查看哪些单词与用户的散列单词相匹配。使用salt时,他必须对字典中的每个单词进行多次散列(每个可能的散列值一次),以确保有一个适合每个用户的单词

乘以几千(或者可能是几百万,取决于你使用的盐的大小)会增加散列所有值的时间,存储需要存储结果——这(你希望)是不切实际的

然而,我应该补充一点,在许多(大多数?)情况下,非常大的盐并不能真正增加很多安全性。问题是,如果您使用(比如)24位salt(大约1600万个可能值),但只有(比如)几百个用户,攻击者可以提前收集您实际使用的salt值,然后仅对这些值而不是全部(比如)1600万个潜在值进行字典攻击。简言之,你的24位盐只会比8位盐增加一点点难度


OTOH,对于大型服务器(谷歌、Facebook等)来说,情况完全不同——大型salt变得非常有益。

即使入侵者知道salt,salt也是有用的

如果密码没有被腌制,就可以使用广泛可用的预计算来快速攻击你的密码

如果您的密码表是salt表,则很难预计算彩虹表-为每个可能的salt表创建彩虹表是不切实际的


如果您对每个密码条目使用不同的随机salt,并将其以明文形式放在其旁边,则入侵者很难攻击您的密码,除非进行暴力攻击。

salt密码保护密码免受攻击者拥有哈希密码列表的攻击。有一些常见的散列算法,黑客可以使用这些算法的表来查找散列并检索密码。要想让它起作用,黑客必须侵入密码存储并窃取哈希值

如果密码是salt,则攻击者必须使用哈希算法和salt重新生成其哈希表。根据散列算法,这可能需要一些时间。为了加快速度,黑客还使用最常用的密码和字典单词列表。盐的作用是减缓攻击者的速度

最好的方法是为每个密码使用不同的salt,使其长且随机,并且可以将salt存储在每个密码旁边。这确实减慢了攻击者的速度,因为他们必须为每个密码、每个常用密码和字典单词的组合运行哈希表生成。这将使攻击者无法推断出强密码


我读了一篇关于这方面的好文章,现在找不到了。但谷歌搜索“密码盐”会得到一些好的结果。看一看。

我想指出,您用硬编码salt描述的方案实际上不是salt,而是一把钥匙或一个胡椒。盐和胡椒可以解决不同的问题

应为每个密码随机生成一个salt,并可与哈希密码一起存储在数据库中。它可以以纯文本形式存储,即使攻击者知道它的用途,也能完全满足它的需要

胡椒粉是一种密钥,将用于所有密码。它不会存储在数据库中,而是应该存放在安全的地方。如果攻击者知道胡椒,它就没用了

我试着用一个小的例子来解释这些区别,也许你想看看


有道理。对于攻击者来说,似乎付出了太多的努力(除非它是一个具有重大价值或重要性的站点)

所有的网站无论大小,重要与否,都应该把密码哈希作为高度的重要性

只要每个散列都有自己的大随机salt,那么是的,它确实变得不太可行,如果每个散列都使用静态salt,那么您可以使用Rainbow表来清除使用password1的用户散列


使用一个好的散列算法也很重要(使用MD5或SHA1几乎就像现在在多gpu设置中使用明文一样),如果不使用scrypt,则使用bcrypt;如果必须使用PBKDF2,则使用PBKDF2(需要非常高的轮数)

谢谢。这正是我想知道的,有道理。对于攻击者来说,似乎付出了太多的努力(除非它是一个具有重大价值或重要性的站点)。谢谢你的快速回复。