下面簡(jiǎn)單介紹下“兩步驗(yàn)證”(Google Authenticator)的相關(guān)知識(shí),懂的大大可以跳過。
Google Authenticator是谷歌推出的一款動(dòng)態(tài)口令工具,旨在解決賬戶遭到惡意攻擊的問題,只需在手機(jī)安裝密碼生成應(yīng)用程序,就可以生成一個(gè)隨著時(shí)間變化的一次性密碼,用于帳戶驗(yàn)證、保護(hù)用戶的信息安全,而且這個(gè)應(yīng)用程序不需要連接網(wǎng)絡(luò)即可工作。
與傳統(tǒng)單因子密碼不同,其采用的是更安全的雙因子(2FA two-factor authentication)認(rèn)證。FA是指結(jié)合密碼以及實(shí)物(信用卡、SMS手機(jī)、令牌或指紋等生物標(biāo)志)兩種條件對(duì)用戶進(jìn)行認(rèn)證的方法。其采用的算法是TOTP(Time-Based One-Time Password基于時(shí)間的一次性密碼),也稱時(shí)間同步的動(dòng)態(tài)密碼。目前這個(gè)算法已經(jīng)寫入國(guó)際標(biāo)準(zhǔn) RFC 6238,并且多被用于雙因素認(rèn)證(2FA)系統(tǒng)。
其核心內(nèi)容包括以下三點(diǎn):
1、共享密鑰(一個(gè)比特序列),共享密碼用于在手機(jī)端上建立賬戶。密碼內(nèi)容可以是通過手機(jī)拍照二維碼或者手工輸入,并會(huì)被進(jìn)行base32加密。
2、時(shí)間輸入,輸入的時(shí)間值來(lái)自于手機(jī)本身,一旦我們獲得密鑰后,就無(wú)需與服務(wù)器再進(jìn)行通信了。但是最重要一點(diǎn)是務(wù)必確保手機(jī)上的時(shí)間是正確的,因?yàn)橥蟮牟襟E服務(wù)器會(huì)多次重復(fù)使用之前得到的時(shí)間值,服務(wù)器只會(huì)認(rèn)準(zhǔn)這個(gè)值。進(jìn)一步說,服務(wù)器會(huì)比對(duì)所有提交的令牌以確認(rèn)哪一個(gè)是你輸入并提交的。
3、簽署函數(shù),簽署所使用的方法是HMAC-SHA1。HMAC的全稱是Hash-based message authentication code(哈希運(yùn)算消息認(rèn)證碼),以一個(gè)密鑰和一個(gè)消息為輸入,生成一個(gè)消息摘要作為輸出,這里以SHA1作為消息輸入。使用HMAC的原因是:只有用戶本身知道正確的輸入密鑰,因此會(huì)得到唯一的輸出。
