One-Time-Password
OTP 方案,只有一方可以生成 OTP,但雙方可以驗證其有效性
據我了解,OTP 通常在表面層上工作,讓雙方都知道一個密鑰,然後通過彼此共享密鑰的雜湊和某種計數器(例如 currentTime mod someNumber)來相互驗證。從理論上講,這意味著雙方可以相互驗證,因為雙方都有生成 OTP 的能力,並且都有能力驗證提供給他們的完整性 OTP。
我正在尋找雙方之間的 OTP 方案,雙方都可以驗證 OTP 的有效性,但只有一方可以生成它。據我了解,這不適用於上述邏輯。這樣的協議是否已經存在?如果不是,這樣的系統在數學上是否可以實現?
我正在尋找雙方之間的 OTP 方案,雙方都可以驗證 OTP 的有效性,但只有一方可以生成它。
顯而易見的方法是讓一方(Alice)選擇一次性密碼並將該密碼的雜湊發送給另一方(Bob)。然後,Bob 可以驗證 Alice 是否擁有正確的密碼(正如 Alice 實際發送的那樣),但 Bob 自己無法生成它。
如果 Alice 和 Bob 需要這樣做 $ n $ 次基於相同的交換密鑰,那麼愛麗絲可以做的是選擇基本密鑰,然後散列 $ n $ 次,即計算 $ H^n(\text{base key}) = \underbrace {H(H(H(…H(\text{base key})))))}_{n \text{ times}} $ ,並將其發送給 Bob。然後,為了第一次進行身份驗證,她會發送 $ H^{n-1}(\text{base key}) $ ,Bob 可以使用他的基本密鑰副本進行驗證(但無法事先計算)。為了第二次驗證,她會發送 $ H^{n-2}(\text{base key}) $ ,並繼續這樣做直到 $ n $ 次。