クライアント認証は、Onion Service をプライベートにし、認証する方法です。 Onion Service に接続するには、Tor クライアントが認証資格情報を提供する必要があります。 v3 Onion Service の場合、この方法は鍵のペア (公開鍵と秘密鍵) で動作します。 サービス側は公開鍵で構成され、クライアントは秘密鍵でのみアクセスできます。

注意:一度クライアント認証を設定すると、この時点から、そのアドレスを持つ誰もがアクセスできなくなります。 認証が設定されていない場合、Onion アドレスを知っているすべてのユーザーがサービスにアクセスできます。

v3 Onion Service の設定

サービス側

サービス側でクライアント認証を設定するには、<HiddenServiceDir>/authorized_clients/ ディレクトリーが存在する必要があります。セットアップセクションで説明されている手順を実行すると、このディレクトリーが自動的に作成されます。 クライアント認証は、tor が少なくとも1つの認証ファイルを正常に読み込んだ場合にのみ、サービスに対して有効になります。

現時点では、スクリプト (BashRustPython で記述されている) か手作業で鍵を作成する必要があります。

鍵を手動で生成するには、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 マニュアルをご覧ください。