鍍金池/ 問答/人工智能/ steam令牌驗證碼實現(xiàn)原理

steam令牌驗證碼實現(xiàn)原理

用過steam的用戶對這個問題應該比較熟悉,steam令牌相當于二次驗證,當你登錄陌生設備或進行交易時,需要輸入令牌里的驗證碼進行二次驗證。

我比較好奇的地方就是即使app不聯(lián)網(wǎng),手機令牌上的驗證碼也是與服務器同步的,也就是說用戶斷開手機的網(wǎng)絡,輸入令牌上的驗證碼依然可以達到二次驗證的效果。

我沒有接觸過這方面的知識,想了解一下,望大神們可以提供一些思路。

圖片描述

回答
編輯回答
愿如初

應該是根據(jù)時間計算的一個序列
令牌的使用大概需要和服務器時間相差不要太多才可以,Q Q 安全手機令牌是這樣的。。

2018年1月2日 12:55
編輯回答
陪她鬧

這種令牌通常是基于TOTP實現(xiàn)的, 大概是這樣:截斷HMAC(密鑰, (當前時間戳 - 初始時間戳) / 時間步))

只有在建令牌的時候,服務器和客戶端協(xié)商好密鑰、初始時間戳就可以了,后續(xù)客戶端只需改變當前時間戳就能根據(jù)時間生成令牌。時間步設成60秒,就可以每60秒生成一個令牌。

當然,Steam的令牌還有英文字母,所以肯定不是標準的TOTP實現(xiàn),原理應該差不多。

2018年5月2日 13:32