通行密钥 / 密码 / 身份验证
密码与通行密钥:现代登录的工作原理

密码和 通行密钥 可能会出现在同一个登录界面,但它们依赖不同的安全模型。密码是你知道并发送给服务的可重复使用的秘密。通行密钥 使用公钥加密:私钥保留在你的 通行密钥 提供商处,而服务存储匹配的公钥。登录过程中无需透露私钥即可证明对私钥的控制权。
这种差异消除了几个常见的密码问题,但并不意味着账户的其余部分就绝对安全。设备安全、通行密钥 提供商的恢复机制、应用程序实现以及账户恢复仍然很重要。因此,有用的比较不是“密码不好,通行密钥 完美”,而是每种设计能防止哪些攻击,以及仍然存在哪些责任。
密码登录的工作原理
当你创建密码时,一个设计得当的服务不需要存储明文密码。它存储的是通过密码哈希处理并使用唯一盐值生成的结果。在登录时,服务处理你输入的密码并比较结果。然而,如果攻击者诱骗你在一个仿冒网站输入密码,攻击者就会获得可重复使用的密钥,并可以在真实服务上尝试使用它。
重复使用会扩大损害。如果相同的密码保护多个账户,一旦凭证泄露,就可以通过凭证填充在其他地方进行测试。由密码管理器生成并保存的唯一密码可以限制这种传播。多因素认证增加了另一道屏障,虽然用户可以输入到钓鱼页面的验证码也可能被攻击者中转。
通行密钥包含的内容
通行密钥 是与特定网站或应用程序上的账户相关联的 FIDO 凭证。在创建过程中,认证器会生成一对加密密钥。公钥会注册到服务端。私钥由设备上的 通行密钥 提供者、安安全密钥、操作系统凭证管理器或兼容的第三方管理器保护。
使用 PIN、指纹、面部识别或图案解锁设备会授权使用私钥。生物识别检查通常在本地进行;服务端接收到的是加密证明,而不是指纹或面部数据。 FIDO 联盟 通行密钥 概述 将 通行密钥 描述为可跨平台使用的 FIDO 凭证,通过与解锁设备相同的操作使用。

通行密钥 登录的工作原理
- 该服务向浏览器或应用程序发送一个新的加密挑战。
- 身份验证器确认请求属于已注册的服务,并在需要时请求用户同意或设备验证。
- 私钥在本地对挑战进行签名。
- 服务使用其已存储的公钥验证签名。
- 新的挑战防止旧的响应被用于新的登录。
此网络机制通过 WebAuthn 标准化。 W3C Web 身份验证规范 定义了由浏览器和身份验证器进行中介的、以依赖方为范围的凭证。此来源绑定是防钓鱼的核心:为某个服务注册的凭证不会提供给仿冒域。

通行密钥 改进了什么
- 登录时不会发送可重复使用的密码。
- 每个服务接收不同的凭证,从而消除了跨网站的密码重复使用。
- 其他来源的钓鱼页面无法请求注册给合法服务的凭证。
- 服务器泄露暴露的是公钥,而不是可被破解和重用的密码数据库。
- 设备解锁可以替代记忆和输入复杂密码。
通行密钥 本身无法解决的问题
- 被入侵或已解锁的设备仍可能暴露活动会话或允许使用凭证。
- 恶意浏览器扩展、应用程序漏洞和会话窃取存在于 通行密钥 协议之外。
- 弱账户恢复方法可以绕过强登录方式。
- 失去对每个设备和恢复方法的访问仍然可能导致用户被锁定。
- 用户在合法登录后仍可能被欺骗授权有害操作。
FIDO 指南强调,完全的防钓鱼保护包括注册和恢复步骤,而不仅仅是正常的登录步骤。允许攻击者通过弱备选方法重置帐户的服务,只是将弱点转移了,而没有消除它。
一个实用的迁移计划
- 为支持它的重要服务创建 通行密钥,然后确认这些 通行密钥 存储的位置,以及它们是如何同步或保持在设备上的。
- 在服务允许时增加多个恢复路径,例如第二个受信任设备或硬件安全密钥。
- 将仍然需要密码的服务的唯一密码保存在密码管理器中。
- 为剩余的密码账户启用最强的可用第二因素认证,尽可能优先使用抗网络钓鱼的方法。
- 将恢复码离线存储在主设备不可用时可访问的地方。
- 在更换或丢失设备后,检查旧设备和活动会话。
通行密钥 是一个有意义的改进,因为它们改变了协议,而不仅仅是秘密的形式。采用情况在一段时间内仍将不均衡,因此大多数人需要两套系统:在支持的地方使用 通行密钥,在其他地方使用具有适当多因素保护的强唯一密码。