I2P

**I2P**（Invisible Internet Project 即「隱形網際網路計劃」），是一項混合授權的匿名網路專案。

I2P 網路是由 I2P 路由器以大蒜路由方式組成的覆蓋網路，建立於其上的應用程式可以安全匿名的相互通訊。它可以同時使用 UDP 及 TCP 協定，支援 UPnP 對映。其應用包括匿名上網、聊天、搭建暗網服務和檔案分享。

## 系統簡介

I2P 是可伸縮性強，具有自我組織與恢復能力的基於訊息的匿名網路。其上執行有多種不同的匿名安全程式，各程式可以自行決定匿名性、延遲、流量平衡而不用考慮混淆式路由網路的具體實現。它們的資料活動可以與現有的 I2P 使用者的匿名資料相混合。目前的用途包括全部典型的 Internet 應用 - 匿名網頁瀏覽（Outproxy），匿名網站（Eepsite），匿名部落格與內容聚合（Syndie），匿名聊天（通過 IRC、Jabber、I2P-QTMessanger），匿名檔案傳輸（I2PSnark，Robert），匿名檔案分享（I2Phex, iMule），匿名電子郵件（I2PMail+susiMail），匿名新聞群組，及其他開發中的程式。與自由網或 GNUnet 上內容釋出網路不同，**I2P** 所提供的服務具有更強的互動性 - 從常規的 Web 搜尋引擎，到論壇，部落格，資料站點再到無需安裝 Tor / 自由網即可存取其中內容的閘道器。

**I2P** 做為訊息機制為基礎的中介軟體與這些匿名性程式協同工作 - 程式要求傳送資料給某一加密標識（目標），I2P 來處理並保證資料安全匿名的到達 #目標。I2P 還帶有易用的流封裝庫，可將 I2P 匿名訊息轉換為可靠有序的資料流傳輸，提供基於 TCP 協定和 QUIC 協定（於 SSU2）的擁堵控制演算法解決網路程式的寬頻延遲問題。I2P 同時有簡易的 SOCKS 代理介面可以將現有的網路程式繫結於 **I2P** 網路中。為了方便使用，I2P 為提供了一系列 API，從而充分利用 I2P 的資源。

## I2P 應用程式

I2P 被設計為其他程式可以使用的匿名網路層。這些執行於 I2P 上的程式有的被捆綁在 I2P 的安裝套件中，有的需要自行下載。I2P 路由控制台是一個 Web 介面，可以通過瀏覽器管理 I2P 路由器的執行，類似於現在大多數家用路由器的管理方式。

### I2PTunnel

I2PTunnel 是 I2P 的內建程式，它可以通過 #隧道將遠端電腦上的埠對映為本地主機埠，從而允許任意 TCP/IP 程式通過 I2P 進行通信。

### SAMV3

SAM 協定允許任意語言編寫的程式通過 Socket 介面使用 I2P 路由器。

### BOB（已廢棄）

BOB 比 SAM 更簡單的 TCP 類型的橋協定。

### I2CP

I2P 客戶端協定 (I2CP) 使客戶端應用程式能直接控制隧道數量、跳躍長度和目的地識別碼等資訊，使程式和 I2P 路由緊密結合。目前主要用於 BiglyBT I2PHelper

### BitTorrent

I2P 網路中有多個客戶端支援 BitTorrent 功能，每種客戶端都支援 Web 介面的遠端控制。這些客戶端不允許下載含 I2P 外部 Tracker 的種子或連接 I2P 以外的使用者，也不允許 I2P 外部的使用者連接進來。由於匿名性的原因，目前 I2P 內部還沒有 Tracker 站點開放對公網 IP 的支援。

_I2PSnark_，包含於 I2P 安裝套件中，是 BitTorrent 客戶端 Snark 的移植版。

_BiglyBT_ 基於 I2CP，提供了 Tor 和 I2P 外掛程式，支援純暗網和混合下載 / 做種。

### eDonkey iMule

iMule（_隱身騾_）是全平台客戶端 aMule 的 I2P 移植版。

與 eDonkey 不同，iMule 只使用 Kademlia 連接因此沒有伺服器。iMule 自 1.2.3 版起攜帶內建的 GCJ 編譯的 I2P 路由器，但由於 I2P 的 GCJ 編譯版效率低下版本滯後，內建路由器被 I2P 開發者叫停。

### Gnutella I2Phex

I2Phex 是 Gnutella 客戶端 Phex 的 I2P 移植版。

### I2P-Messanger

通過 I2P 進行匿名通信的無伺服器即時聊天程式。

### MuWire

MuWire 是一個匿名檔案分享程式。它使用 I2P 進行所有通信，使您的 IP 位址和活動保持私密。

* **搜尋檔案**：您可以搜尋其他 MuWire 使用者共享的檔案。
* **共享檔案**：您可以與其他 MuWire 使用者共享您自己的檔案，通過多種方式：
  * 您可以將檔案釋出為 自動提要 ，例如部落格。
  * 您可以評論共享檔案。
  * 您可以為您共享的檔案頒發憑證 ，以向其他人證明您擁有該檔案。
* **訊息和聊天：**您可以其他 MuWire 使用者交流通過訊息和即時聊天。
* **信任：**您可以選擇 信任或不信任 其他 MuWire 使用者。

### Susimail

I2P 免費的假名 Email 服務，由 'Postman' 維護。郵件傳輸伺服器為 _pop.mail.i2p_（POP3）及 _smtp.mail.i2p_（SMTP）。可以通過 I2PTunnel 利用普通的 Email 客戶端存取。

_Susimail_ 被編寫來處理隱私問題，普通的 Email 客戶端可能在與 SMTP 伺服器的通信中傳送使用者的主機名。Susimail 是 Web 介面的 Email 客戶端，最初被設計來與配合 Postman 的郵件服務，設計中考慮到匿名性與安全性，是 I2P 預設安裝套件的一部分。可以通過 I2P 路由控制台存取。（注意 SusiMail 僅僅被設計來進行郵件的讀寫，郵件帳戶的管理需要存取 _www.mail.i2p_。）

### Syndie

Syndie 是 I2P 的部落格程式可以同時使用 Tor 網路，目前開發停滯仍處於 Alpa 階段。

## I2P 術語

I2P 使用者在 I2P 的網站及路由介面中會遇到如下術語：

### I2P 匿名站點

I2P 匿名站點（eepsite）是 I2P 網路內的網站。I2P 站點的名稱以_.i2p_ 結尾，例如 ugha.i2p 或 forum.i2p. I2P 代理（eepProxy）可以通過 I2P 資料夾下 hosts.txt 中的加密辨識金鑰找到這些站點。通常，必須通過 I2P 才能存取這些站點。對於使用加密賃集的 I2P 匿名網站 / 出口代理只有持有該站點金鑰的路由器才能存取。

### I2P 代理

I2P 代理（eepProxy）程式處理瀏覽器與 #I2P 匿名站點間的所有通信。它以 HTTP 代理伺服器的形式工作，適於絕大多數瀏覽器。

**.i2p** 是一個虛擬的頂級域名（eppsite），只在 I2P 表層網路內有效。.i2p 域名由瀏覽器提交給 eepProxy 進行解析，eepProxy 查詢到 I2P 使用者金鑰後處理資料的傳輸，從而使瀏覽器可以透明瀏覽 I2P 網路。

### 使用者 / 節點

使用者 / 節點（Peer），I2P 網路中的其他電腦。I2P 網路中的每台電腦都會共享頻寬對拆分後加密的封包進行路由及中轉。

### 隧道

每 10 分鐘，使用者的 I2P 路由就會與新的節點建立連接，將本機封包與其他 I2P 節點中轉的封包一併通過這些隧道中轉傳遞，令封包最終到達最終的 #目標。

### 目標

I2P 中將可到達的匿名端點（EndPoint）稱為目標（Destination）在 I2PTunnel 中體現為主機 + 埠，每個 I2P 程式都可以建立自己的目標與其他目標間進行通信。

## 對比其他的匿名網路

### Tor / 洋蔥路由

Tor 和 I2P 之間的兩個主要區別 是威脅模型和外代理設計（雖然 Tor 也支援隱藏服務）。此外，Tor 採用基於目錄的方法 - 提供一個中心化的目錄伺服器，以收集和報告統計資料，而不是 I2P 的分散式網路資料庫和對等選擇 。 Tor 確實有一些針對某些攻擊者的重大弱點 - 一旦通信離開網路，全球對手可以更輕鬆地進行流量分析。此外，出口節點可以存取明文雙向傳輸的資料，以及很容易被濫用。

然而，很多人不必擔心這些情況，因為這超出了他們的威脅模型。這也在 I2P 的（正式）功能範圍之外（你當然可以構建出口代理，但 I2P 並不為此而生）。

#### Tor 和 I2P 術語的比較

雖然 Tor 和 I2P 在很多方面都很相似，但大部分術語是不同的。

#### Tor 相對 I2P 的優勢

* 大許多的使用者群；在學術和駭客群體中得到較多關注； 基於正式研究的匿名性、抵抗性和效能優勢；有一個非匿名的，來自大學的領導者
* 解決了一些 I2P 尚未解決的規模問題（但現在 I2P 至少擁有 3 萬以上的活躍節點和一萬八千左右的公網 IP，Tor 擁有 6000 左右的中繼和 2000 左右的網橋）
* 有可觀的資金
* 有更多的開發者，其中有些是全職的
* 由於具有基於 TLS 的傳輸和網橋，對國家級封鎖有更強的抵抗
* 為出口流量設計和最佳化，有大量的出口節點
* 更好的文件，擁有正式檔案和規範， 更美觀的網頁，多許多的翻譯
* 記憶體使用更高效（試試 I2Pd？）
* Tor 客戶端節點的頻寬開銷非常低，在 Tor 中，客戶端節點不需要太多頻寬，他們沒有完全參與網路。
* 集中控制降低了每個節點的複雜性，並能有效應對 Sybil 攻擊
* 高容量節點提供更高的吞吐量和更低的延遲
* C，而不是 Java

#### I2P 相對 Tor 的優勢

* 專為隱藏服務設計和最佳化，在這方面比 Tor 快許多
* 完全分散式和自組織
* 通過不斷分析和比較效能，而不是根據目錄聲稱的頻寬來選擇節點
* 洪泛節點（「目錄伺服器」）是持續變化並且不被信任的， 而不是寫死寫入
* 足夠小以至於它還沒有被大量（或者根本沒有）封鎖或阻斷服務
* P2P 友好
* 訊息交換而不是線路交換
* 訊息的隱式透明負載平衡跨越多個對等點，而不是單一路徑
* 單向隧道而不是雙向隧道線路，使對等點必須的節點數量增加一倍以獲得相同的資訊。
* 防止檢測客戶端活動，甚至當攻擊者參與隧道時，如隧道不僅僅在終點結束訊息（例如 netDb、隧道管理、 隧道測試）
* I2P 中的隧道是短暫的，減少了攻擊者可以用來掛載的樣本，不像 Tor 中的線路，它們通常長壽。
* I2P API 專為匿名和安全性，而 SOCKS 是為功能而設計的。
* 基本上所有節點都參與為其他人的路由
* 使用 TCP 和 UDP 傳輸
* Java，而不是 C（I2Pd 使用 C++）

### 自由網 (Freenet)

Freenet 是一個完全分散式的 P2P 匿名釋出網路，提供安全的資料儲存方式，以及一些試圖解決洪泛負載的方法。雖然 Freenet 的設計目的是分散式的資料儲存，但是人們也在 Freenet 之上建立了一些應用程式，使得更通用的匿名通信成為可能，如靜態網站和留言板等。

相比於 I2P，Freenet 提供了一些實質性的好處 —— 它是一個分散式資料儲存，而 I2P 並不是，Freenet 允許使用者檢索即便內容的釋出者已經離線了的已釋出內容。此外，Freenet 應該能夠高效地分發熱門資料，I2P 本身不提供此功能。另一方面，對於那些只想通過網站、留言板、檔案分享程式等方式匿名交流的使用者來說，兩者有重疊。I2P 也進行了一些嘗試以支援分散式資料儲存（最近的是 Tahoe-LAFS 的移植) ，但還沒有準備好全面使用。

## 參考

## 參考文獻

## 參閲

## 外部連結

* I2P 官方首頁（I2P 網內官網）
* I2P 常見問題列表
* I2P 下載