在對 Bitcoin 進行了廣泛的研究之後,諷刺的是,我的第一篇部落格文章並不是關於 Bitcoin,而是關於 Tor 網路(Tor Project)1。Tor 網路的命名非常貼切,因為它將資料封包包裹在多層加密中,就像洋蔥的層次一樣。

Tor Onion 路由如何運作

graph LR
    A[你的電腦<br/>Bitcoin 節點] --> B[Entry Guard<br/>第 3 層加密]
    B --> C[Middle Relay<br/>第 2 層加密]
    C --> D[Exit Relay<br/>第 1 層加密]
    D --> E[目的地<br/>Bitcoin 對等節點]

    style A fill:#4CAF50
    style B fill:#FF9800
    style C fill:#FF9800
    style D fill:#FF5722
    style E fill:#2196F3

關鍵隱私特性

  • Entry Guard 知道你的 IP 但不知道你的目的地
  • Middle Relay 既不知道來源也不知道目的地
  • Exit Relay 知道目的地但不知道你的原始 IP
  • 每個 relay 只解密一層並看到下一跳
Tor Project logo showing onion symbol representing layered encryption routing network

據我所知,Tor 網路在世界各地擁有眾多的 relay 站點2。這些由志願者運營的 relay 負責傳輸我們發送的資料封包。然而,在發送之前,發送者需要知道哪些 relay 是可用的。這些資訊可能儲存在伺服器上,包括每個 relay 由 RSA 生成的公鑰(在 Tor version 3 中已被認為不安全並被 ECC 取代)。私鑰自然屬於 relay 本身,用於解密資料。

Diagram showing Tor relay network with volunteer nodes transmitting encrypted data packets globally

下一步涉及從這個伺服器請求資料。假設我們請求了一百個 relay 的資訊並隨機選擇十個。然後我們使用每個選定的 relay 的公鑰,一層一層地加密我們的資料封包。一旦封包完全加密,它就會通過 Tor 網路發送。最外層的 relay 擁有相應的公鑰,接收並解密一層,揭示下一個 relay 的公鑰,依此類推,直到封包到達其出口節點。重要的是要注意,每個 relay 只知道它的前一個和後一個節點,這使得追蹤資料的完整路徑變得極其困難。

Tor onion routing diagram showing layered encryption process through entry, middle, and exit nodes

除了解釋 Tor 網路內的封包傳輸過程外,值得討論的是其漏洞,特別是在入口和出口點。對於網際網路服務提供商(ISP)來說,入口點標誌著 Tor 會話的開始。出口點可能是,例如,從 Tor 網路發往 Facebook 的封包。這類似於 Bitcoin 的洗錢過程。此外,入口點的封包通常使用 RSA 公鑰加密,而在出口點,它們大多被解密,如果初始協議是 HTTP,通常只剩下 HTTPS 加密。

訪問 Tor 網路的常用工具是 Tor Browser,它是 Firefox 和 Tor 的結合。這個瀏覽器可以解析 .onion 域名,這些不是傳統的 IP 位址,而是到達目的地的路徑。Tor Browser 可以作為獨立的 Tor 程式運行,在 127.0.0.1:9050 使用本地 SOCKS5 proxy,本質上創建了一個到 Tor 網路的本地入口點。由於傳統瀏覽器和應用程式使用標準 DNS 解析,缺乏 .onion 域名解析並不奇怪。你也可以在 Tor 網路上探索 Bitcoin 相關網站以增強隱私。

常見問題(FAQ)

問:為什麼在 Bitcoin 交易中使用 Tor?

在 Bitcoin 中使用 Tor 可以防止你的 ISP 和網路觀察者看到你正在運行 Bitcoin 節點或發起交易。如果沒有 Tor,你的真實 IP 位址對 Bitcoin 網路中的對等節點是可見的,可能會將你的身份與你的 Bitcoin 位址和交易歷史連結起來。

問:Tor 的 onion 路由如何保護 Bitcoin 隱私?

Tor 在多層中加密你的 Bitcoin 網路流量,並通過全球的志願者 relay 節點進行路由。每個 relay 只知道前一跳和下一跳,使得幾乎不可能追蹤連接回到你的原始 IP 位址,有效地匿名化你的 Bitcoin 節點活動。

問:使用 Tor 與 Bitcoin 有哪些漏洞?

主要漏洞在入口和出口節點。你的 ISP 可以檢測到你正在連接到 Tor 網路(但不知道你在做什麼),而出口節點營運者可能會看到未加密的流量。然而,Bitcoin Core 內建的 Tor 支援通過將流量保持在 Tor 網路內來緩解這些風險。

問:如何配置 Bitcoin Core 使用 Tor?

Bitcoin Core 包含原生 Tor 支援。通過在你的配置中添加 -onion 標誌或通過 GUI 設定(自版本 0.12.0 起可用)來啟用它。軟體會自動創建一個 hidden service,允許你的節點通過 .onion 位址匿名接收連接。

問:使用 Tor 會減慢 Bitcoin 同步速度嗎?

是的,Tor 路由會增加延遲,因為流量通過多個 relay 節點。初始區塊鏈同步可能需要更長時間,你可能會遇到稍微延遲的交易廣播。然而,對於優先考慮匿名性的用戶來說,隱私益處通常超過性能權衡。


結論: Tor 路由使 ISP 更難追蹤用戶,這一特性對 Bitcoin 交易有益,可以防止 ISP 或駭客看到交易的來源。雖然 Bitcoin 位址可能指示交易發起者,但 Bitcoin 資料傳輸期間缺乏加密使其容易受到篡改。然而,在 Bitcoin Improvement Proposals(BIP)3 中已經有基於 HTTPS 的區塊鏈同步機制的提案。目前的 Bitcoin Core 4 也支援 Tor 網路選項。

  • #4587 0c465f5: Allow users to set -onion via GUI (Diapolo)

參考資料