KDF 算法
KDF 被用来阻止针对主密码的暴力或字典攻击。KDF 迫使攻击者的机器为每次密码猜测计算大量的哈希值,从而增加攻击者的成本。
目前有两种 KDF 算法可用于 Bitwarden:PBKDF2 和 Argon2。每种算法都有一系列可用选项,可用于增加攻击者的时间和费用,或「工作因素」。
PBKDF2 已被 Bitwarden 实现,其工作原理是将您的主密码与您的用户名混合,并通过单向哈希算法 (HMAC-SHA-256) 运行结果值以创建固定长度的哈希值。该值再次用您的用户名加盐,并散列可配置的次数(KDF 迭代)。所有迭代后的结果值就是您的主密钥,它充当主密码散列的输入,用于在用户登录时验证该用户(了解更多)。
默认情况下,Bitwarden 设置为迭代 600,000 次,这是 OWASP 为 HMAC-SHA-256 实现推荐的。只要用户不将此值设置得更低,实现就符合 FIPS-140,但如果您选择更改设置,这里有一些提示:
- 更多的 KDF 迭代将同时增加攻击者破解密码所需的时间,以及合法用户登录所需的时间。
- 我们建议您以 100,000 为增量增加该值并测试您的所有设备。
Argon2 已被 Bitwarden 实现,其工作原理是将您的主密码与您的用户名混合,并通过单向哈希算法 (BLAKE2b) 运行结果值以创建固定长度的哈希值。
Argon2 分配一部分内存(KDF 内存)然后用已计算的哈希值填充它直到填满。这是重复的,从它在第一个停止的内存的后续部分开始,在多个线程(KDF 并行)上迭代多次(KDF 迭代)。所有迭代后的结果值是您的主密钥,它充当主密码哈希的输入,用于在用户登录时验证该用户(了解更多)。
- 增加 KDF 迭代将线性增加运行时间。
- 您可以使用的 KDF 并行数量取决于您机器的 CPU。一般来说,最大。并行数 = 核心数量 x 2。
- iOS 会限制用于自动填充的应用程序内存。从默认的 64MB 增加迭代可能会导致在解锁密码库时出错。
2023-02-14:2023.2.0 及以后版本的 Bitwarden 客户端支持 Argon2,通过网页密码库切换到 Argon2 可能意味着其 他客户端在更新之前无法加载您的密码库。通常在发布后一周内更新这些客户端。
要更改您的 KDF 算法,请导航至网页密码库的账户设置 → 安全 → 密钥页面。更改算法将重新加密受保护的对称密钥并更新身份验证哈希,就像正常的主密码更改一样,但不会轮换对称加密密钥,因此密码库数据不会被重新加密。有关重新加密数据的信息,请参阅此处。
在 2023.2.0 版本中,根据已更新的 OWASP 指南,Bitwarden 将使用 PBKDF2 算法的账户的默认 KDF 迭代次数增加到了 600,000。这加强了密码库加密,以抵御拥有日益强大设备的黑客。如果您使用 PBKDF2 算法并将 KDF 迭代设置为低于 600,000,您将收到一条警告消息,鼓励您增加 KDF 设置。
为了维护零知识加密,不管是 Bitwarden 还是管理员都无法修改您的账户安全或密码库加密设置。如果您看到此消息,请选择更新 KDF 设置按钮并将 PBKDF2 迭代次数增加到至少 600,000,或者将您的 KDF 算法更改为具有默认设置的 Argon2id。当您保存这些更改时,您将从所有客户端被注销,因此请确保您知道您的主密码并且您的两步登录方式可用。
更改迭代次数有助于保护您的主密码免遭攻击者的暴力破解,但不应将其视为一开始就使用强主密码的替代方法。强大的主密码始终是您 Bitwarden 账户的第一道也是最好的防线。