World Wide Web Consortium (W3C) 宣布 Web Authentication API (WebAuthn) 成为正式的 Web 标准。WebAuthn 现在是一项无密码登录验证的开放标准,为 Web 应用和服务提供了无密码的公钥身份认证接口,获得了 Airbnb、阿里巴巴、Apple、Google、IBM、Intel,、Microsoft、Mozilla、PayPal、SoftBank、腾讯和 Yubico 等公司的支持,允许用户使用生物识别、移动设备等登录在线账号。主流浏览器如 Google Chrome、Mozilla Firefox 和 Microsoft Edge 都已经在去年加入了对 WebAuthn 的支持,苹果的 Safari 浏览器则在预览版中加入了对 WebAuthn 的支持。
W3C的WebAuthn推荐FIDO 联盟的FIDO2规范集的核心组成部分。FIDO2是支持公钥加密和多因素身份验证的标准 - 特别是通用身份验证框架(UAF)和通用第二因子(U2F)协议。为了促进采用,FIDO联盟提供测试工具和认证计划
FIDO2尝试以四种方式解决传统身份验证问题:
安全性:FIDO2加密登录凭证在每个网站都是唯一的;生物识别或密码等其他机密永远不会离开用户的设备,也永远不会存储在服务器上。此安全模型消除了网络钓鱼及所有形式的密码被盗和重放攻击的风险。
便利性:用户使用指纹识别器、相机、FIDO安全密钥或个人移动设备等简单方法登录。
隐私:由于FIDO密钥对于每个互联网站点都是唯一的,因此它们不能用于跨站点跟踪用户。
可扩展性:网站可以通过API调用,跨平台支持数十亿消费者常用设备上的浏览器和平台。
https://blog.csdn.net/weixin_34080571/article/details/89557509
工作原理
实际上,我们在自己的服务中实现了 WebAuthn 和 FIDO2 CTAP2 规范,使它得到了落实。
与密码不同,FIDO2 使用公钥/私钥加密来保护用户凭据。在你创建并注册 FIDO2 凭据时,设备(电脑或 FIDO2 设备)会在设备上生成一对公钥私钥。私钥安全地存储在设备上,只有在通过生物识别或 PIN 等本地手势解锁后才能使用。请注意,你的生物识别或 PIN 永远保留在设备上。在存储私钥的同时,公钥被发送到云端的 Microsoft 帐户系统并在你的用户帐户中注册。
在你以后登录时,Microsoft 帐户系统会向你的电脑或 FIDO2 设备提供一个 nonce。然后,你的电脑或设备使用私钥对 nonce 进行签名。已签名的 nonce 和元数据将发送回 Microsoft 帐户系统,并在此处通过公钥进行验证。按照 WebAuth 和 FIDO2 规范指定进行签名的元数据将提供诸如用户是否在线等信息,并通过本地手势验证身份。正是因为这些属性,使用 Windows Hello 和 FIDO2 设备进行的身份验证才不“易受攻击”或被恶意软件轻易窃取。
Windows Hello 和 FIDO2 设备如何实现这一点?根据 Windows 10 设备的功能,你将拥有内置的安全区域(称为硬件可信平台模块 (TPM))或软件 TPM。TPM 存储私钥,需要你的面部、指纹或 PIN 才能解锁。同样地,FIDO2 设备(例如安全密钥)是一个小型外部设备,它自带内置安全区域,可存储私钥且需要生物识别或 PIN 进行解锁。这两个选项一步到位地提供了双因素身份验证,要求同时注册设备和提供生物识别/PIN 才能成功登录
https://www.microsoft.com/zh-cn/microsoft-365/blog/2018/11/20/sign-in-to-your-microsoft-account-without-a-password-using-windows-hello-or-a-security-key/
https://webauthn.io/
https://github.com/duo-labs/webauthn.io
https://github.com/duo-labs/webauthn
https://w3c.github.io/webauthn/
https://webauthn.guide/
https://github.com/koesie10/webauthn