Die Client-Autorisierung ist eine Methode, um einen Onion-Dienst privat und authentifiziert zu machen. Es verlangt von den Tor-Clients einen Authentifizierungsnachweis, um sich mit dem Onion-Dienst zu verbinden. Bei v3-Onion-Diensten arbeitet diese Methode mit einem Schlüsselpaar (einem öffentlichen und einem privaten). Die Dienstseite wird mit einem öffentlichen Schlüssel konfiguriert und der Client kann nur mit einem privaten Schlüssel darauf zugreifen.

Hinweis: Sobald du die Client-Autorisierung konfiguriert hast, kann ab diesem Zeitpunkt niemand mehr mit dieser Adresse darauf zugreifen. Wenn keine Autorisierung konfiguriert ist, ist der Dienst für jeden mit der Onion-Adresse zugänglich.

Konfigurieren der v3-Onion-Dienste

Dienstseite

Um die Client-Autorisierung auf der Dienstseite zu konfigurieren, muss das <HiddenServiceDir>/authorized_clients/-Verzeichnis vorhanden sein. Wenn du die im Abschnitt Setup beschriebenen Anweisungen befolgst, wird dieses Verzeichnis automatisch erstellt. Die Client-Autorisierung wird nur dann für den Dienst aktiviert, wenn Tor mindestens eine Autorisierungsdatei erfolgreich lädt.

Im Moment musst du die Schlüssel selbst mit einem Skript (wie diese, die in Bash, Rust oder Python geschrieben sind) oder manuell erstellen.

Um die Schlüssel manuell zu erzeugen, musst du openssl Version 1.1+ und basez installieren.

Schritt 1. Erzeuge einen Schlüssel mit dem Algorithmus x25519:

 $ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem

Wenn du eine Fehlermeldung erhältst, ist etwas schief gelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.

Schritt 2. Formatiere die Schlüssel in base32:

Privater Schlüssel

$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key

Öffentlicher Schlüssel

$ 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

Schritt 3. Kopiere den öffentlichen Schlüssel:

 $ cat /tmp/k1.pub.key

Schritt 4. Erzeuge eine autorisierte Client-Datei:

Formatiere die Client-Authentifizierung und erstelle eine neue Datei im <HiddenServiceDir>/authorized_clients/-Verzeichnis. Jede Datei in diesem Verzeichnis sollte mit dem Suffix ".auth" versehen sein (z. B. "alice.auth"; der Dateiname ist irrelevant) und ihr Inhaltsformat muss sein:

 <auth-type>:<key-type>:<base32-encoded-public-key>

Die unterstützten Werte für <auth-type> sind "descriptor".

Die unterstützten Werte für <key-type> sind: "x25519".

Die <base32-encoded-public-key> ist nur die base32-Darstellung der rohen Schlüsselbytes (32 Bytes für x25519).

Zum Beispiel sollte die Datei /var/lib/tor/hidden_service/authorized_clients/alice.auth wie folgt aussehen:

 descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ

Wenn du planst, mehrere authentifizierte Clients zu haben, darf jede Datei nur eine Zeile enthalten. Jede fehlerhafte Datei wird ignoriert.

Schritt 5. Neustart des Tor-Dienstes:

 $ sudo systemctl reload tor

Wenn du eine Fehlermeldung erhältst, ist etwas schief gelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.

Wichtig: Der Widerruf eines Clients kann durch das Entfernen seiner ".auth"-Datei erfolgen, allerdings wird der Widerruf erst nach einem Neustart des Tor-Prozesses wirksam.

Client-Seite

Um als Client auf einen Onion-Dienst der Version 3 mit Client-Autorisierung zuzugreifen, stelle sicher, dass du ClientOnionAuthDir in deiner torrc gesetzt hast. Füge zum Beispiel diese Zeile zu /etc/tor/torrc hinzu:

 ClientOnionAuthDir /var/lib/tor/onion_auth

Erstelle dann im <ClientOnionAuthDir>-Verzeichnis eine Datei .auth_private für den Onion-Dienst, die diesem Schlüssel entspricht (z. B. 'bob_onion.auth_private'). Der Inhalt der <ClientOnionAuthDir>/<user>.auth_private-Datei sollte so aussehen wie:

 <56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>

Zum Beispiel:

 rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ

Wenn du das Schlüsselpaar manuell gemäß den Anweisungen auf dieser Seite erzeugt hast, kannst du den in Schritt 2 erzeugten privaten Schlüssel kopieren und verwenden. Starte dann tor neu und du solltest in der Lage sein, dich mit der Adresse des Onion-Dienstes zu verbinden.

Wenn du einen privaten Schlüssel für eine Onion-Seite erzeugst, muss der Benutzer nicht unbedingt die torrc des Tor Browser bearbeiten. Es ist möglich, den privaten Schlüssel direkt in der Oberfläche des Tor Browser einzugeben.

Für weitere Informationen zur Client-Authentifizierung lies bitte das Tor Handbuch.