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