Authentication

公共網路中的休眠代理能否找到彼此並避免滲透?

  • November 23, 2020

假設一堆軟體實體正在參與廣域廣播網路(網路承載大量流量,軟體實體也參與這些對話,因此他們的傳輸很可能被朋友和敵人看到)。他們如何才能有效地找到彼此並建立通信,而不會被(我們假設)可以擷取和檢查任何特定實體的敵方特工滲透?

例如,一個實體可以通過注意到特定類型的消息錯誤或校驗和來找到另一個候選實體,並且可以發送包含類似類型錯誤的誘餌消息。但是敵方特工可以做同樣的事情,或者敵方監視器可以監視參與此協議的實體。

學習在該領域有用的協議的搜尋關鍵字是什麼?

編輯添加:

我的具體案例是在 BitTorrent 網路/生態系統中。BT 的主要功能是在感興趣的參與者之間分發數據文件。數據文件由 160 字節的散列(infohash)標識。一個輔助網路,分佈式雜湊表 (DHT),幫助客戶端找到一個節點,該節點正在分發具有特定資訊雜湊的數據文件。

DHT 節點由一個隨機的 160 字節數字標識,它們的基本操作是詢問其他節點是否知道某個 BT 節點正在分發特定的 infohash。DHT 節點通過其 ID 號自組織,通過匹配從 MSB 到 LSB 的雜湊來完成搜尋。

如果一個 DHT 節點被要求查找 infohash abcdefghijklmnopqrs,那麼它將詢問它已經遇到的節點,其 ID 號以 開頭abcd...。(匹配前綴越長,該節點就越有可能知道我們正在尋找的答案。)如果這些節點不知道,它們會遞歸地用更長的匹配前綴詢問他們知道的節點。最終,一個節點知道確切的答案,或者不知道任何其他更接近確切答案的節點,並且該節點的地址返回給原始查詢器。

因此,DHT 節點不斷地互相詢問在哪裡可以找到一件事或另一件事的 160 位散列。

我希望我的DHT 節點能夠通過要求特別格式化的資訊散列來辨識彼此。例如,每個素數位為 0 的資訊散列。(我知道一些普通查詢也可能與此模式匹配,但這沒關係——我的一個節點可能會響應,但普通查詢器不會繼續使用協議,所以我的節點會知道它不是我的特殊節點之一。)

問題是,對手可以對我的程式碼進行逆向工程並確定我的特殊資訊散列是什麼,並且可以實現一個假裝是我的特殊節點之一的節點,但它不能很好地發揮作用——它可能會給我提供虛假數據,而不是我的節點實際上試圖收集的數據。

因此,我想設計一種方法,使我的節點可以相互辨識,並且可以檢測和排除假裝“在我的團隊中”但實際上是敵方節點的節點。顯然,我可以硬編碼我的節點的 IP 地址(或類似的東西),但我希望能夠在 Internet 上的任意位置啟動任意數量的節點,並讓它們找到彼此並開始合作.

我正在尋找一種方法讓一個消息接收者將來自朋友客戶端的隱寫(或其他)消息與來自敵人客戶端的類似消息區分開來。

只有當朋友知道敵人不知道的事情時,這才有可能。如果我們談論由本地執行的軟體實現的加密,那肯定是一把鑰匙。如果該密鑰不在軟體本身中,並且該軟體是公共的,那麼它必須是有選擇地可供“朋友”實例使用的軟體的輸入。這似乎不是這裡的情況。

如果我們仍然假設這樣一個密鑰,我們可以考慮使用經過身份驗證的加密,對於沒有密鑰的加密,密碼與隨機無法區分,這提供了一種在有正當理由發送任意外觀數據的情況下隱藏流量的方法像雜湊一樣的斑點。然而:

  • 如果該軟體是公開的,則不能隱藏它具有允許這樣做的規定的事實。只有該條款的使用可能會被隱藏。
  • 該方法排除了沒有密鑰的人可以對數據包的內容進行靜態分析,以判斷它是否包含隱藏的有效負載(或哪些)。但不能排除這種隱藏的有效載荷會被其他方式間接檢測到(比如分析節點是否有任何其他原因可以在當時發送這樣的數據包;或者該數據包對朋友客戶端軟體接收的影響它)。

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