【问题标题】:Salt practices clarification [duplicate]盐做法澄清[重复]
【发布时间】:2014-07-18 13:22:06
【问题描述】:

我最近在阅读 Jeff Six 的 Android 平台的应用程序安全性,我发现了一个令我感到困惑的声明。在加密部分,在描述盐和散列函数时,做了这样的声明

就像 IVs [Initialization Vector] 一样,盐值应该是随机的,但不需要保密。

这是真的吗?因为我对盐和散列函数的理解是这个陈述是错误的,盐需要保护,因为如果盐被释放,可以生成一个新的彩虹表,从而不需要盐?它是否正确?或者盐真的不需要保密吗?为什么会这样?

【问题讨论】:

  • 如果您对每个用户都有单独的盐值(我假设您正在对密码进行盐化),那么暴露盐没什么大不了的,因为攻击者必须为每个用户构建一个彩虹表(即不可行)。
  • 这个问题似乎跑题了,因为它是一个关于密码学的抽象问题

标签: encryption salt hash-function rainbowtable


【解决方案1】:

盐不必保密,因为它将是一个 64 位或 128 位的随机数,攻击者将无法使用任何未包含该盐的彩虹表。实际上,攻击者会暴力破解每个单独的密码(因为每个密码都有自己的盐,当然,不能使用相同的盐对两个密码进行哈希处理)。

彩虹表攻击基于为所有可能的密码输入存储预先计算的哈希值(自然地,达到一定长度)。为每个可能的 128 位复杂度的盐存储彩虹表是不可行的:仅涵盖占 128 位盐的单字节密码的彩虹表大约为 2 80 TB(即 1027:一千万亿万亿 1TB 硬盘)。

【讨论】:

  • 为单个密码构建彩虹表没有意义,因为暴力破解更快(为什么找到匹配后继续计算?)。
猜你喜欢
  • 1970-01-01
  • 2017-12-29
  • 2015-08-29
  • 2012-06-14
  • 2011-12-28
  • 2012-07-05
  • 1970-01-01
  • 2013-01-14
  • 2013-02-19
相关资源
最近更新 更多