1. 程式人生 > >黃聰:谷歌驗證 (Google Authenticator) 的實現原理是什麼?

黃聰:谷歌驗證 (Google Authenticator) 的實現原理是什麼?

開啟Google的登陸二步驗證(即Google Authenticator服務)後用戶登陸時需要輸入額外由手機客戶端生成的一次性密碼。

實現Google Authenticator功能需要伺服器端和客戶端的支援。伺服器端負責金鑰的生成、驗證一次性密碼是否正確。客戶端記錄金鑰後生成一次性密碼。

目前客戶端有:
android版: Google 身份驗證器
iOS版:

實現原理:

一、使用者需要開啟Google Authenticator服務時,
1.伺服器隨機生成一個類似於『DPI45HKISEXU6HG7』的金鑰,並且把這個金鑰儲存在資料庫中。
2.在頁面上顯示一個二維碼,內容是一個URI地址(otpauth://totp/賬號?secret=金鑰),如『otpauth://totp/
[email protected]
?secret=DPI45HCEBCJK6HG7』,下圖:

3.客戶端掃描二維碼,把金鑰『DPI45HKISEXU6HG7』儲存在客戶端。

二、使用者需要登陸時
1.客戶端每30秒使用金鑰『DPI45HKISEXU6HG7』和時間戳通過一種『演算法』生成一個6位數字的一次性密碼,如『684060』。如下圖android版介面:

2.使用者登陸時輸入一次性密碼『684060』。
3.伺服器端使用儲存在資料庫中的金鑰『DPI45HKISEXU6HG7』和時間戳通過同一種『演算法』生成一個6位數字的一次性密碼。大家都懂控制變數法,如果演算法相同、金鑰相同,又是同一個時間(時間戳相同),那麼客戶端和伺服器計算出的一次性密碼是一樣的。伺服器驗證時如果一樣,就登入成功了。

Tips:
1.這種『演算法』是公開的,所以伺服器端也有很多開源的實現,比如php版的:
 。上github搜尋『Google Authenticator』可以找到更多語言版的Google Authenticator。
2.所以,你在自己的專案可以輕鬆加入對Google Authenticator的支援,在一個客戶端上顯示多個賬戶的效果可以看上面android版介面的截圖。目前dropbox、lastpass、wordpress,甚至vps等第三方應用都支援Google Authenticator登陸,請自行搜尋。
3.現實生活中,網銀、網路遊戲的實體動態口令牌其實原理也差不多,大家可以自行腦補下,謝謝。

相關推薦

驗證 (Google Authenticator) 的實現原理是什麼?

開啟Google的登陸二步驗證(即Google Authenticator服務)後用戶登陸時需要輸入額外由手機客戶端生成的一次性密碼。實現Google Authenticator功能需要伺服器端和客戶端的支援。伺服器端負責金鑰的生成、驗證一次性密碼是否正確。客戶端記錄金鑰後生成一次性密碼。目前客戶端有:and

OTP動態密碼_Java程式碼實現

OTP認知 動態口令(OTP,One-Time Password)又稱一次性密碼,是使用密碼技術實現的在客戶端和伺服器之間通過共享祕密的一種認證技術,是一種強認證技術,是增強目前靜態口令認證的一種非常方便技術手段,是一種重要的雙因素認證技術,動態口令認證技術包括客戶端用於生成口令產生器的,動態令牌,是一個

我不是機器人最新版驗證碼系統ReCaptcha破解已開源

選自 Github 作者:George Hughey 機器之心編譯 每個人都討厭驗證碼,這些惱人的圖片中包含你必須輸入的字元,我們只有正確地填寫才能繼續訪問網站。驗證碼旨在確認訪問者是人還是程式,並防止惡意程式的入侵。然而,隨著深度學習和計算機視覺技術的發展,現在這些認證方法可以被我們輕鬆破解了。 在

ffmpeg基本用法(轉)

sca wid cal ner aspect mp4 動態文本 tegra 控制輸出 FFmpeg FFmpeg 基本用法 本課要解決的問題 1.FFmpeg的轉碼流程是什麽? 2.常見的視頻格式包含哪些內容嗎? 3.如何把這些內容從視頻文件中抽取出來? 4.如

FFmpeg 使用指南

留下 時間 下一個 pseudo rdquo tle 全局 什麽 實時 1. ffmpeg 是什麽? ffmpeg(命令行工具) 是一個快速的音視頻轉換工具。 2. ffmpeg 的使用方式 命令行: ffmpeg [全局選項] {[輸入文件選項] -i &lsquo

免費訪問搜索,Gmail郵箱,Chrome商店

blog 使用 extension image not chrom tro note google 分享個免費的google的服務的方法 1,插件下載: http://note.youdao.com/noteshare?id=6a3e52f8d4ccf63c751eedd

FFmpeg視頻轉碼技巧之-crf參數(H.264篇)

文件中 one log 它的 忽略 enter center tail vcd 昨天,有個朋友給我出了個難題:他手上有一個視頻,1080P的,49秒,200多兆;要求在確保質量的情況下把文件壓縮到10M以內。 這是什麽概念呢?按照文件大小10M來計算,碼率是:10 x 8

濃縮的才是精華淺析GIF格式圖片的存儲和壓縮(轉)

meid 單獨 圖片分辨率 change 之前 dex 本質 0.11 blog http://www.cnblogs.com/qcloud1001/p/6647080.html 成文迪, 在Web前端摸爬滾打的碼農一枚,對技術充滿熱情的菜鳥,致力為手Q的建設添磚加瓦

PHP數據庫連接失敗--could not find driver 解決辦法

才會 pdo_mysq php 驅動 mysq sql ould 數據庫 對象 數據庫連接失敗could not find driver在調試一個PHP程序時,報了這個錯誤, could not find driver 經過一番查找,結合自己的思考和實踐,終於找到了問題所在

JQUERY判斷操作CHECKBOX選中、取消選中、反選、第二次無法選中的問題

clas 再次 box als 修改 api disable jquer checkbox 用JQuery做CheckBox全選和反選的時候,遇到一個問題。當用JQ控制全選,全取消一次以後,再次點擊全選,發現代碼變了,但是CheckBox沒有處於選中狀態。 $(

Jquery+DataTables插件,如何在ajax調用服務器數據後,自動給tr添加id屬性

jquer ida ted fnr pos sid idt 事件 all http://legacy.datatables.net/usage/callbacks#fnRowCallback 主要通過 fnCreatedRow 事件來實現 var table = $

jquery.bootgrid表格插件有的屬性(visibleInSelection、cssClass、headerCssClass、headerAlign)不能識別的解決辦法

oot div 添加 bsp load scl 不能 大小 jquer 主要是屬性大小寫問題,修改jquery.bootgrid.js文件,在function loadColumns()方法裏面添加下面的語句就好了 data.headerAlign = data.he

中國黑客教父將用QUIC傳輸層技術加速互聯網

image 安全系統 通信 會話狀態 AR 人員 預測 逆轉 數據   黑客教父郭盛華表示:“安全這個話題,要感謝斯諾登,過去的安全就是攻和防之間的關系,即我們用一種什麽樣的體系、架構和模式去構建一個密不可破的安全系統。”   黑客郭盛華對IETF工作組忽視外部觀察者看起來

iOS $299刀企業證書申請的過程以及細節補充

別人 華夏鄧白氏 details 等等 .com 註意 內容 QQ blog 最近申請了iOS的 299刀企業證書,相關過程有些問題,分享出來,以便後來人參考。申請的過程我主要參考了別人以前的文章,鏈接如下:1、https://developer.apple.com/cn/

AngularJS最理想開發工具WebStorm

java tool row scl ng-repeat data- oom repos href Aug 29, 2013 Tags: angularangular.jsangularjswebstorm Comments: 23 Comments

通過 itms:services://? 在線安裝ipa ,跨過appstore

ins with 安裝 .get 解決方法 str war item 點擊 1.需要一個html文件,引導下載用戶在線安裝ipa <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">&

JS數學計算精度修正

function 浮點數 turn 計算 filesize add follow fun his 問題描述 如果我問你,4330.61乘以100等於多少,我猜你肯定跟我說:“肯定是 433061”啊! 是啊,要我我也是這麽回答,來來來我們

OTP動態密碼_Java代碼實現

-c name 好的 動態口令 comm final 並不是 bsp down OTP認知 動態口令(OTP,One-Time Password)又稱一次性密碼,是使用密碼技術實現的在客戶端和服務器之間通過共享秘密的一種認證技術,是一種強認證技術,是增強目前靜態口令

多巴胺開源新型增強學習框架

lis line 靈活 orm 額外 行為 mac otto msu https://mp.weixin.qq.com/s/KRyr0y84k6vkezuuM408lw Google 近日宣布開源一個新的基於 Tensorflow 的框架 —— Dopamine,旨在為

史上最詳細的kali安裝教程沒有之一

ner 沒有 操作系統 你是 著作權 如圖所示 鏈接 class 區域 首先在vm裏面新建虛擬機,直接選擇典型,然後下一步。 1 2 然後到了這一步,選擇中間的安裝程序光盤鏡像文件,然後去文件裏面