返回主页
双因素认证(2FA)
一般来说,三种不同类型的证据,可以证明一个人的身份(三种因素)。
- 秘密信息:只有该用户知道、其他人不知道的某种信息,比如密码。
- 个人物品:该用户的私人物品,比如身份证、钥匙。
- 生理特征:该用户的遗传特征,比如指纹、相貌、虹膜等等。
常见2FA方法:
- 安全问题+密码
- 短信/邮件+密码(不安全)
- TPOP+密码
- U2F(Universal 2nd Factor)+密码
- 推送通知(Google账户)+密码
- 生物识别+密码
TPOP(Time-based One-time Password)
- 服务器生成密钥
- 根据密钥生成二维码,手机扫描存储密钥
- 手机根据密钥和时间戳生成哈希,有效期(默认为30s)内提交给服务器
- 服务器根据当前时间戳和密钥生成哈希,对比
简化版算法:
TC = floor((unixtime(now) − unixtime(T0)) / TS) //T0为约定的起始时间,默认为0,TS为有效期
TC = floor(unixtime(now) / 30) //30秒内,TC值相同
TPOP = HASH(secretKey, TC)
标准版
OTP(secretKey,C) = Truncate(HMAC-SHA-1(secretKey,C))
TOTP = Truncate(HMAC-SHA-1(secretKey,TC)
U2F(TUniversal 2nd Factor)
介绍
U2F(Universal 2nd Factor)是FIDO联盟提出的使用标准公钥密码学技术的身份认证协议。 2个阶段:
- 注册
- 设备生成公私钥对,公钥发给服务器保存与用户绑定
- 鉴权
- 服务器发起challenge
- 设备用私钥对challenge加密发回
- 服务器用公钥验证