2

关于什么是合适的 PBKDF2 设置,我有几个问题。我用谷歌搜索答案,结果大多是空手而归。

基本上,我想知道考虑到 2012 年的技术状况,输入 pbkdf2.php(在此处找到)的合适值是什么。什么会给我一个合理的期望,即我编码的密码不会被非政府实体破解未来几年?

这是我正在考虑的:

define("PBKDF2_HASH_ALGORITHM", "sha512");
define("PBKDF2_ITERATIONS", 20000);
define("PBKDF2_SALT_BYTES", 512);
define("PBKDF2_HASH_BYTES", 512);

我知道还有许多其他因素可以发挥作用来创造良好的安全性。以下是我正在使用的其他安全措施的概要:

  • 12位密码,至少有2个数字、2个字母和2个符号
  • 要求每 6 个月更改一次密码
  • php mysqli 为所有数据库访问准备语句
  • 我所有表格上的标记
  • 错误登录延迟 5 秒,
  • 同一 IP 10 次错误登录后列入黑名单
  • 不正确的登录和黑名单触发相同的响应
  • HTTPS
  • 我正在使用会话,每次访问页面时,我都会每 10 页和敏感页面上更改会话标识符。

我错过了什么吗?

4

2 回答 2

2

举个例子,大多数现代 Linux 发行版中 sha512crypt 的默认设置(/etc/shadow 条目中的 $6$)使用 5000 次迭代和 16 字节的 salt。这很慢。但是在散列方面,我不会批评你矫枉过正;)

于 2012-10-02T20:02:20.653 回答
0

这个问题没有一个正确的答案,因为不同的应用程序需要不同的安全级别。正确的做法是对您的应用程序进行基准测试,并使用您的服务器可以以响应方式轻松处理的尽可能高的设置。(当然是在负载测试下)

仅仅通过首先实现 PBKDF2 而不是像 MD5 或 SHA-1 这样的“快速”、“消息摘要”式算法,您已经比一般系统安全得多。

于 2012-10-03T06:43:04.543 回答