谷歌身份驗(yàn)證器是怎么工作的?
谷歌身份驗(yàn)證器(或其他類型的雙因素身份驗(yàn)證器)如何工作?
谷歌身份驗(yàn)證器是一種基于軟件的身份驗(yàn)證器,可實(shí)現(xiàn)兩步驗(yàn)證服務(wù)(2FA)。下圖提供了詳細(xì)信息。
圖片
其中涉及兩個(gè)階段:
- 階段 1 - 用戶啟用 Google 兩步驗(yàn)證
- 階段 2 - 用戶使用驗(yàn)證器登錄
第一階段
- 步驟 1 和 2:Bob 打開網(wǎng)頁以啟用兩步驗(yàn)證。前端請(qǐng)求一個(gè)密鑰。驗(yàn)證服務(wù)會(huì)為 Bob 生成密鑰,并將其存儲(chǔ)在數(shù)據(jù)庫中。
- 步驟 3:驗(yàn)證服務(wù)向前端返回一個(gè) URI。URI 由密鑰發(fā)放者、用戶名和秘鑰組成。URI 以二維碼的形式顯示在網(wǎng)頁上。
- 步驟 4:Bob 使用谷歌身份驗(yàn)證器掃描生成的 QR 碼。密鑰存儲(chǔ)在驗(yàn)證器中。
第二階段
- 步驟 1 和 2:Bob 想通過 Google 兩步驗(yàn)證登錄一個(gè)網(wǎng)站。為此,他需要密碼。每隔 30 秒,谷歌身份驗(yàn)證器會(huì)使用 TOTP(基于時(shí)間的一次性密碼)算法生成一個(gè) 6 位數(shù)的密碼。Bob 使用密碼進(jìn)入網(wǎng)站。
- 步驟 3 和 4:前臺(tái)將 Bob 輸入的密碼發(fā)送到后臺(tái)進(jìn)行身份驗(yàn)證。驗(yàn)證服務(wù)從數(shù)據(jù)庫中讀取密鑰,并使用與客戶端相同的 TOTP 算法生成一個(gè) 6 位數(shù)的密碼。
- 步驟 5:身份驗(yàn)證服務(wù)比較客戶端和服務(wù)器生成的兩個(gè)密碼,并將比較結(jié)果返回前端。只有當(dāng)兩個(gè)密碼匹配時(shí),Bob 才能繼續(xù)登錄。
問題1: 這種身份驗(yàn)證機(jī)制是安全的嗎?別人能否獲取密鑰?
我們需要確保使用 HTTPS 傳輸密鑰。身份驗(yàn)證器客戶端和數(shù)據(jù)庫會(huì)存儲(chǔ)密鑰,我們需要確保密鑰經(jīng)過加密。
問題2: 6 位數(shù)密碼會(huì)被黑客猜到嗎?
不會(huì)。密碼有 6 位數(shù)字,因此生成的密碼有 100 萬種可能的組合。此外,密碼每 30 秒更改一次。如果黑客想在 30 秒內(nèi)猜出密碼,他們每秒需要輸入 30,000 個(gè)密碼組合。





















