盐 (密码学)

编辑
本词条由“匿名用户” 建档。
在密码学中,salt是随机选择的字符串,在进一步处理(例如输入到哈希函数)之前附加到给定的明文,以增加输入的熵。它广泛用于存储和传输密码以提高信息安全性。 密码不是直接存储的,而是在创建帐户时进行哈希处理,哈希值与用户数据一起存储在数据库中。当用户登录时,他们输入的密码将被散列并与存储的散列进行比较以验证用户身份。加密哈希函数,例如BLAKE或SHA-2是抗碰撞的,他们几乎肯定会从不同的输入中产生...

盐 (密码学)

编辑

在密码学中,salt 是随机选择的字符串,在进一步处理(例如输入到哈希函数)之前附加到给定的明文,以增加输入的熵。 它广泛用于存储和传输密码以提高信息安全性。

励志

编辑

密码不是直接存储的,而是在创建帐户时进行哈希处理,哈希值与用户数据一起存储在数据库中。 当用户登录时,他们输入的密码将被散列并与存储的散列进行比较以验证用户身份。 加密哈希函数,例如 BLAKE 或 SHA-2 是抗碰撞的, 他们几乎肯定会从不同的输入中产生不同的哈希值。 不同密码的哈希值匹配的概率在实际中可以忽略不计。

然而,这也意味着如果两个哈希匹配,则可以高度确定地得出相应密码相同的结论。 任何知道来自用户数据库的散列并且还知道使用了哪个散列函数的人都可以测试可能的密码并将它们与数据库的散列进行比较,例如以字典攻击的形式,以找到用户的密码。 他只需对每个试用密码进行一次哈希运算,以确定是否有任何用户选择了该密码。 因此,了解许多用户的密码哈希值会成倍增加成功的机会。 通过使用强大的并行硬件(通常是显卡)和优化的算法,您通常可以每秒散列数百万个测试密码。

许多散列算法也有所谓的彩虹表,它将许多可能的密码(例如字典中的所有单词)与散列值相关联。 如果给定的散列值来自该集合中的密码,则可以比系统地尝试所有密码更快地找到该密码。

有两种技术可以改善这种情况:一方面,使用 Salt,另一方面使用密码哈希函数,与 SHA-2 等针对效率优化的函数相比,需要更多每个散列的努力 - 需要计算来减缓攻击。

对密码加盐是常见的做法。 密码不再直接哈希,而是和盐一起输入到哈希函数中。 salt 通常是在创建帐户时为每个用户随机生成的,并与哈希值和其他用户数据一起存储在数据库中。

即使使用常量(对所有用户都相同)盐也会阻止使用为已知哈希函数准备的彩虹表,因为密码到哈希值的映射因盐而不同。 原则上,可以为密码盐组合创建彩虹表,但如果可能的盐的数量足够大,这是完全不切实际的。 他们必须在每个组合中包含所有支持的密码和可能的盐 - n 位长盐,表中记录的明文数量将是 2 n 次和以前一样大。

但是,系统地尝试密码仍然是可能的,因为可以访问数据库内容的攻击者通常也会找到盐。 但是,由于为每个用户生成了单独的盐,因此根据测试密码和盐计算出的哈希值仅对该用户有效。 必须为每个用户再次散列每个试用密码。

胡椒

编辑

为了使字典和暴力攻击更加困难,除了盐之外,密码还可以与设置服务器时选择的秘密字符串相结合,以计算哈希值。 这串字符称为胡椒服务器上的所有密码通常都相同。 通过为每个密码选择不同的胡椒,可以进一步提高安全性。 salt 和 pepper 的区别在于,pepper 不与哈希值存储在同一个数据库中,而是存储在不同的且尽可能安全的地方。 如果攻击者只获得对数据库的访问权限(例如通过 SQL 注入),他仍然可以学习哈希值,但这些现在来自密码和未知胡椒的组合。 字典攻击毫无意义,因为字典不太可能意外包含任何密码-Pepper 组合。 还有个BRod-force 攻击变得更加困难,因为您不仅要尝试密码,还要尝试密码和胡椒的组合。

密码哈希函数

编辑

有专门为哈希密码设计的哈希函数,这些允许协调散列工作,以便在尝试可能的密码时给攻击者带来更大的负担。 这与按键拉伸的原理相同。 如果与普通加密哈希函数相比,哈希所需的工作量增加了 n 倍,那么攻击者还必须为每个密码花费 n 倍的时间,这意味着他在给定时间内可以尝试 n 次更少的密码,成功的机会也相应降低。 例如,使用 SHA-2 进行哈希运算在现代计算机上花费的时间不到 10 秒,因此通常可以选择 n 大于 1000,具体取决于预期的服务器流量和可用的计算能力

salt字符串

用于此目的的最先进技术是 Argon2,它也旨在使专门开发的硬件 (ASIC) 的使用更加困难。 用户不仅可以确定所需的时间,还可以确定使用的内存空间和并行度(使用的处理器内核数)。

nonce 和 padding 的区别

编辑

nonce 和 padding 与 salt 非常相似,因为它们也是不在程序或算法中求值或以任何方式使用的字符串,而不是简单地将它们附加到另一个字符串。 区别在于这些字符串的用途和精确应用。

虽然在密码中使用加盐来增加熵,但在加密算法中使用随机数和填充。 nonce 用于确保明文的“xxx性”,因此如果同一个明文被多次加密,生成的密文将有所不同,尽管算法的确定性过程。 因此,随机数也应该尽可能随机。

另一方面,填充通常不一定要满足随机性标准,通常用于使确定明文和密文的长度更加困难,或者将长度增加到块长度。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/335710/

(6)
词条目录
  1. 盐 (密码学)
  2. 励志
  3. 胡椒
  4. 密码哈希函数
  5. nonce 和 padding 的区别

轻触这里

关闭目录

目录
尊敬的全球百科用户,全球百科新系统上线了!新增排名保障卡、词条年卡,更有增值功能——百度排名保障包年服务,详情访问“glopedia.cn/261472/”关注公众号可联系人工客服。