2011-01-20 49 views

回答

13

時間戳和隨機數都是防止身份驗證機制中的中間人攻擊的方法。它們的工作方式略有不同,但意圖是相同的 - 提供一種加密方式構建到認證機制中的數據,這將使攻擊者難以或無法通過重播消息來攻擊系統。典型的機制是通過數字簽名進行認證。在這兩種情況下,這裏的步驟:

1 - 讓郵件,附加時間戳或隨機數以消息

2 - 哈希兩個消息和時間戳或現時

3 - 與私人加密哈希密鑰(即,簽名)

4 - 發送簽名和消息和隨機數/時間戳

(這是其中攻擊者得到的它的保持點

5 - 收件人獲取消息。

6 - 接收者檢查該簽名發送的數據相匹配(重複步驟2中,解密簽名的公共密鑰,比較散列)

7 - 接收者檢查時間戳或現時值:

一個 - 檢查時間戳 - 時間戳的值必須在當前時間的可接受範圍內。理想情況下,整個系統由時間戳服務器提供服務,該服務器嚴格定義「當前時間」是什麼。如果不是這樣,那麼當收件人錯誤地認爲郵件時間戳太舊(或尚未發生)對當前時間不匹配時,系統可能會有誤報。

b - 檢查隨機數 - 驗證收到的隨機數以前從未從此發件人收到。由於散列對於消息的內容是唯一的,因此此消息必須來自授權發件人,因爲此消息未被重播。

8 - 收件人執行任何進一步的授權和訪問控制檢查。

最重要的事情是:

  • 無論是時間戳或現時必須是簽名的一部分
  • 時間戳是,如果你擔心在給定的時間內重播好,但它需要良好的同步因爲許多消息可能會在當前的時間範圍內發送 - 例如,如果時間戳降到第二個,那麼可以在那一秒中發送多個消息(包括回放)。
  • 隨機數需要一定程度的持久性,因爲它只有在唯一性得到保證和檢查的情況下才有效。另外,如果中間的人可以打斷髮件人,得到隨機數,並讓發件人發送它,那麼中間人的攻擊仍然可以成功。