Tor Circuitの全てのRelayを調べる

概要

最近Torにハマってて、Tor: Onion Service Protocolについて読んだんですけど、本当にこんな感じのTor Circuitができているのかが気になりました。というわけでClientとHidden Service(HS)間の通信に使用されているRelayを全部確認してみました。

www.torproject.org

環境

Client側

HS側

準備

Client側

Tor Browserをインストールします。

Download Tor

HS側

まずWebサーバをインストールします。とりあえずNginxをインストールしました。

$ sudo apt install nginx


次にTorをインストールします。公式サイトのドキュメントに沿って行いましょう。

www.torproject.org


インストールが終わったら設定ファイル/etc/tor/torrcを編集して下記を追加します。

torrc
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
ControlPort 9051
CookieAuthentication 0

1行目はHSで使用するデータファイルを置くためのディレクトリの設定。2行目はTorプロキシの設定で、Nginxで使用する80番ポートを127.0.0.1:80にリダイレクトします。3行目はTor制御用のポート解放。制御用ポートにTelnetで接続しgetinfoを実行するとCircuitのデータを取得できます。4行目はTelnet接続の際のCookie認証を無効にするための設定です。デフォルトでは有効になっています。

設定が終わったらTorを再起動してください。

実験

1. Client側からTor Circuitを表示

HSのホストの/var/lib/tor/hidden_service/hostnameに書かれたアドレスにTor Browserを用いてアクセスします。うまくいけば「Welcome to nginx!」が表示されるはずです。

f:id:etogen:20180117012319p:plain

ここでClient側からTor Circuitを確認してみましょう。ブラウザ左上の玉ねぎアイコンから見ることができます。

f:id:etogen:20180117013929p:plain

ClientからHSまで6個のTor Relayを経由していることがわかります。ただ、IPアドレスが非表示になっているRelayが3つありますね。これらはHS側から確認できます。

2. Rendezvous Pointの名前確認

Rendezvous Point(RP)はClientとHSの通信の中継点になっているTor Relayです。先ほど確認したTor Circuitでは88.99.162.199がこれに当たります。また、Tor Relayには名前をつけることが可能で、Tor Network Statusで確認することが可能です。

今回のRPの名前を確認してみるとqtornadoであることがわかりました。

3. HS側からTor Circuitを表示

ここでHS側に移り、Tor Circuitを確認してみます。TelnetでTor制御ポートに接続し、getinfo circuit-statusを実行してください。

ubuntu@ubuntu-xenial:~$ telnet localhost 9051
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
authenticate
250 OK
getinfo circuit-status
250+circuit-status=
67 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$234460DD59CF46D118F0274222F79D826C02F481~bauruine52,$25990FC54D7268C914170A118EE4EE75025451DA~TotorBE1 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=GENERAL TIME_CREATED=2018-01-16T15:51:14.473613
68 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$56784608242CB15B70ED6CBB8F40EEA3B62AF69E~FishersTorRelay1,$AA0389066F4DA91D64F5D24A5C1733FBF4F322DF~cariboo BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=GENERAL TIME_CREATED=2018-01-16T16:35:23.473765
28 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$E1298E1C497AD0FC0808B78007076A9736609B1C~Unnamed,$922C780D6A32944890A9C2BDB288037EB2F06392~mediterranean83,$D86D10F1ADFCB8C58A521E165837D3A90C699418~dc6jgk10b BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=HS_SERVICE_INTRO HS_STATE=HSSI_ESTABLISHED REND_QUERY=uufpx2d5rhexwlbm TIME_CREATED=2018-01-16T14:28:58.473964
63 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$431EA69FC4089BE4304AAEC38FEAE8BC8F8711C5~yuicat1,$A69221A7EC7498D2F88A0FB795261013FA36CAAE~Truie,$767E444E1FA1DA75F3B77479DB5AE2FA3FFF75CC~qtornado BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=HS_SERVICE_REND HS_STATE=HSSR_JOINED REND_QUERY=uufpx2d5rhexwlbm TIME_CREATED=2018-01-16T15:46:56.474043
5 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$F23AC60CED6B33946B45CC22064078CB6CD980D6~servbr11,$F3DFB3D2F6E21CB5BF1CC73AA67D111BD86893BC~OmuraVPN05 BUILD_FLAGS=IS_INTERNAL,NEED_UPTIME PURPOSE=HS_SERVICE_INTRO HS_STATE=HSSI_ESTABLISHED REND_QUERY=uufpx2d5rhexwlbm TIME_CREATED=2018-01-16T14:25:14.510516
6 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$22210ABFA37B0CB526C73D42BADCE097D6B994C4~locksat,$945AA2F6C2EC644B533D048C79E035A6CF092C4F~Unnamed BUILD_FLAGS=IS_INTERNAL,NEED_UPTIME PURPOSE=HS_SERVICE_INTRO HS_STATE=HSSI_ESTABLISHED REND_QUERY=uufpx2d5rhexwlbm TIME_CREATED=2018-01-16T14:25:14.548614
69 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$B6D30CEC9F8FAB676CCD0634DC86412F1BA8F4D2~greendale,$BF29077D90DD65D8B15B2DFC876D25C76E5057FB~cel BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=GENERAL TIME_CREATED=2018-01-16T16:36:12.473676
.
250 OK

getinfo circuit-statusでTor Circuitの情報を取得することができます。ここでqtornadoを含むサーキットを見てみましょう。

63 BUILT $3CCA722A0DB4E676B96109D61C4E9DCF2F0009EB~1EpHny,$431EA69FC4089BE4304AAEC38FEAE8BC8F8711C5~yuicat1,$A69221A7EC7498D2F88A0FB795261013FA36CAAE~Truie,$767E444E1FA1DA75F3B77479DB5AE2FA3FFF75CC~qtornado BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY,NEED_UPTIME PURPOSE=HS_SERVICE_REND HS_STATE=HSSR_JOINED REND_QUERY=uufpx2d5rhexwlbm TIME_CREATED=2018-01-16T15:46:56.474043

これが今回ClientとHSの通信に使用されているTor Circuitです。Client側では確認できなかった3つのRealyを確認することができます。


Tor Circuitの6つのRelayについて以下の表にまとめました。

IPまたは名前 役割 どっち側から確認できるか
208.80.154.39 Entry Node(Client) Client
77.87.50.6 Relay Node Client
88.99.162.199, qtornado Rendezvous Point Client, HS
Truie Relay Node HS
yuicat1 Relay Node HS
1EpHny Entry Node(HS) HS

以上で終わります。