Random-Number-Generator

Google 的“身份驗證器編號生成器”如何工作?

  • April 5, 2018

我在我的 Google 帳戶上啟用了雙因素身份驗證,並且我的手機上有這個應用程序,它會生成一個我在登錄 Google-Mail 時必須輸入的號碼。

但我不明白這個數字是如何在Google方面得到驗證的。我的銀行也有類似的方法:他們給了我這個可以生成數字的小工具。

這種“身份驗證器編號生成器”是如何工作的?

Google(和其他公司)已決定為其 2 因素身份驗證啟用一次性密碼,作為提高密碼安全性的一個步驟。以下網頁更詳細地解釋了 Google 正在做什麼(包括原始碼):https ://code.google.com/p/google-authenticator/

簡而言之,他們實現了兩個 IETF RFC,即**RFC 6238RFC 4226**。看看這兩個規格;它們包含所有細節。我是 RFC 6238 的牧羊人。

我發現上面接受的答案有點無益——它基本上只是說:“閱讀這兩個 RFC”。因此,理論上,在 Internet 上獲得正確答案的最快方法是提供錯誤的答案,然後等待紐約幾分鐘,直到有人糾正你,這是我對總結概述答案的嘗試,基於對 Wikipedia 條目和兩個 RFC 進行了可笑的粗略檢查。

基本上,您的手機和伺服器應用程序首先就他們都知道的密鑰達成一致。當您在身份驗證器上設置應用程序時,只會發生一次。

從那時起,每 30 秒生成的數字基於 SHA-1 對密鑰與目前時間的散列(以 unix 時間戳的形式,向下舍入為 30 秒)。

所以,tl;dr:它是一個共享密鑰的雜湊值與目前的 unix 時間戳。

或者是嗎?歡迎指正…

引用自:https://crypto.stackexchange.com/questions/12087