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 afin de 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). Le partie service est configurée avec une clef publique and le client peut y accéder uniquement avec la clef privée.

Note : une fois que vous avez configuré l’autorisation des clients, il ne sera plus possible pour n’importe qui d’accéder au service. Si aucune autorisation n’est configurée, le service sera accessible pour quiconque à cette adresse onion.

Configurer des services onions v3

Côté service

Pour configurer l'autorisation du client du côté du service, le répertoire <HiddenServiceDir>/authorized_clients/ doit exister. En suivant les instructions décrites dans la section Setup, ce répertoire sera automatiquement créé. L’autorisation de clients ne sera activée pour le service que si tor charge avec succès au moins un fichier d’autorisation.

Il est maintenant nécessaire de créer les clefs vous-même avec un script (comme ceux-ci écrits en Bash, Rust ou Python) ou manuellement.

Pour générer manuellement les clefs, vous devez installer openssl version 1.1+ et basez.

Etape 1. Créer une clef utilisant 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 :

Clef 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

Etape 4. Créer un fichier de clients autorisés :

Formater l’authentification client et créer un nouveau fichier dans le dossier <HiddenServiceDir>/authorized_clients/. Chaque fichier de ce répertoire doit être suffixé par ".auth" ( par exemple "alice.auth" ; dans ce cas, le nom du fichier est sans importance) et son format de contenu doit être :

 <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/hidden_service/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é.

Etape 5. Redémarrer le service tor :

 $ sudo systemctl reload 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 être fait en supprimant le fichier ".auth", cependant la révocation ne sera effective qu’une fois le process tor redémarrer.

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, ajouter 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 clef en suivant les instructions de cette page, vous pouvez copier et utiliser la clef privée créée à l’Etape 2. Puis redémarrez tor et vous devriez pouvoir vous connecter à l'adresse du Service onion.

Si vous générez la clef privée pour un site onion, l’utilisateur n’a pas besoin d’éditer le torrc de son Navigateur Tor. Il est possible de saisir la clef privée directement dans l’interface du Navigateur Tor.

Pour plus de précisions sur l’authentification client, veuillez consulter le guide de Tor.