目前流行的身份认证方式存在的问题 随着互联网和移动互联网普及,用户身份认证的方式也在不断变化。从最初的帐号密码到动态令牌、U盾、短信验证码,再到指纹、面容等生物特征认证方式。服务提供商和用户对身份认证的需求也从最基础的安全性,扩展到便捷性、隐私性和规范性。然而,目前流行的身份认证方式或多或少存在问题。

传统静态密码认证存在的安全问题:

通过黑客技术盗取用户帐号密码,如:拖库、钓鱼、木马、暴力破解等。

撞库:利用大多数人在所有服务使用同一套帐号密码的特点,使用已经获得的帐号密码尝试登录其他服务。

动态认证方式存在的安全问题:

恶意应用可以读取短信验证码,在用户不知情的情况下进行盗刷。

动态令牌、U盾在各个机构间不通用,用户需要持有多个硬件设备。

生物特征认证存在的安全问题:

生物特征独一无二,被采集到服务端,无法像密码一样更改,泄露后果严重。

只在移动端(手机和部分笔记本电脑)普及,桌面端基本无法使用。

对于以上问题,FIDO是一种优秀的解决方案。

FIDO是什么? FIDO全称为Fast Identity Online,是一套身份认证框架协议。它由FIDO联盟推出并持续维护。FIDO规范定义了一套在线身份认证的技术架构,FIDO2是FIDO系列规范的第2版。

2019年正式发布的FIDO2包含CTAP(Client to Authenticator Protocols)和W3C WebAuthn两部分,是1.x版本的演进,向后兼容1.x版本。

CTAP:允许通过USB、NFC或BLE使用外部身份验证器(比如FIDO安全密钥,移动设备)在启用FIDO2的浏览器和操作系统上进行身份验证,以提供无密码、二次身份验证或多重身份验证体验。

W3C WebAuthn:定义了内置在浏览器和平台中的标准Web API,以支持FIDO身份验证。

FIDO2的组件 FIDO2包括3个组件:FIDO2认证器、FIDO2客户端和FIDO2服务器。

FIDO2认证器:用来进行本地认证的机制或设备,又分为FIDO2平台认证器和FIDO2漫游认证器两种。在面向最终用户时,认证器通常被称为安全密钥。 FIDO2平台认证器:集成在使用FIDO2的设备上的认证器,比如手机或笔记本电脑上的指纹认证器。 FIDO2漫游认证器:游离于使用FIDO2的设备,通过蓝牙、NFC或USB连接的认证器,比如形状类似于U盾或动态令牌的认证器。 FIDO2客户端:集成在平台(如Windows、MacOS和HMS Core)中,提供SDK给应用集成;或集成在浏览器中(如Chrome、Firefox和华为浏览器),提供JavaScript API给服务集成。FIDO2客户端是应用调用FIDO2服务器和FIDO2认证器完成认证的桥梁。 FIDO2服务器:在应用服务器需要发起FIDO2认证时,生成符合FIDO2规范的认证请求,发送给应用服务器;并在FIDO2认证器完成本地认证后,接收应用服务器返回的FIDO2认证响应,并进行校验。

参考网址: WebAuthn

OpenSK开源FIDO2 USB Key