One-Time-Password
指示 hotp 計數的計數器
當我看到 Thomas Pornin [來源] 對它如何工作的解釋時,我試圖弄清楚 HOTP 是如何避免結束的:
預期的場景如下:客戶端有一個手持設備,它輸出連續的密碼,每個按鈕按下一個新密碼。客戶端可以在兩次登錄嘗試之間按下按鈕幾次。伺服器“打賭”客戶端在嘗試再次登錄之前不會按下按鈕超過 100 次:所以伺服器使用 $ w \leq100 $ . 如果您讓您 3 歲的侄子玩一整個下午的 HOTP 設備,很可能它會失去太多同步,並且無法再登錄。
假設使用者不必輸入 OTP 值或計數器編號(假設它類似於 yubikey),在給出結果之前讓設備向站點提供計數器編號的缺點是什麼OTP 檢查?
如果您假設一個設備可以直接與伺服器通信,那麼如果正確實現它就沒有真正的缺點:
- 令牌表示計數器,這只是一個可預測的隨機數(無需保密)。
- 然後它根據隨機數和密鑰給出 OTP。
為了避免重放攻擊,伺服器必須檢查自上次登錄以來計數器是否增加,但應該沒問題。
但是,如果伺服器和令牌之間的這種直接通信通道不是單向的,那麼您不需要 OTP,但您可以執行標準的質詢-響應身份驗證協議。唯一改變的是伺服器選擇挑戰而不是使用計數器。
順便說一句,為了避免中間人,進行相互身份驗證很有用,而不僅僅是一種方式。