一尘不染

使用随机盐改善密码哈希

php

我正在建立一个网站,并试图决定如何加密用户密码以将其存储在SQL数据库中。

我意识到使用简单的md5(password)是非常不安全的。我正在考虑使用sha512(password.salt),并且我一直在研究生成有用盐的最佳方法。我阅读了许多文章,指出盐应尽可能地随机以增加哈希值的熵,这似乎是个好主意。但:

  • 您需要将随机盐与哈希一起存储
  • 鉴于攻击者以某种方式可以访问您的哈希密码(并试图将哈希值反转为纯文本),这意味着他可能已转储您的数据库,然后还可以访问您的随机盐

数据库中哈希旁边的看起来很奇怪的值难道不是很明显吗?如果攻击者可以使用哈希值和哈希值来访问盐,那如何更安全?

在这方面有专业知识吗?谢谢!


阅读 296

收藏
2020-05-29

共1个答案

一尘不染

攻击者被 “允许” 知道盐-必须以某种方式设计安全性,即使知道盐也仍然是安全的。

盐有什么作用?

盐有助于使用预先计算的“彩虹表”防御暴力攻击。
盐会使暴力破解者的攻击者(在时间/内存方面)更加昂贵。
计算这样的表是昂贵的,并且通常仅在它可以用于多个攻击/密码时才进行。
如果您对所有密码使用相同的盐,那么攻击者可以预先计算出这样的表,然后将您的密码暴力破解为明文…
只要您为每个想要生成的密码生成一个新的(最佳加密强度)随机盐存储哈希值没有问题。

如果您想进一步加强安全性,则
可以多次计算哈希(哈希等)-这虽然不花很多钱,但会使蛮力攻击/计算“彩虹表”的成本更高。 ..请不要发明自己-
有行之有效的标准方法,请参见例如http://en.wikipedia.org/wiki/PBKDF2http://www.itnewb.com/tutorial/Encrypting-
Passwords使用PHP来使用RSA-
PBKDF2-Standard进行存储

注意:

由于“ CPU时间”(可用于彩虹表/蛮力之类的攻击)越来越广泛地被使用,因此, 如今 使用这种机制已成为一种 挑战 。例如,Amazon
Cloud服务在最快的前50名中排名第一全球超级计算机,任何人都可以使用它的数量相对较少)!

2020-05-29