两步验证

下面简单介绍下“两步验证”(Google Authenticator)的相关知识,懂的大大可以跳过。
Google Authenticator是谷歌推出的一款动态口令工具,旨在解决账户遭到恶意攻击的问题,只需在手机安装密码生成应用程序,就可以生成一个随着时间变化的一次性密码,用于帐户验证、保护用户的信息安全,而且这个应用程序不需要连接网络即可工作。
与传统单因子密码不同,其采用的是更安全的双因子(2FA two-factor authentication)认证。FA是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。其采用的算法是TOTP(Time-Based One-Time Password基于时间的一次性密码),也称时间同步的动态密码。目前这个算法已经写入国际标准 RFC 6238,并且多被用于双因素认证(2FA)系统。
其核心内容包括以下三点:
1、共享密钥(一个比特序列),共享密码用于在手机端上建立账户。密码内容可以是通过手机拍照二维码或者手工输入,并会被进行base32加密。
2、时间输入,输入的时间值来自于手机本身,一旦我们获得密钥后,就无需与服务器再进行通信了。但是最重要一点是务必确保手机上的时间是正确的,因为往后的步骤服务器会多次重复使用之前得到的时间值,服务器只会认准这个值。进一步说,服务器会比对所有提交的令牌以确认哪一个是你输入并提交的。
3、签署函数,签署所使用的方法是HMAC-SHA1。HMAC的全称是Hash-based message authentication code(哈希运算消息认证码),以一个密钥和一个消息为输入,生成一个消息摘要作为输出,这里以SHA1作为消息输入。使用HMAC的原因是:只有用户本身知道正确的输入密钥,因此会得到唯一的输出。

totp.png

推荐阅读更多精彩内容