クライアント認証は、Onion Service をプライベートにし、認証する方法です。
Onion Service に接続するには、Tor クライアントが認証資格情報を提供する必要があります。
v3 Onion Service の場合、この方法は鍵のペア (公開鍵と秘密鍵) で動作します。
サービス側は公開鍵で構成され、クライアントは秘密鍵でのみアクセスできます。
注意:一度クライアント認証を設定すると、この時点から、そのアドレスを持つ誰もがアクセスできなくなります。
認証が設定されていない場合、Onion アドレスを知っているすべてのユーザーがサービスにアクセスできます。
v3 Onion Service の設定
サービス側
サービス側でクライアント認証を設定するには、<HiddenServiceDir>/authorized_clients/ ディレクトリーが存在する必要があります。セットアップセクションで説明されている手順を実行すると、このディレクトリーが自動的に作成されます。
クライアント認証は、tor が少なくとも1つの認証ファイルを正常に読み込んだ場合にのみ、サービスに対して有効になります。
現時点では、スクリプト (Bash、Rust、Python で記述されている) か手作業で鍵を作成する必要があります。
鍵を手動で生成するには、openssl バージョン1.1以降と basez をインストールする必要があります。
ステップ 1アルゴリズム x25519 を使用して鍵を生成します。
$ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem
エラーメッセージが表示された場合、何か問題が発生したため、これが機能しなかった原因が分かるまで続行できません。
ステップ 2鍵を base32 にフォーマットします。
秘密鍵
$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key
公開鍵
$ openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key
ステップ 3公開鍵をコピーします。
$ cat /tmp/k1.pub.key
ステップ 4 認証されたクライアントファイルを作成します。
クライアント認証をフォーマットし、<HiddenServiceDir>/authorized_clients/ ディレクトリーに新しいファイルを作成します。
このディレクトリー内の各ファイルの拡張子は「.auth」(例: "alice.auth"、ファイル名は関係ありません) で、内容のフォーマットは次のようにする必要があります。
<auth-type>:<key-type>:<base32-encoded-public-key>
<auth-type>でサポートされている値は、"descriptor"です。
<key-type>でサポートされている値は、"x25519"です。
<base32-encoded-public-key> は、生の鍵バイトのみをbase32で表現したものです (x25519 の場合は32バイト) 。
例えば、ファイル /var/lib/tor/hidden_service/authorized_clients/alice.auth は以下のようになります。
descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ
認証済みクライアントを増やす場合、各ファイルは1行のみである必要があります。間違った形式のファイルは無視されます。
ステップ 5 tor サービスを再起動します。
$ sudo systemctl reload tor
エラーメッセージが表示された場合、何か問題が発生したため、これが機能しなかった原因が分かるまで続行できません。
重要: クライアントの失効は 「.auth」 ファイルを削除することで行えますが、失効が有効になるのは tor プロセスが再起動された後です。
クライアント側
クライアントとして v3 Onion Service にクライアント認証でアクセスするには、torrcに ClientOnionAuthDir が設定されていることをご確認ください。
例えば、以下の行を /etc/tor/torrc に追加します。
ClientOnionAuthDir /var/lib/tor/onion_auth
次に <ClientOnionAuthDir> ディレクトリーに、この鍵に対応する Onion Service 用の .auth_private ファイルを作成します (つまり「bob_onion.auth_private」です) 。
<ClientOnionAuthDir>/<user>.auth_private ファイルの内容は以下のようになります。
<56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>
例:
rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ
このページの手順に従って鍵ペアを手動で生成した場合は、ステップ 2 で作成した秘密鍵をコピーして使用できます。
その後 tor を再起動すると、Onion Service アドレスに接続できるようになります。
Onion Site の秘密鍵を生成する場合、ユーザーは必ずしも Tor Browser の torrc を編集する必要はありません。Tor Browser のインターフェイスに秘密鍵を直接入力することができます。
クライアント認証の詳細につきましては、Tor マニュアルをご覧ください。