跳至主要內容
進階

Tor Integration

深入了解 Bitcoin Core 的 Tor 網路整合,如何透過洋蔥路由增強比特幣節點的隱私和匿名性。

12 分鐘

為什麼使用 Tor?

Tor(The Onion Router)是一個匿名通訊網路,透過多層加密和隨機路由隱藏用戶的 IP 地址。 Bitcoin Core 內建 Tor 支援,讓節點運營者可以隱藏其真實網路身份,增強隱私和抗審查能力。

Tor 的優勢

隱私保護

  • • 隱藏節點的真實 IP 地址
  • • 防止交易與 IP 關聯
  • • 保護節點運營者身份

抗審查能力

  • • 繞過地理限制
  • • 防止 ISP 封鎖
  • • 提高網路韌性

Tor 運作原理

洋蔥路由

你的節點                                        目標節點
    ↓                                              ↑
 [加密層3]                                    [解密層3]
    ↓                                              ↑
  Guard → [加密層2] → Middle → [加密層1] → Exit →
  Node      ↓         Relay       ↓        Node
         知道你是誰   只知道前後節點   知道目標

每一層加密就像洋蔥的一層
只有到達對應節點時才能解開該層

Onion Services(v3)

Bitcoin Core 支援 Tor v3 onion services,提供端對端加密的匿名連接:

Onion v3 地址格式(56 字元):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion

例如:
5g73biadjjswokqe3rqjpkqq...dqblvz25v53p5xbiad.onion

特點:
- 使用 ed25519 公鑰
- 256 位安全性
- 無需出口節點
- 端對端加密

配置方式

基本設定

1. 安裝並啟動 Tor:

# Ubuntu/Debian
sudo apt install tor

# macOS
brew install tor

# 啟動 Tor 服務
sudo systemctl start tor
# 或
tor &

2. 配置 Bitcoin Core:

# ~/.bitcoin/bitcoin.conf

# 透過 Tor SOCKS5 代理連接
proxy=127.0.0.1:9050

# 只使用 Tor(不連接明網)
onlynet=onion

# 允許節點被其他 Tor 節點連接
listen=1

# 自動創建 onion service
listenonion=1

連接模式

模式 配置 說明
僅 Tor onlynet=onion 最高隱私,只連接 onion 節點
混合模式 proxy=127.0.0.1:9050 透過 Tor 連接明網和 onion 節點
雙棧 見下方配置 同時使用 Tor 和直連

雙棧配置

# 同時使用 IPv4、IPv6 和 Tor
# 適合想要更多連接但仍需 Tor 隱私的用戶

# Tor 代理設定
proxy=127.0.0.1:9050

# 允許的網路類型
onlynet=ipv4
onlynet=ipv6
onlynet=onion

# 監聽設定
listen=1
listenonion=1
bind=0.0.0.0:8333
bind=[::]:8333

# 對外連接時使用 Tor
# 但接受來自任何網路的連接

Onion Service 設定

自動設定

Bitcoin Core 可以自動透過 Tor 控制埠創建 onion service:

1. 配置 Tor 控制埠(/etc/tor/torrc):

ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1

2. Bitcoin Core 配置:

# 自動創建 onion service
listenonion=1

# Tor 控制埠
torcontrol=127.0.0.1:9051

# 使用 cookie 認證(預設)
# 或使用密碼認證
# torpassword=your_hashed_password

手動設定

在 /etc/tor/torrc 中手動配置:

# Bitcoin Core onion service
HiddenServiceDir /var/lib/tor/bitcoin-service/
HiddenServicePort 8333 127.0.0.1:8333

# 可選:RPC onion service(謹慎使用)
# HiddenServiceDir /var/lib/tor/bitcoin-rpc/
# HiddenServicePort 8332 127.0.0.1:8332

查看生成的 onion 地址:

sudo cat /var/lib/tor/bitcoin-service/hostname
# 輸出類似:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdefgh.onion

驗證設定

# 查看網路資訊
bitcoin-cli getnetworkinfo

# 輸出範例:
# {
#   "networks": [
#     {
#       "name": "onion",
#       "limited": false,
#       "reachable": true,
#       "proxy": "127.0.0.1:9050"
#     }
#   ],
#   "localaddresses": [
#     {
#       "address": "abcdef...gh.onion",
#       "port": 8333,
#       "score": 4
#     }
#   ]
# }

# 查看對等節點
bitcoin-cli getpeerinfo | jq '.[] | {addr, network}'
# 應該看到 "network": "onion" 的連接

隱私注意事項

交易隱私

重要提醒

  • Tor 只保護網路層: 隱藏你的 IP,但鏈上分析仍可追蹤交易。
  • 時序分析: 交易時間可能洩露資訊,考慮使用延遲廣播。
  • 節點指紋: 獨特的節點行為可能被用於識別。

完整隱私配置

# 最大隱私配置

# 只使用 Tor
onlynet=onion
proxy=127.0.0.1:9050
listenonion=1

# 禁用 DNS 查詢洩露
dnsseed=0
dns=0

# 添加已知的 onion 種子節點
addnode=5g73biadjj...onion:8333
addnode=cssusbltcm...onion:8333

# 禁用 UPnP(可能洩露本地 IP)
upnp=0
natpmp=0

# 禁用區塊過濾器(可能洩露感興趣的地址)
peerblockfilters=0
blockfilterindex=0

# 減少時序攻擊
# 使用私有 mempool 接受策略
mempoolreplacement=fee,optin

效能影響

Tor vs 直連比較

指標 直連 Tor
延遲 ~50-200 ms ~200-1000 ms
吞吐量 不受限 1-5 MB/s
IBD 時間 ~6-24 小時 ~24-72 小時
連接穩定性

效能優化

# 增加連接數以彌補 Tor 的不穩定性
maxconnections=125

# 增加對外連接
maxoutboundconnections=12

# 為 IBD 使用混合模式(同步後再切換到僅 Tor)
# 同步期間:
# onlynet=ipv4
# onlynet=onion

# 同步後:
# onlynet=onion

# 啟用 Compact Blocks 減少數據傳輸
blocksonly=0
# 對於頻寬受限的 Tor 連接,考慮:
# blocksonly=1

I2P 替代方案

Bitcoin Core 27.0+ 也支援 I2P(Invisible Internet Project)作為另一個匿名網路選項:

# I2P 配置
i2psam=127.0.0.1:7656

# 可以同時使用 Tor 和 I2P
onlynet=onion
onlynet=i2p

proxy=127.0.0.1:9050

Tor 優點

  • • 更成熟穩定
  • • 更多節點
  • • 更廣泛支援
  • • 可存取明網

I2P 優點

  • • 分散式設計
  • • 抗出口節點攻擊
  • • 更好的端對端加密
  • • 較少的中心化風險

安全風險

潛在風險

  • 1.
    Eclipse 攻擊: 如果所有對等節點都是惡意的 Tor 節點,可能被隔離在假鏈上。 緩解:連接到已知可信的節點,使用混合網路模式。
  • 2.
    Sybil 攻擊: 攻擊者創建大量 Tor 節點佔據網路。 緩解:限制來自相似地址的連接。
  • 3.
    DoS 放大: Tor 連接可能被用於 DoS 攻擊。 緩解:啟用連接限制和速率限制。

緩解措施

# 添加可信的明網節點作為錨點
addnode=seed.bitcoin.sipa.be:8333
connect=your-trusted-node.com:8333

# 限制入站連接
maxconnections=50

# 不完全依賴 Tor DNS seeds
dnsseed=1

# 定期驗證與多個來源的鏈一致性
# (手動檢查區塊雜湊)

常見問題

無法連接到 Tor

# 檢查 Tor 是否運行
systemctl status tor

# 檢查 SOCKS 埠是否監聽
ss -tlnp | grep 9050

# 測試 Tor 連接
curl --socks5 127.0.0.1:9050 https://check.torproject.org/

Onion service 無法建立

# 檢查控制埠權限
ls -la /run/tor/control.authcookie

# 將 bitcoin 用戶加入 tor 群組
sudo usermod -a -G debian-tor bitcoin

# 檢查 Bitcoin Core 日誌
tail -f ~/.bitcoin/debug.log | grep -i tor

連接不穩定

# 增加連接數
bitcoin-cli addnode "knownnode.onion:8333" "add"

# 檢查對等節點狀態
bitcoin-cli getpeerinfo | jq '.[].subver'

# 考慮使用混合模式提高穩定性

最佳實踐

✓ 推薦做法

  • • 保持 Tor 軟體更新
  • • 使用 onion v3 地址
  • • 添加可信的種子節點
  • • 監控連接品質
  • • 定期驗證鏈狀態

⚠ 注意事項

  • • 不要暴露 RPC 到 Tor
  • • 注意 DNS 洩露
  • • 考慮時序攻擊
  • • 不要僅依賴 Tor 隱私
  • • IBD 時考慮混合模式

總結

  • IP 隱私:Tor 隱藏節點的真實 IP 地址,保護運營者身份
  • 抗審查:繞過地理封鎖和 ISP 限制
  • 易於設定:Bitcoin Core 內建支援,配置簡單
  • 效能代價:較高延遲和較低吞吐量,IBD 時間增加
  • 僅網路層隱私:不解決鏈上分析問題
已複製連結
已複製到剪貼簿