#5 2FA:双因素身份认证
Auth 信息安全 2022-08-192FA / MFA
双因素 / 多因素认证,就是指处理密码之外,再加一些辅助手段用来加强认证。
常见的 2FA 方式:
- 密码 + 短信验证码
- 密码 + 微信公众号推送验证码
- 密码 + 身份验证器
- 密码 + U盾
人体特征
应该有人脸,指纹,声纹,虹膜等方式的组合(甚至在异形 4 中有吹气的方式),这些在我们的数字生活中这些认证方式多少都有一些体验吧。
动态口令卡
事先给客户一张密码表,然后需要的时候要求客户按要求输入指定位置的数字用来验证身份。
原理应该和微信让用户指认哪个头像是自己的好友一样。
证书
银行的 U 盾
OTP(动态密码)
一次性密码,One Time Password
TOTP 的全称是"基于时间的一次性密码"(Time-based One-time Password)。它是公认的可靠解决方案,已经写入国际标准 RFC6238。
不知道密码学上是什么原理,只知道可以每分钟生成一个 6 位密码。只要双方算法和密钥一致,就能实现认证。
软件的,谷歌身份验证器,微软身份验证器,这种。
硬件的,银行的动态口令,早些年网易的将军令,这种。
FIDO
FIDO(Fast IDentity Online,线上快速身份验证)联盟是成立于2012年7月的行业协会。其宗旨是为解决强制认证设备的交互性和用户面临大量复杂的用户名和密码。
主要是一些巨头(Google,微软)和搞 2FA 硬件设备的厂商组件的联盟,目标是通过一个标准,让符合标准的技术能够到处适用,用起来更方便、更安全。
官方定义的愿景是 “减少世界对密码的依赖”。
协议:
- Universal Authentication Framework (UAF)
UAF 1.0 Proposed Standard (December 8, 2014)
UAF 1.1 Proposed Standard (February 2, 2017)
UAF 1.2 Review Draft (November 28, 2017) - Universal 2nd Factor (U2F)
U2F 1.0 Proposed Standard (October 9, 2014)
U2F 1.2 Proposed Standard (July 11, 2017) - FIDO 2.0 (FIDO2, contributed to the W3C on November 12, 2015)[4]
FIDO 2.0 Proposed Standard (September 4, 2015) - Client to Authenticator Protocol (CTAP)
CTAP 2.0 Proposed Standard (September 27, 2017)
CTAP 2.0 Implementation Draft (February 27, 2018)
说明:
- FIFO 由两部分组成:通用认证框架 (UAF) 和 通用第二因素 (U2F)。
我的理解:- UAF 是一套新设计的认证方案,系统对设备进行认证,然后设备在本地通过 PIN 码,指纹等方式(主要是生物特征)对客户进行认证。
试图取代现在简单密码比对的认证方式。 - U2F 是主密码 + 硬件口令,最早由 Yubico 和 Google 设计。。
- UAF 是一套新设计的认证方案,系统对设备进行认证,然后设备在本地通过 PIN 码,指纹等方式(主要是生物特征)对客户进行认证。
- 现在流行的是 FIDO 联盟和 W3C 共同制定的 FIDO2,将 2FA 的相关技术拓展到 Web 领域。
FIDO2 主要由 W3C Web 身份验证(WebAuthn)和 CTAP2 (客户端到身份验证器协议)组成。
浏览器的 WebAuthn JS API + 客户端的 CTAP2。
WebAuthn 向前兼容 CTAP1 / U2F。 - CTAP 支持 USB,蓝牙,NFC 三种方式。
- CTAP1(Client-to-Authenticator)约等于 U2F
- CTAP2,CBOR 数据格式?
- 主流浏览器都已支持 WebAuthn,也就是说网站可以接入了。
阿里巴巴的 IFAA
腾讯的 TUSI
今天的《科技爱好者周刊(第 219 期):如何防止帐号被黑》中说:
上周有一起安全事件。两家著名的美国互联网公司----Twillo 和 Cloudflare----被攻击了,前者还被攻破了。
手段还是钓鱼,不止钓密码,也钓了 TOTP 验证码。所以阮一峰在文章中的意思是,物理密钥会更安全。
这么说确实有道理,其实我好多次都想买一个,就是太贵,两三百。
阮一峰还提到,有部分实践(Web Authentication)在尝试采用本地设备的认证手段作为第二因子,比如手机和笔记本上的指纹识别和人脸识别。
还是希望有厂商能够推出廉价一些的 Key。
参考资料与拓展阅读
- 2021/03/08, 谷歌身份认证器
- 2022/09/21, OSCHINA, Mullvad 推出开源 USB 安全密钥
- 2022/10/14, OSCHINA, 谷歌正式推出 “密钥登录”,逐步取代传统密码登录
- 知乎,Okta Certified Consultant:FIDO/FIDO2/UAF/U2F/WebAuthn/CTAP1/CTAP2/Passwordless简介
- StackOverflow, What are the differences between the U2F and UAF FIDO authentication standards?
- FIDO Alliance Specifications Overview
- 知乎,为什么国内绝大多数应用不支持FIDO U2F?
- 知乎,双因素验证 (2FA) 没你想象的安全
- 阮一峰,双因素认证(2FA)教程
- FIDO U2F、FIDO2 和 CTAP 的关系
- CTAP、FIDO2、WebAuthn?FIDO 相关术语一览
- CSDN, 什么是WebAuthn、FIDO 是什么?
- CSDN, OTP原理及实现