Hash
小 n 攻擊如何工作?
我正在研究 Lamport 的 Hash 一次性密碼方案。
這是方案:
Alice 想從一個對她一無所知的工作站向 Bob 驗證自己的身份。愛麗絲只知道她的密碼。鮑勃知道
- 愛麗絲在她的工作站中輸入她的姓名和密碼
- 工作站將“Alice”發送給 Bob
- Bob 將 n 發送到工作站
- 工作站計算 x = hash^(n-1) (pwd) 並將其發送給 Bob
- Bob 對其進行一次雜湊處理並將其與數據庫進行比較。如果匹配,則 Bob 認為響應有效,將儲存的數量替換為接收的數量,並將 n 替換為 n-1。
該方案有一個安全弱點,稱為小 n 攻擊。
這是《網路安全:公共世界中的私人通信》中給出的解釋:
假設入侵者 Trudy 冒充 Bob 的網路地址並等待 Alice 嘗試登錄。當 Alice 嘗試登錄 Bob 時,Trudy 會返回一個小的 n 值,比如 50。當 Alice 用 hash^(50 ) (pwd),假設 Bob 的實際 n 大於 50,Trudy 將有足夠的資訊冒充 Alice 一段時間。
我不明白這一點。我需要一個不同的解釋。
Lamport 的方案對被動攻擊者安全的原因是,即使他們看到 $ H^{n-1}(p) $ 對於給定的 $ n $ ,伺服器將需要該雜湊的原像, $ H^{n-2}(p) $ 在下次登錄時。
相比之下,主動攻擊允許 Trudy 找到比伺服器預期更早的迭代。這允許通過迭代地對擷取的雜湊值進行雜湊計算來計算多個登錄雜湊值。甚至可以通過將他們提供的雜湊替換為伺服器期望的雜湊來對使用者透明地執行此操作。
- Alice 鍵入名稱和密碼。
- 工作站發送“愛麗絲”。
- 鮑勃發送 $ n $ . Trudy 攔截它並將其替換為例如 $ n’ = n-10 $ .
- 工作站計算 $ h = H^{n’-1}(p) = H^{n-11}(p) $ . 特魯迪攔截並替換為 $ H^{n-1}(p) = H^{10}(h) $ .
- Bob 雜湊一次,看到匹配。
現在 Trudy 可以計算 Bob 期望的接下來的十個雜湊值,比如下一個: $ H^{n-2}(p) = H^{9}(h) $ . 這允許以 Alice 的身份多次登錄。