WordPress 6.8 为何用 bcrypt 加密密码,而告别 phpass?

作者:WenM

更新于:2025年4月10日 01:08

WordPress 6.8 为何用 bcrypt 加密密码,而告别 phpass?

引言

作为全球最广泛使用的开源内容管理系统,WordPress 的安全性直接关系到数百万网站的数据完整性与用户隐私。密码哈希机制是保障用户凭据安全的核心手段——通过将明文密码转换为不可逆的密文,即便数据库遭泄露,攻击者也难以还原用户的真实密码。

在即将发布的 WordPress 6.8 版本中,一个重大的安全更新是将默认的密码哈希算法从传统的 phpass 升级为更现代且安全的 bcrypt。这一变更标志着 WordPress 在平台安全性方面迈出关键一步,进一步向行业最佳实践靠拢。事实上,早在 13 年前,社区中就有声音呼吁引入 bcrypt,而如今,这一提案终于成为现实。

WordPress 6.8 之前的密码哈希机制:phpass

在 6.8 版本之前,WordPress 使用的是名为 phpass(Portable PHP password hashing framework) 的密码哈希机制。phpass 的设计初衷是为缺乏原生加密扩展的旧版 PHP 提供跨平台的安全哈希方案。它通过引入“可移植哈希”的概念,增强了跨不同 PHP 环境的兼容性。

phpass 通常使用迭代哈希配合盐值(salt)来增强密码安全性,相比早期未加盐的 MD5 等算法已经有显著提升,但面对当今计算能力日益强大的破解手段,其防护能力仍显不足。

为何采用 bcrypt?

WordPress 选择 bcrypt 的核心原因在于大幅提升密码哈希的抗攻击能力。bcrypt 具备以下优势:

  • 高计算成本设计:bcrypt 本身设计为“慢速”算法,显著增加了暴力破解的难度;
  • 对现代硬件破解手段的抵抗力强,尤其是 GPU 和 ASIC;
  • 自动加盐机制,防止彩虹表攻击;
  • 适应性强,通过可调节的“工作因子”可与计算能力同步增强安全性。

不仅如此,此次更新还扩大了加密安全的适用范围,涵盖了包括用户密码、应用密码、密码重置密钥及其他敏感凭据在内的多个关键字段。这些值将采用更先进的 BLAKE2b 哈希(通过 Sodium 库实现),体现了 WordPress 在整体安全战略上的系统性升级。

bcrypt 的核心特性与安全优势

bcrypt 是专为密码哈希设计的算法,基于 Blowfish 分组密码构建,具备以下关键特性:

  • 自动加盐(Automatic Salting):每个密码哈希自动附加一个随机盐值,有效避免彩虹表攻击;
  • 可调节工作因子(Configurable Work Factor):bcrypt 引入“成本因子”或“轮数”,工作因子越高,破解所需计算量呈指数增长;
  • 抗暴力破解能力强(Resistance to Brute-Force Attacks):结合自动加盐和高计算成本,大大提升攻击者破解难度;
  • 单向不可逆(One-Way Function):无法从哈希还原原始密码,保障数据隐私;
  • 业界广泛采用(Widely Adopted Industry Standard):被众多系统广泛使用,深受安全专家推崇。

虽然 bcrypt 的“慢速特性”可能会轻微影响登录速度,但为了更强的安全性,这种性能与安全的权衡是值得的。

WordPress 6.8 中 bcrypt 的实现细节

WordPress 对 bcrypt 的集成是深思熟虑、兼顾安全与兼容性的。其实现包括:

  • SHA-384 预哈希:由于 bcrypt 最多只接受 72 字节密码,WordPress 6.8 在哈希前先对密码进行 SHA-384 处理;
  • 专属哈希前缀 $wp$:WordPress 使用 $wp$2y$ 前缀来标识其生成的 bcrypt 哈希,避免与其他插件混淆;
  • 向后兼容:旧密码哈希仍可通过 wp_check_password() 验证,无需用户手动重置密码;
  • 可选 Argon2 支持:如果服务器环境支持,开发者也可以选择更先进的 Argon2 算法(前缀为 $argon2);
  • 继续支持 $wp_hasher 全局对象:方便开发者扩展或自定义哈希机制。

bcrypt 与 phpass 对比

特性bcryptphpass
默认版本WordPress 6.8 起WordPress 6.8 前
加盐机制自动、强制通常使用,但非强制
工作因子可调,计算成本指数增长可配置迭代,但增长幅度较低
抗暴力破解强,专为密码设计较弱,抗现代攻击能力有限
抗 GPU 破解较强容易受 GPU 加速影响
行业支持度广泛采用,被视为标准曾广泛使用,逐渐被替代
算法基础Blowfish 分组密码多种可移植哈希框架

综上所述,bcrypt 在安全性、抗攻击性以及长期维护性方面全面领先于 phpass,是现代密码哈希的更优选择。

对用户与开发者的影响

  • 对用户而言:升级到 WordPress 6.8 后无需任何操作,系统将在用户首次登录或更改密码时自动重新哈希为 bcrypt。
  • 对开发者而言
    • 核心函数 wp_hash_password()wp_check_password() 已切换为使用 PHP 原生的 password_hash()password_verify()
    • 若代码中使用了非 WordPress API 的 phpass 验证方法,需适配新算法;
    • 注意新密码哈希前缀 $wp$2y$,以及其他安全密钥的 $generic$ 前缀。

此外,SSO、多因素认证(MFA)等其他身份认证机制不会受到影响。

结语

WordPress 6.8 默认采用 bcrypt 算法,是平台安全性提升的重要里程碑。这项更新不仅增强了用户密码的防护能力,也反映了 WordPress 积极拥抱更安全、更现代技术的态度。通过自动迁移、向后兼容、开发者友好等一系列策略,WordPress 保障了此次升级的平滑实施,也为广大用户带来了更值得信赖的安全保障。

© 版权声明

本文由站长帮(zhanzhangb.cn)发布,保留所有权利。

未经明确书面许可,不得转载、摘编本站内容。对于侵权行为,我们将保留追究法律责任的权利。