Hash

Tor的完整性驗證系統?

  • June 30, 2013

我正在嘗試了解 Tor(洋蔥路由器)的設計。我正在閱讀關於第二代洋蔥路由系統的原始論文。在對流進行完整性檢查的情況下,他們說:“當 Alice 用新的躍點協商一個密鑰時,​​他們每個人都用該密鑰的派生值初始化一個 SHA-1 摘要。然後他們每個人都增量地將內容添加到 SHA-1 摘要中“

這是如何運作的?

我認為正在發生的事情:我相信,在初始化一個新的 SHA-1 摘要後,新中繼單元的所有內容都與摘要進行異或以產生新的“摘要”。並將該摘要的前 4 個字節放入中繼信元的摘要欄位並發送。回到 Bob(OR),重複類似的過程,並將最近計算的“摘要”的前 4 個字節與接收到的字節進行比較。

我知道這有助於防止內部人攻擊修改單元格內容,因為攻擊者必須能夠推斷出目前的摘要狀態。但是,我不明白在 Bob 端計算單元格內容的 SHA-1 的用途,以及它如何幫助驗證接收到的雜湊值是否正確。

不,這意味著它們連接所有這些數據,然後對連接進行 SHA1 雜湊處理。沒有摘要或類似的東西。

以這種方式描述的原因是因為許多散列 API 允許您以流方式指定數據:您可以指定要散列的消息的前幾個字節,然後可以指定更多字節(這將有效地附加到前面的部分),然後是更多,依此類推;最終你告訴 API 你已經完成並請返回雜湊值。您可以將 API 視為儲存您傳遞給它的所有數據,將其連接起來,並在最後對其進行雜湊處理。然而,為了獲得更好的性能,API 實際上並不需要儲存所有這些數據:由於 SHA1 在內部工作的方式,它可以動態地對數據進行雜湊處理,從而避免了儲存大量數據的需要。反正,

這有助於防禦中間人攻擊。如果兩個端點具有相同的 SHA1 雜湊,那麼它們必須使用完全相同的數據。如果中間人試圖在傳輸過程中修改任何這些數據,那麼這兩個端點將有不同的 SHA1 輸入,因此它們最終會得到不同的 SHA1 摘要。根據協議其餘部分的建構方式,這可能會提供檢測中間人的機會。

引用自:https://crypto.stackexchange.com/questions/8937