WebAuthn 是什么
WebAuthn(Web 身份验证)是由万维网联盟(W3C)发布的 Web 标准。WebAuthn 是 FIDO 联盟指导下的 FIDO2 项目的核心组成部分。该项目的目标是标准化用户对基于 Web 的应用程序和服务的公钥认证的接口。
在客户端,可以通过多种方式实现对 WebAuthn 的支持。底层加密操作由验证器执行,验证器是一种抽象的功能模型,与关键材料的管理方式大多不相关。这使得可以纯粹在软件中实现对 WebAuthn 的支持,利用处理器的可信执行环境或可信平台模块(TPM)。敏感加密操作也可以卸载到漫游硬件验证器,而后者又可以通过 USB,蓝牙低功耗或近场通信(NFC)进行访问。漫游硬件验证器符合 FIDO 客户端到认证者协议(CTAP),使 WebAuthn 有效地向后兼容 FIDO 通用第二因子(U2F)标准。
与传统的 U2F 类似,Web 身份验证具有弹性到验证者模仿的能力,即它可以抵御主动的中间人攻击,但与 U2F 不同,WebAuthn 不需要传统的密码。此外,漫游硬件验证器可抵抗恶意软件,因为私有密钥材料在主机上运行的软件不会被访问。
WebAuthn 1 级标准于 2019 年 3 月 4 日作为 W3C 建议书发布。正在制定 2 级规范。
了解
与其前身 FIDO U2F 一样,W3C Web 身份验证(WebAuthn)涉及网站,Web 浏览器和身份验证器:
- 该网站是一个符合 WebAuthn 的依赖方
- 浏览器是符合 WebAuthn 的客户端
- 验证者是 FIDO2 验证者,也就是说,它被认为与 WebAuthn 客户端兼容
WebAuthn 指定了索赔人如何向称为 WebAuthn 依赖方的验证者证明拥有和控制 FIDO2 验证者。身份验证过程由称为 WebAuthn Client 的实体调解,该实体仅仅是一个符合 Web 的浏览器。
出于说明的目的,我们假设验证器是漫游硬件验证器(参见下面的其他选项)。在任何情况下,身份验证器都是一个多因素加密身份验证器,它使用公钥加密来签署针对 WebAuthn 信赖方的身份验证断言。假设验证者使用 PIN 进行用户验证,验证者本身就是您所拥有的,而 PIN 是您所知道的。
WebAuthn 依赖方通过 JavaScript 向 WebAuthn 客户端(即浏览器)表明其意图。WebAuthn 客户端使用浏览器中实现的 JavaScript API 与身份验证器进行通信。验证器符合 FIDO 客户端到验证器协议。
WebAuthn 并不严格要求漫游硬件验证器。或者,可以使用软件认证器(例如在智能手机上实现)或平台认证器(即,直接在 WebAuthn 客户端设备上实现的认证器)。平台验证器的相关示例包括 Windows Hello 和 Android 操作系统。
所示流程依赖于基于 PIN 的用户验证,就可用性而言,其仅是对普通密码认证的适度改进。在实践中,使用生物识别技术进行用户验证可以显着提高 WebAuthn 的可用性。然而,生物识别背后的后勤仍然知之甚少。用户之间存在一种常见的误解,即生物识别数据以与密码相同的方式通过网络传输,但实际情况并非如此。
支持
WebAuthn Level 1 标准于 2019 年 3 月 4 日由 Web 身份验证工作组作为 W3C 推荐标准发布。WebAuthn 受以下 Web 浏览器支持:Google Chrome,Mozilla Firefox,Microsoft Edge 和 Apple Safari(预览版)。Opera Web 浏览器也支持 WebAuthn 。
自版本 67 以来,桌面版 Google Chrome 一直支持 WebAuthn。Firefox 已经完全支持以前的 FIDO U2F 标准,它包括并启用了 2018 年 5 月 9 日发布的 Firefox 60 版 WebAuthn。早期版本 Windows Insider 版本的 Microsoft Edge(Build 17682)实现了一个版本的 WebAuthn,它既适用于 Windows Hello,也适用于外部安全密钥。
现有的 FIDO U2F 安全密钥在很大程度上与 WebAuthn 标准兼容,尽管 WebAuthn 添加了引用唯一的每个帐户“用户句柄”标识符的功能,旧标识符无法存储。首批与 FIDO2 兼容的验证器之一是 Yubico 的第二代安全密钥,于 2018 年 4 月 10 日宣布。
Dropbox 于 2018 年 5 月 8 日宣布支持 WebAuthn 登录(作为第二因素)。