SRP 避免在登录交换中发送密码,但不会让被盗的验证值变得无害。
安全远程口令协议(Secure Remote Password,简称 SRP)让客户端与服务器使用密码进行认证,而不在正常的协议交换中发送该密码。对于原本会在登录时接收密码的服务器,这可以减少密码暴露。
它并未让服务器不再持有任何与密码有关的秘密。服务器保存一个验证值,而被盗的验证值可以被用于离线猜测密码。在评估“零知识登录”的说法时,这一区别至关重要。
与传统密码登录相比,有何变化?
在传统设计中,客户端通过经过认证的 TLS 连接发送密码。设计良好的服务器会比较合适的加盐密码哈希,避免记录凭据,并采取防猜测措施。TLS 保护连接;密码哈希则以不同方式保护存储的凭据。
SRP 改变了交换过程。注册时,系统建立盐和验证值材料。登录时,双方使用新的协议值及各自的秘密,建立并确认共享密钥材料。客户端使用密码,服务器使用其验证值。诚实的客户端不会将密码本身作为登录载荷提交。
RFC 2945 中的 SRP 规范解释了协议的基础。后续配置规范和实现仍需审查其确切参数及消息检查;将设计称为“SRP”,并不能证明每项实现选择都可靠。
| 问题 | 传统的通过 TLS 传送密码的登录 | 正确实现的 SRP 交换 |
|---|---|---|
| 应用服务器在登录时会收到输入的密码吗? | 通常会 | 不会作为协议交换的一部分收到 |
| 存储了哪些敏感认证材料? | 通常是加盐密码哈希 | 盐和由密码导出的验证值 |
| 被盗数据库可用于离线猜测吗? | 可以,取决于存储的材料 | 可以,被盗 SRP 验证值材料可用于猜测 |
| 能防御键盘记录器吗? | 不能 | 不能 |
| 会自动加密消息历史吗? | 不会 | 不会 |
为什么被盗验证值仍然重要
RFC 5054 第 3.3 节明确讨论了验证值被盗的情况。它说明,验证值可以让攻击者冒充服务器,并通过字典攻击恢复密码。
关键区别是:验证值并不只是一个可重复使用的客户端登录令牌。但这不意味着它无害。攻击者可以对照被盗材料测试候选密码,而不必为每个可能的秘密求解离散对数问题。弱密码或重复使用的密码仍是严重风险。
在线速率限制可以减缓对运行中服务的尝试,却无法约束针对被盗数据库进行的计算。数据库保护、审慎的密码处理以及强且唯一的密码仍然重要。
SRP 不能保护什么
已被攻破的端点: 恶意软件可以在协议开始前捕获密码,也可以在认证完成后窃取会话。
恶意登录页面: 如果索取密码的页面本身是恶意的,它就能把输入文本发送到别处。网页应用仍然需要可信的交付路径。
所有恢复路径: 能授予账户访问权限的电子邮件、短信或客服流程,各有自己的要求。最强的常规登录方式也可能被较弱的备用路径破坏。
每一种主动网络攻击: 协议参数、输入验证、相互确认以及外围经过认证的连接都很重要。不要用“密码从不传输”的口号,取代部署方案所规定的 TLS 保护。
元数据或聊天加密: 认证回答的是是否应允许某个会话进入。它并不决定有哪些对话记录,也不决定谁持有消息解密密钥。
Livara 如何区分登录与身份恢复
Livara 的安全概览将 SRP 认证与 LVR1 消息协议分别说明。文档还介绍了第 7 版加密身份备份,它由一个独立的随机 256 位恢复密钥保护。
该备份在上传前就已封装加密,恢复的是密码学身份,而不是聊天历史。仅知道账户密码,无法恢复那些加密密钥。反过来,声称客服无法重建加密秘密,也不能证明不存在任何账户管理操作或密码更改流程。
威胁模型同样将设备失陷和可见通信元数据纳入范围。不应借 SRP 之名,把整个服务重新包装成对用户活动的每一个方面都“零知识”。
实用评估清单
对用户而言,应选择强且唯一的密码,保护设备,将恢复材料放在适当的独立位置,并了解如何撤销会话。不要仅因一个不可信网站声称使用 SRP,就在其中输入秘密。
对技术审查者而言,应索取确切的协议配置规范、密码到验证值的处理方式、输入验证、失败处理、注册流程和重置设计。应将客户端与服务器结合审查。测试应覆盖无效公开值、重放和中断的会话,而不是只依赖一次成功的登录测试。
SRP 是限制认证过程中密码泄露的有用工具。将其真正的优势与验证值被盗、端点失陷和恢复风险一起说明,比将它描绘成密码安全问题的终结,更能清楚体现它的价值。



