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.