多因素认证、生物识别与通行密钥:区分保障范围

内容摘要

两个步骤不一定是两个因素:密码和PIN都属于知识因素。生物识别可以激活认证器,但本身不保证匿名性或抗钓鱼能力。

虚构的无人身份核验室:两把安全密钥、空白卡片和酒红色文件夹
本文目录

两个步骤不一定是两个因素:密码和PIN都属于知识因素。生物识别可以激活认证器,但本身不保证匿名性或抗钓鱼能力。

比较机制,而不是页面数量

NIST区分知识、持有和生物特征。手工输入的一次性验证码可能被假网站转发,因此SMS和TOTP不等同于抗钓鱼认证。正确实施的通行密钥把响应绑定到相应服务,保障还取决于本地验证以及备份或同步条件。

理解生物识别的作用

WebAuthn可以在认证器内部进行生物识别,不把生物数据发送给接收的网络服务。本地验证也可以使用PIN。用户在场(UP)与用户验证(UV)不同。服务器必须按协议验证响应;仅有面部识别页面并不够。

保护整个生命周期

规划注册、增加认证方式、设备丢失、撤销及账户恢复。评估无障碍体验与备用方式,后者可能削弱主要登录路径。认证不能替代对数据和操作的业务授权。

来源

编辑核验日期:2026年11月1日。

将第二个因素与防钓鱼功能区分开来

NIST 指出,手动输入的一次性代码可能被伪造页面转发,因此仅凭一次性代码的存在并不能使登录过程具备防钓鱼功能。正确集成的 WebAuthn 会将响应绑定到真正的服务。账户恢复仍然是确保安全的途径。

  • 列出仍然接受短信、代码或可绕过授权的应用程序,并优先考虑特权账户。
  • 通过真实用户流程测试注册、设备丢失和撤销操作。
  • 衡量抗干扰因素覆盖率,并与所有者共享更新后的例外情况。

一手资料:NIST SP 800-63B-4. 相关方法:阅读实用指南.

通行密钥:准备域名和RP ID变更

区分业务账户、网页来源和RP ID,避免悄悄重新绑定凭据。

  • 记录旧、新来源、RP ID及关联账户。相同账户名不意味着通行密钥对另一个RP ID有效。核查WebAuthn允许的组合和迁移期间可用的登录路径。
  • 在授权测试环境用合适的库核查挑战、来源、RP ID和账户绑定。测试非预期来源和重复挑战。RP ID变化时准备经过身份验证的新注册;复制数据库行不是密钥迁移。
  • 测试仅持有旧凭据的用户、恢复流程和已打开会话。结合已验证回退方式确定路径启用、停用顺序。新域名注册成功不能证明所有旧会话已撤销。

可复现的验收案例

虚构示例:数据不代表客户或实际观察结果。

查看案例输入
{
    "old_origin": "https://login.old.example",
    "old_rp_id": "old.example",
    "new_origin": "https://login.new.example",
    "new_rp_id": "new.example",
    "same_service_account": true,
    "expected": "authenticated_new_registration"
}

预期判断

虚构例:账户相同,但old.example变为具有不同RP ID的new.example。不能悄悄重绑旧凭据;新注册必须经过计划的身份验证路径。

W3C — Web Authentication Level 2

修改数据库能更改通行密钥的RP ID吗?

不能。RP ID是凭据验证范围的一部分。准备适用于新范围的有效注册和经过身份验证的账户映射。

一手资料:W3C — Web Authentication Level 2. 相关方法:阅读实用指南.

postMessage:验证来源、窗口与请求命令

为iframe或弹出窗口建立消息契约,拒绝意外发送方和数据。

  • 列出准确允许的origin、预期窗口引用及有用消息类型。敏感数据使用明确targetOrigin。origin包含协议、主机和端口;在域名中查找子字符串不能验证对方。
  • 比较event.origin,并在此窗口集成中比较event.source与预期窗口。验证结构、允许值和操作状态。作为数据处理,不执行eval或插入HTML。允许的来源不替代服务器授权。
  • 测试相似域名、不同端口、同源其他窗口、无效字段及关闭后消息。移除多余监听器,使已结束通信失效。窗口导航后,回复仍使用预先批准的origin。

可复现的验收案例

虚构示例:数据不代表客户或实际观察结果。

查看案例输入
{
    "allowed_origin": "https://widget.example",
    "observed_origin": "https://widget.example",
    "expected_window": "active_iframe",
    "observed_window": "another_window",
    "payload_schema_valid": true,
    "expected": "reject_without_effect"
}

预期判断

虚构例:https://widget.example已获允许,但event.source是其他窗口。契约要求活动iframe窗口,因此拒绝消息且不发出命令。

MDN — Window.postMessage

一手资料:MDN — Window.postMessage. 相关方法:阅读实用指南.

身份:认证要素、会话与恢复

两个因素:检查协议,而不只是界面

输入验证码、推送批准和WebAuthn响应与服务的绑定不同。生物识别可以激活认证器,不能替代响应的密码学验证。

WebAuthn:四项独立控制
此示例要求用户验证。PIN或生物信息保留在本地,业务授权仍需单独检查。
  1. 本地激活 — 按认证器使用PIN或生物识别。
  2. 签署响应 — 服务范围的密钥与收到的挑战。
  3. 服务器验证 — 挑战、来源、签名与标志。
  4. 授权操作 — 对象和操作的权限。
  • 分别观察UP与UV。
  • 检查实际需要的同步与不可导出条件。
  • 演练从既有会话处理丢失并增加认证方式。

深入了解身份控制 →

来源核验日期 · NIST SP 800-63B-4 · final publication NIST · Authenticator Event Management W3C · WebAuthn Level 3

扩展:权限与访问

此语言版本的详细参考说明以英语提供。

Robust authentication does not describe extension access

Phishing resistance does not remove the need to examine what runs in the browser after a session opens. A manifest provides clues about cookies, scripting, debugging and identity without establishing collection.

  • Test approved extensions in a profile dedicated to sensitive operations.
  • For identity, inspect OAuth scopes and recipients; this permission does not enumerate identity-provider rights.
  • Distinguish session revocation, token revocation, extension disablement and native-component removal.

Read the permission directory and manifest examples →

Google Chrome · Stay secure · Documentation consulted 2026-10-23; browser behaviour remains version-dependent