L’autorisation du client est une méthode permettant de rendre un service onion privé et authentifié.
Il exige des clients Tor qu’ils fournissent un justificatif d’authentification pour se connecter au service onion.
Pour les services onion v3, cette méthode fonctionne avec une paire de clés (une publique et une privée).
La partie service est configurée avec une clé publique et le client ne peut y accéder qu’avec une clé privée.
Note : une fois l’autorisation des clients configurée, toute personne disposant de l’adresse ne pourra plus y accéder à partir de ce moment.
Si aucune autorisation n’est configurée, le service sera accessible à quiconque possède l’adresse onion.
Configurer des services onion v3
Côté service
Pour configurer l’autorisation client du côté du service, le répertoire <HiddenServiceDir>/authorized_clients/ doit exister. Suivre les instructions décrites dans la section Configuration créera automatiquement ce répertoire.
L’autorisation de clients ne sera activée pour le service que si tor charge avec succès au moins un fichier d’autorisation.
Pour l’instant, vous devez créer les clés vous-même avec un script (comme ceux écrits en Bash, Rust ou Python) ou manuellement.
Pour générer manuellement les clefs, vous devez installer openssl version 1.1+ et basez.
Étape 1. Générer une clé avec l’algorithme x25519 :
$ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem
Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.
Etape 2. Formater les clefs en base32 :
Clé privée
$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key
Clef publique
$ 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
Etape 3. Copier la clef publique :
$ cat /tmp/k1.pub.key
Étape 4. Créez un fichier de clients autorisés :
Formatez l’authentification client et créez un nouveau fichier dans le dossier <HiddenServiceDir>/authorized_clients/.
Chaque fichier de ce répertoire doit porter le suffixe « .auth » (par exemple « alice.auth » ; le nom du fichier est sans importance) et son contenu doit avoir le format suivant :
<auth-type>:<key-type>:<base32-encoded-public-key>
Les valeurs prises en charge pour <auth-type> sont : « descriptor ».
Les valeurs prises en charge pour <key-type> sont : « x25519 ».
Le <base32-encoded-public-key> est la représentation en base32 des octets de clef brute seulement (32 octets pour x25519).
Par exemple, le fichier /var/lib/tor/my_website/authorized_clients/alice.auth doit ressembler à :
descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ
Si vous prévoyez d’avoir plus de clients authentifiés, chaque fichier ne doit contenir qu’une seule ligne. Chaque fichier malformé sera ignoré.
Étape 5. Redémarrez le service tor :
$ sudo systemctl restart tor
Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.
Important : Révoquer un client peut se faire en supprimant son fichier « .auth », mais la révocation ne sera effective qu’une fois le processus tor redémarré.
Côté client
Pour accéder à un service Onion version 3 avec autorisation du client en tant que client, assurez-vous que vous avez ClientOnionAuthDir défini dans votre torrc.
Par exemple, ajoutez cette ligne à /etc/tor/torrc :
ClientOnionAuthDir /var/lib/tor/onion_auth
Ensuite, dans le répertoire <ClientOnionAuthDir>, créez un fichier .auth_private pour le service onion correspondant à cette clé (c’est-à-dire « bob_onion.auth_private »).
Le contenu du fichier <ClientOnionAuthDir>/<user>.auth_private doit ressembler à :
<56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>
Par exemple :
rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ
Si vous avez généré manuellement la paire de clés en suivant les instructions de cette page, vous pouvez copier et utiliser la clé privée créée à l’Étape 2.
Puis redémarrez tor et vous devriez pouvoir vous connecter à l’adresse du service onion.
Si vous générez une clé privée pour un site onion, l’utilisateur n’a pas nécessairement besoin de modifier le torrc de son Navigateur Tor. Il est possible de saisir la clé privée directement dans l’interface du Navigateur Tor.
Pour plus de précisions sur l’authentification client, veuillez consulter le manuel de Tor.