密码哈希:最佳实践

正确的密码哈希对于应用程序安全至关重要。使用错误的算法可能导致大规模的帐户泄露。

为什么不使用 SHA-256

SHA-256 对于密码来说速度太快。现代 GPU 可以每秒计算数十亿个 SHA-256 哈希。攻击者可以在几小时内暴力破解弱密码。 快速哈希对文件完整性很有用,但对密码来说是一个弱点。密码需要慢速哈希来挫败暴力攻击。 密码哈希应该需要几百毫秒。这对合法登录来说是不可察觉的,但使暴力攻击不切实际。

使用 Bcrypt、Scrypt 或 Argon2

Bcrypt 是经过实战检验的密码哈希标准。它包含自动盐值,具有可配置的工作因子,并且被广泛支持。随着硬件改进增加工作因子。 Scrypt 增加了内存硬度,使 GPU 和 ASIC 攻击更加困难。当您需要比 bcrypt 更强的抵抗 GPU 攻击时使用。 Argon2 是最新的最先进技术,在密码哈希竞赛中获胜。它提供了针对 GPU、ASIC 和侧信道攻击的最佳保护。如果您的语言有良好的库,请使用 Argon2。

实施最佳实践

始终加盐:盐值防止彩虹表攻击。Bcrypt/scrypt/Argon2 会自动处理这个问题。 使用适当的工作因子:对 bcrypt 从 10-12 开始。随着硬件改进而增加。瞄准约 250-500ms 的哈希时间。 切勿发明自己的密码学:使用经过实战检验的库。密码学很难正确实施。 定期重新哈希:当用户登录时,如果他们的密码使用旧算法或工作因子进行哈希,请使用当前设置重新哈希。

试用工具

哈希生成器

哈希生成器

相关文章