什么是WebAuthn、FIDO 是什么?
发布日期:2021-06-29 22:26:29 浏览次数:2 分类:技术文章

本文共 2944 字,大约阅读时间需要 9 分钟。

文章目录

WebAuthn

https://webauthn.io/

身份安全|什么是Webauthn?

参考URL: https://baijiahao.baidu.com/s?id=1667228882303147989

WebAuthn(Web 身份验证)是由万维网联盟(W3C)发布的 Web 标准。WebAuthn 是 FIDO 联盟指导下的 FIDO2 项目的核心组成部分。该项目的目标是标准化用户对基于 Web 的应用程序和服务的公钥认证的接口。

WebAuthn全称Web Authentication API 使用asymmetric (public-key) cryptography (不对称加密)替代密码或SMS文本在网站上注册,验证, second-factor authentication(双因素验证). 解决了phishing(钓鱼), data breaches(数据破坏), SMS 文本攻击,其他双因素验证等重大安全问题. 同时显著提高易用性(因为用户不必管理许多越来越复杂的密码)。

WebAuthn支持的生物验证方式包括:笔记本电脑的指纹识别和面部识别、安卓设备的指纹识别。追求高安全的用户还可额外购买兼容FIDO的实体安全密钥,FIDO完整支持包括:指纹识别、面部识别、虹膜识别、声音识别、实体密钥(USB连接、蓝牙连接、NFC连接),支持设备系统包括:Windows 10、Linux、Mac OS、Android、iOS、智能手表等。

WebAuthn用公钥证书代替了密码,完成用户的注册和身份认证(登录)。它更像是现有身份认证的增强或补充。为了保证通信数据安全,一般基于HTTPS(TLS)通信。

Webauthn的架构实现

WebAuthn用公钥证书代替了密码,完成用户的注册和身份认证(登录)。它更像是现有身份认证的增强或补充。为了保证通信数据安全,一般基于HTTPS(TLS)通信。在这个过程中,有4个模块。

  • Server(服务端):

    它可以被认为一个依赖方(Relying Party),它会存储用户的公钥并负责用户的注册、认证。

  • JavaScript(Js脚本):

    调用浏览器API,与Server进行通信,发起注册或认证过程。

  • Browser(浏览器):

    需要包含WebAuthn的Credential Management API提供给js调用,还需要实现与认证模块进行通信,由浏览器统一封装硬件设备的交互。

  • Authenticator(认证模块):

    它能够创建、存储、检索身份凭证。它一般是个硬件设备(智能卡、USB,NFC等),也可能已经集成到了你的操作系统(比如Windows Hello,MacOS的Touch ID等)

Webauthn应用场景

Webauthn提供了一个安全的无密码认证标准,彻底抛弃了密码,并且统一由操作系统完成安全硬件设备和生物特征识别的集成及管理,浏览器调用操作系统进行提供的能力形成认证器, 应用开发者按标准与浏览集成即可完成FIDO认证,无需关心硬件设备的兼容和生物特征的算法,使得应用开发者集成FIDO认证抛弃密码更加容易和安全。

场景一:集成Windows hello认证

Win10系统的Windows hello模块,本身可以集成人脸、指纹、pin码等认证方式,在windows上运行的web应用注册或认证时可以通过浏览器直接与windows hello集成获取用户身份凭证进行认证;

场景二:集成MacOS Touch ID认证

MacBook系统自带Touch ID集成指纹认证,浏览器通过接口可以直接唤醒mac的Touch ID进行认证;支持Webauthn的web应用可以直接使用TouchID进行登录;

场景三:集成Android指纹认证

由于Android系统厂商的异构,不同手机厂商会有不同的人脸识别或指纹识别模块,通过Webauthn由系统层面封装了与生物设备对接,应用系统就无需关心Android系统的异构行,直接使用手机的生物认证登录;

场景四:集成iOS人脸认证

iPhone系统自带Face ID集成人脸认证,浏览器通过接口可以直接唤醒Face ID进行认证;支持Webauthn的web应用可以直接使用Face ID进行登录;

场景五:使用YubiKey认证

YubiKey是一个外置的ukey存储用户私钥来进行webauthn认证,其可以同时支持pc和移动app;pc模式下通过usb接口访问,移动app模式下通过nfc访问;

在这里插入图片描述

Webauthn存在的缺点

Webauthn依赖于浏览器与认证模块通讯,那么必须使用最新的浏览方可支持。在无浏览器情况下如CS应用或移动APP无法简便的使用;

Webauthn设计的目标是解决认证,用户一旦通过认证,就可以访问所有资源,在零信任架构中不能允许一次认证永久使用的场景存在。

FIDO (Fast Identity Online)线上快速身份验证

FIDO 是什么?

参考URL: https://www.zhihu.com/question/28233883

2018年4月,FIDO和W3C在基于Web的“强身份认证”(Stronger Authentication)上取得了重要突破。**通过标准Web API——WebAuthn,Web应用开发者可以轻松调用FIDO基于生物特征、安全、快速的在线身份认证服务。**11月27日,FIDO联盟和W3C在京联合举办技术研讨会,公开了其技术理念和细节。

FIDO联盟是全球性的行业协作,致力于不依赖“共享秘密”解决传统口令(password)给身份认证所带来的弊端。随着移动互联网在中国的迅猛发展,FIDO生态在中国也在不断壮大。目前,联盟在中国的董事会成员包括:阿里巴巴、联想、飞天诚信、以及中国台湾的神盾股份(Egis)。

基于公私钥对的非对称加密体系,只在本地的可信执行环境(TEE)中存储用户的生物特征信息,是FIDO相较于传统身份认证方式的两个重要不同点。

Web Authentication(https://www.w3.org/TR/webauthn/)由W3C和FIDO联盟一起完成的标准制定,目前仅在Win10和安卓系统下,有三款主流浏览器Chrome、Edge、Firefox提供原生支持,可使用平台认证器(即内置在PC上)或漫游认证器(如手机,平板,智能手表等),通过WebAuthn接口调用FIDO服务,完成Web应用的强身份认证。当然,因为W3C标准的一般性,所以不只是浏览器,任何Web应用,如使用html5语言开发的手机app,都可以调用该接口。好处有两点,一是通过WebAuthn接口Web应用的开发者可以更容易的以一个统一标准调用FIDO服务,二是让FIDO2强身份认证能力支持的场景通过浏览器和Web应用得以延伸的更加广泛。

参考

WebAuthn预览 - 基于公钥的免密认证登录

参考URL: https://blog.csdn.net/weixin_34381666/article/details/91435407

转载地址:https://docker.blog.csdn.net/article/details/110949599 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Hibernate JPA-原生查询返回BigIntegers而不是long
下一篇:java 通用内存分页(List分页)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 02时56分52秒