詳解匿名網路協議-I2P

買賣虛擬貨幣
簡  介I2P,Tor和虛擬專用網(VPN)是眾所周知的匿名網路。它們都是以不同的方式和特定的用途設計的,儘管大多數人使用它們是為了私下瀏覽網際網路。這些網路功能具有非常相似的特性,但在如何匿名化和保護使用者的網際網路流量方面也有重要的區別。在本文中,我們將研究Tor和I2P網路是什麼,它們如何工作,安全基礎架構以及在區塊鏈領域的潛在或已知用例的正規化。I2P網路什麼是I2P?I2P(稱為Invisible Internet Project成立於2003年)是一種低延遲網路層,在全球的分散式計算機網路上執行。它主要內建於應用程式中,例如電子郵件,Internet中繼聊天(IRC)和檔案共享。I2P的工作原理是自動將網路中的每個客戶機都設為一個節點,透過該節點路由資料和流量。這些節點負責提供與網路中其他計算機之間的加密單向連線。
I2P是如何工作的?I2P是一個封閉的網路,執行在網際網路基礎設施中(在這個範例中稱為clearnet)。與vpn和Tor不同,它們本質上是“outproxy”網路,設計用於與Internet進行匿名和私有通訊,I2P被設計為對等網路。這意味著它與網際網路幾乎沒有通訊。它還意味著I2P中的每個節點都沒有用Internet協議(IP)地址標識,而是用加密識別符號標識。I2P網路中的節點可以是託管暗網服務的伺服器(類似於Internet上的網站),也可以是訪問由其他節點託管的伺服器和服務的客戶端。另一方面,Tor透過使用一組志願者操作的中繼伺服器/節點來工作,這些伺服器/節點允許人們私密安全地訪問Internet。這意味著人們可以選擇自願作為網路中的中繼節點,從而捐贈頻寬。與Tor相比,I2P中的每個客戶端/伺服器自動成為一箇中繼節點。是否透過特定節點路由資料通常取決於頻寬。由於I2P中沒有Internet,因此網路由其自己的匿名站點和隱藏站點(稱為eepsites)組成。這些僅存在於網路中,並且只有使用I2P的人員才能訪問。使用標準Web伺服器的服務(例如I2PTunnel)可用於建立此類網站。I2P基礎架構路由基礎結構和匿名性I2P透過在客戶端裝置中安裝I2P路由服務來工作。此路由器與其他裝置上的I2P路由器建立臨時、加密的單向連線。連線被稱為單向連線,因為它們由出站隧道和入站隧道組成。在任何通訊過程中,資料透過出站隧道離開客戶端裝置,並透過其入站隧道在其他裝置上接收。這個資料庫由一個自定義的Kademlia風格的分散式雜湊表(DHT)組成,其中包含路由器資訊和目標資訊。對於每個應用程式或客戶機,I2P路由器都保留一個隧道對池。與網路資料庫進行互動的探索性隧道在路由器的所有使用者之間共享。如果池中的隧道即將到期或該隧道不再可用,則路由器會建立一個新隧道並將其新增到池中。重要的是要記住,隧道每隔10分鐘定期到期,因此需要經常重新整理。這是I2P的安全措施之一,旨在防止長期存在的隧道成為匿名威脅。

分散式網路資料庫

網路資料庫(NetDB)被實現為DHT,並使用Kademlia協議透過稱為泛洪路由器的節點傳播。NetDB是使I2P分散化的特徵之一。要開始參與網路,路由器將安裝NetDB的一部分。獲得部分NetDB稱為引導,是透過“重新播種”路由器進行的。預設情況下,路由器將透過查詢一些自舉域名來重新設定種子。當路由器成功建立與這些域之一的連線時,將建立傳輸層安全性(TLS)連線,路由器透過該連線下載NetDB的已簽名部分副本。一旦路由器可以到達網路中的至少一個其他參與者,則路由器將查詢自己沒有的NetDB的其他部分。

NetDB儲存兩種型別的資料:

1. RouterInfo。當訊息離開一個路由器時,它需要知道有關另一路由器的一些關鍵資料(稱為RouterInfo)。目標RouterInfo以路由器的身份作為金鑰儲存在NetDB中。為了請求資源(或RouterInfo),客戶端從被認為最接近金鑰的節點請求所需的金鑰。如果資料位於節點上,則將其返回給客戶端。否則,該節點將使用其對參與節點的本地知識,並返回其認為最接近鍵的節點。NetDB中的RouterInfo由組成:

· 路由器的標識-加密金鑰、簽名金鑰和證書。
· 可以到達的聯絡人地址-協議、IP和埠。
· 建立或釋出時。
· 選項-一組任意文字選項,例如路由器的頻寬。
· 上面的簽名,由身份的簽名金鑰生成。

2. LeaseSet指定要到達端點的隧道入口點。它指定可以直接聯絡所需目的地的路由器。它包含以下資料:

· 隧道閘道器路由器-透過指定其身份給定。
· 隧道ID-用於傳送訊息的隧道。
· 隧道到期-隧道到期的時間。
· 目標本身-與路由器身份類似。
· 簽名-用於驗證LeaseSet。

Floodfill Routers(稱為泛洪路由器)

專用路由器(稱為泛洪路由器)負責儲存NetDB。可自動或手動參與溢流池。當泛洪路由器的數量下降到某個閾值以下時,即當前網路中所有節點的6%,就會發生自動參與。發生這種情況時,將根據正常執行時間和頻寬等條件選擇一個節點作為泛洪路由器。應該注意的是,大約95%的泛洪路由器是自動的。NetDB以DHT格式儲存在泛洪路由器中。向泛洪路由器請求一個資源,該資源被認為與該金鑰最接近。為了獲得更高的查詢成功率,客戶端可以迭代查詢金鑰。這意味著,如果初始查詢請求失敗,則從下一個最近的對等方繼續查詢。

Garlic Routing(大蒜路由器)

大蒜路由是一種構建路徑或隧道的方式,I2P網路中的訊息將透過該路徑或隧道傳播。當訊息離開應用程式或客戶端時,它將被加密為收件人的公共金鑰。然後使用指定下一跳的指令對加密的訊息進行加密。郵件以這種方式遍歷每一跳,直到到達收件人為止。在郵件傳輸過程中,它與其他郵件捆綁在一起。這意味著在網路中傳播的任何訊息都可能包含許多捆綁在一起的其他訊息。本質上,蒜頭路由有兩件事:

· 提供分層加密。
· 將多條訊息捆綁在一起。

圖2展示了端到端訊息捆綁:

2P威脅、安全和脆弱性

I2P專案沒有特定的威脅模型,而是談論常見的攻擊和現有防禦。總體而言,I2P的設計是由類似於Tor處理的威脅所致:攻擊者可以在本地觀察流量,但不能觀察到透過網路的所有流量。並且假定所有密碼原語的完整性。此外,僅允許攻擊者控制網路中有限數量的對等方(該網站談論參與NetDB的節點不超過20%,受惡意實體控制的節點總數不超過該百分比)。在本節中,我們將研究影響網路的不同威脅模型。

女巫攻擊

如圖3所示,Sybil攻擊是一種眾所周知的匿名系統攻擊,其中,惡意使用者建立了多個身份,以增強對網路的控制。透過I2P網路進行這種攻擊非常困難。這是因為網路中的參與者/客戶在選擇要與之互動的對等方時會評估對等方的效能,而不是使用隨機樣本。由於在同一主機上執行多個身份會影響這些例項中每個例項的效能,因此並行執行的其他身份的數量受到有效的限制,因為它們需要為每個例項提供足夠的資源以被視為對等實體。這意味著惡意使用者將需要大量資源來建立多個身份。

Eclipse Attacks(日蝕攻擊)

在eclipse攻擊中,一組惡意節點和合謀節點安排一個好的節點只能與惡意節點通訊。因此,惡意節點的聯合欺騙好節點將其地址寫入相鄰的好節點列表。在Sybil攻擊中,單個惡意節點在網路中擁有大量的身份資訊,以控制網路的某些部分。如果攻擊者想將Sybil攻擊繼續升級為eclipse攻擊,則攻擊者將嘗試將惡意節點放置在戰略路由路徑中,以便所有流量都透過攻擊者的節點。

暴力攻擊

透過主動觀察網路在所有節點之間傳遞的訊息並嘗試關聯訊息及其路由,可以對I2P網路進行蠻力攻擊。由於網路中的所有對等節點都經常傳送訊息,因此這種攻擊是微不足道的。攻擊者可以發出大量資料(超過2GB),觀察所有節點並縮小路由訊息的節點的範圍。因為路由器間的通訊是經過加密和流式傳輸的,所以必須傳輸大量資料,即1,024位元組資料與2,048位元組資料是無法區分的。但是發動這種攻擊非常困難,為了觀察大量網路,必須是Internet服務提供商(ISP)或政府實體。

Intersection Attacks(交叉攻擊)

交叉攻擊涉及隨時間觀察網路和節點流失。為了縮小特定目標的範圍,當透過網路傳輸訊息時,將聯機的對等點相交。從理論上講,如果網路較小,則發動這種攻擊是可能的,但對於較大的網路則不可行。

拒絕服務攻擊

拒絕服務攻擊包括以下內容:

1. 貪婪使用者攻擊:當使用者消耗的資源遠遠超過他們願意貢獻的資源時,就會發生貪婪的使用者攻擊。I2P對這些攻擊有很強的防禦能力,因為預設情況下,網路中的使用者是路由器,因此透過設計為網路做出貢獻。

2. 飢餓攻擊:使用者/節點可能會試圖透過建立大量不向網路提供任何資源或服務的壞節點來發起飢餓攻擊,從而導致現有對等點透過更大的網路資料庫進行搜尋,或請求超出所需數量的隧道。試圖找到有用的節點可能很困難,因為它們與失敗或載入的節點沒有區別。然而I2P在設計上維護了所有對等點的配置檔案,並試圖識別和忽略效能不佳的節點,這使得這種攻擊變得困難。

泛洪攻擊

在泛洪攻擊中,惡意使用者將大量訊息傳送到目標的入站隧道或整個網路。

但是目標使用者可以:

· 透過訊息的內容檢測到這一點,並且因為隧道的測試失敗。
· 識別無響應的隧道,忽略它們並建立新的隧道。
· 選擇限制通道可以接收的訊息數量。
· 儘管I2P沒有針對網路泛洪攻擊的防禦措施,但泛洪網路卻異常困難。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;