摘要
- RFC 9807 规定的 OPAQUE 允许客户端在注册和认证时都不向服务器泄露密码;但单服务器的凭据记录与相关秘密一旦失守,针对该账户的离线穷举字典攻击仍不可避免。
- 真实的事故半径取决于
oprf_seed的拓扑:共享种子可能把多个用户连成一个失陷域,独立种子、伪造响应、门限 OPRF 与重新注册则分别引入新的隐私、状态和迁移成本。
一句完全正确的话,也可能遮住最重要的问题。
“服务器永远看不到密码”准确概括了 OPAQUE 的一项核心性质,却没有回答服务器侧还掌握什么。它没有说明每个用户的 OPRF 密钥是否来自同一根种子,也没有说明凭据记录、AKE 私钥和种子是否落在同一管理域,更没有说明发生紧急轮换时,沉睡账户能否在事故窗口内完成重新注册。
RFC 9807 于 2025 年 7 月发布,描述了一种增强型密码认证密钥交换协议。客户端通过不经意伪随机函数、凭据恢复信封与经过认证的密钥交换,在不交出密码的前提下证明自己知道密码,并与服务器得到同一会话密钥。密码在注册阶段也不会交给服务器。
文件身份必须同样准确。RFC Editor 记录和 Datatracker 页面表明,它是 IRTF 流的 Informational RFC,代表 Crypto Forum Research Group 的共识。正文明确说它不是 IETF 产品,也不是标准。把文章链接到 IETF 目录便于读者发现资料,并不意味着可以把研究组文件写成 IETF 标准轨授权。
密码不再过境,风险却没有清零
传统登录让密码在 TLS 1.3 保护下抵达应用。TLS 能保护运输,却无法保证接收端不把密码写进日志、不在内存中泄露,也无法弥补边界外终止或应用层误用。服务器收到可重复使用的秘密,本身就是一种权力。
OPAQUE 改变了过境对象。RFC 9497 所定义的 OPRF 让服务器持有函数密钥,客户端提交盲化输入;客户端得到输出,服务器既不知道输入,也不知道输出。RFC 9807 再让客户端完成密钥拉伸并构造保护认证材料的信封。
在线阶段依次交换 KE1、KE2、KE3。第三条消息才携带显式客户端认证。服务器发出 KE2 不等于登录成功;只有有效 KE3 到达且 ServerFinish 完成,认证收据才成立。若业务监控把前一步记成成功,密码学实现可以正确,风控事实仍会错误。
客户端还得到两种不同结果。session_key 与服务器共享,用于当前会话;export_key 只由客户端掌握,可用于保护额外数据,但必须在客户端认证服务器之后才使用。二者都不是授权决定。认证证明对端关系,是否允许转账、改配置或读取敏感数据,仍由应用策略另行判断。
字典攻击只是被推迟并抬高成本
OPAQUE 原始论文 对能力边界写得很克制:在单服务器 aPAKE 中,服务器失陷并泄露某个用户的相关凭据材料后,攻击者对该用户实施离线穷举是不可避免的。OPAQUE 阻止的是事前针对可预测映射准备可复用表格。攻击者必须等到取得新的秘密材料后,才为每个猜测付费。
客户端执行的 KSF 会提高这笔费用。RFC 9807 给出采用 Argon2id 或 scrypt 的推荐配置,RFC 9106 则提供 Argon2 指导。但更高的内存和时间参数既惩罚攻击者,也惩罚每一台合法客户端。真正的证据不是“我们启用了 Argon2id”,而是最低端手机、浏览器、嵌入式设备和恢复流程中的尾部延迟、内存压力、耗电与失败率。
OPAQUE 不会消灭在线猜测,不会把弱密码变强,也保护不了在盲化前已泄密的客户端。它确实让服务器无需获知密码,抵抗预计算,提供双向认证,并以向前保密限制后续密码泄露对既有会话的影响。把这项明确的进步夸张成万能安全,反而会损害它的可信度。
每用户密钥背后的共享根
服务器初始化时建立 AKE 密钥对和 oprf_seed。种子与唯一凭据标识符结合,派生出每个客户端各不相同的 OPRF 密钥。叶子彼此独立,根却可能只有一条。
这正是风险地图容易失真的地方。“每用户唯一密钥”在数学上成立,并不意味着每个用户处在独立失陷域。如果所有密钥都依赖同一根可恢复的秘密,那么该根的托管位置才决定横向半径。RFC 9807 在采用其账户枚举防护时建议所有客户端共用种子,同时在 10.9 节直说:共享 oprf_seed 泄露会危及所有依赖它的客户端。
2024 年的 (Strong) aPAKE Revisited 研究了草案谱系中的多用户问题。它不是声称种子一泄露,全部密码立即出现。其路径更具体:某一用户的文件失陷后暴露全局种子;攻击者据此派生另一用户的 OPRF 密钥;再与诚实服务器进行一次普通交互,就能把对另一用户的猜测转移到离线环境。最终 RFC 引用了这项研究,并公开写入跨用户后果。
若应用不需要该枚举防护,可以为客户端配置独立种子,从而缩小共同根。但用户到种子的映射必须在注册与登录期间始终一致。恢复错误、复制分歧或查找回退既可能泄露账户是否存在,也可能锁死合法用户。去集中化不是“多生成几个随机数”,而是新增一套需要备份、恢复、审计和演练的状态治理。
运行代码优先在这里给出一把很直接的尺子。“每用户密钥”是标签;现实问题是谁能取得根、调用派生、恢复备份,以及凭这些权限能测试多少账户。
隐藏账户存在性需要单独付费
面对不存在的身份,服务器可以构造假的 CredentialResponse。客户端注册时生成的 masking_key 对响应进行加密,使真实账户与模拟账户难以区分。消息外形相同仍不够;代码分支、错误与耗时也不能成为旁路预言机。
这项保护不覆盖注册。注册流程必然以不同方式处理新身份与已有身份,因此攻击者仍可把它当作枚举入口,应用必须限速或限制访问。伪响应还可能带来资源放大问题,因为服务器生成响应的成本可能低于客户端提出请求的成本。
masking_key 本身要在注册时安全交给服务器,所以注册阶段需要认证、机密性与完整性。RFC 9807 提到 TLS,并在初始通道只有认证能力时指向 HPKE 建立机密性。不能一面宣传密码不向服务器披露,一面忽视安装其他账户秘密的注册仪式。
共享种子与独立种子的选择,实质上是在账户存在性隐私、跨账户爆炸半径、映射一致性与运维复杂度之间取舍。最小初始规范、本地未来决策与自愿采用的思路适用于此:共同协议规定互操作边界,本地运营者必须说明自己面对的枚举威胁,以及为何值得为它接受某种托管结构。
OPRF、AKE 与记录库是三个控制面
oprf_seed、服务器 AKE 私钥和 RegistrationRecord 数据库能够支持不同攻击。RFC 9807 指出,服务器无须导出原始 AKE 私钥;HSM 可以只提供共享秘密计算。在种子和客户端信封失守后,独立保护 AKE 能力可以阻止服务器冒充,但它不会单独消除由 OPRF 材料和记录带来的离线猜测。
控制图必须分别回答:谁能为多少客户端求值 OPRF;谁能调用 AKE 运算;谁能读取记录并关联真实身份。三个服务如果共用管理员、恢复人员和备份路径,仍然只是一个保险库的三个标签。
门限 OPRF 可以改变第一项。RFC 9807 说,它能够迫使攻击者保持在线,或取得足够数量的份额;若 OPRF 服务器与认证服务器分离,即使凑齐全部份额,没有记录库仍不足以发起离线攻击。原始论文也支持对客户端透明的门限实现。但 RFC 9807 明确把实现细节留在范围之外。“支持门限”不证明份额由独立主体托管,不证明仲裁失效时仍可用,更不证明一名管理员无法重新汇聚全部权力。
HKDF、RFC 9380 的曲线哈希和 RFC 8125 的 PAKE 要求都是必要部件。部件合规无法替具体服务证明组合正确、随机性可靠、恒定时间执行或事故程序有效。
重新注册才是迁移
如果只看服务器二进制,密码学敏捷性像一次普通发布。RFC 9807 却明确指出:改变影响 RegistrationRecord 的算法或参数,包括 KSF 与服务器公钥等绑定材料,都要求用户重新注册并生成新记录。修改密码同样是使用新随机值的一次全新注册。
因此,迁移发生在用户状态,而不只发生在机房。新服务器上线不会自动改写沉睡账户、旧客户端、恢复失败者或依赖旧 export_key 的数据。记录数量越大,既有配置越像锁定:若没有用户参与,组织无法退出原失陷域。
现实层次要求把三个事实分开。新配置已经部署,可能是真的;全部账户已迁移,可能是假的;旧秘密域已退役,则要等最后一条仍被接受的旧记录和回退路径消失后才能成立。
可验证收据应是一份分群台账:可迁移账户、新记录数量、仍接受的旧记录、沉睡账户、恢复失败、无法承受新 KSF 的客户端、旧导出密钥依赖、回退调用,以及旧 OPRF、AKE 与记录材料真正失效的日期。
OPAQUE 对一个明确问题给出了强答案:密码认证能否不把可重复使用的密码交给服务器,同时抵抗事前预计算?RFC 9807 的答案是可以。管理层的责任,是不把这个答案偷换成系统级无风险证明。
密码离开了服务器视野,权力并未消失。它转移到派生根、记录、私有运算、模拟响应、终端预算和迁移状态。只有把这些位置逐一命名、隔离并验证,协议进步才会成为现实的风险收缩。
Sources
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

