我们应该加盐独特和随机的信息

问题描述 投票:1回答:2

在数据库中存储密码时使用Salt,以防止字典攻击和彩虹表。

但是,我们假设我们需要存储有关用户的唯一且随机(敏感)的信息。在对这些信息进行哈希处理之前,还有一个优势吗?

在这种情况下,不会使用盐,只是为已经随机的数据添加随机性(与人工密码不同)?

security hash salt
2个回答
1
投票

这取决于您的信息的保密程度以及此数据受到损害时的后果。它是像SSN或DOB这样的PII信息吗?

您提到您的数据是随机且唯一的。这意味着很难识别模式。如果模式足够随机,那么可能不需要Salting您的数据。如果你选择盐腌,那么你还有责任保护这些盐。

我建议使用低特权帐户,强化服务器,身份验证,授权来保护您的数据并最小化攻击的表面。

同样,您应该在根据CIA原则对数据进行分类后得出结论。


1
投票

这在很大程度上取决于搜索空间的大小。例如,我们可以假装社会安全号码是随机的和唯一的(它们实际上也不是,但为了讨论的目的,我们将假装它们)。如果你正在散列SSN,你不仅需要盐,还有盐是不够的。为什么?因为存在少于100亿个SSN。为这些创建彩虹表是微不足道的。即使使用盐,即使价值是独特且随机的,也不难以暴力。

因此,为了保护存在于小型搜索空间中的随机和唯一值,我们必须使用像PBKDF2这样的拉伸算法,而不仅仅是哈希。拉伸算法的要点是使哈希计算非常慢。

拉伸算法总是包含盐。但它不一定是随机盐。它可以是确定性的(例如,某些数据库标识符+用户ID,“com.example.mygreatapp:alice”)。但是对于小型搜索空间,您仍然需要每个用户都是唯一的,因为搜索空间中的项目很少。

另一方面,如果您的随机和唯一数据代表一个大的搜索空间(不小于2 ^ 64,理想情况下至少为2 ^ 80),并且搜索空间稀疏(您只使用一小部分合法元素) ),然后可能不需要盐腌和拉伸。

© www.soinside.com 2019 - 2024. All rights reserved.