La autorización del cliente es un método para hacer un servicio cebolla privado y con autenticación. Se requiere que los clientes de Tor proporcionen una credencial de autenticación para conectarse al Servicio Cebolla. Para los servicios cebolla v3, este método funciona con un par de claves (una pública y una privada). El lado de servicio se configura con una clave pública, y el cliente solamente puede accederlo con una clave privada.

Nota: Una vez que hayas configurado la autorización de cliente, alguien que tenga la dirección no será capaz de accederla a partir de este momento. Si no se configura la autorización, el servicio va a ser accessible para cualquiera con la dirección onion.

Configurar Servicios Cebolla v3

Lado de servicio

Para configurar autorización de cliente en el lado de servicio, necesita existir el directorio <HiddenServiceDir>/authorized_clients/. Siguiendo las instrucciones descritas en la sección Configuración, este directorio se creará automáticamente. La autorización de cliente será habilitada para el servicio solamente si tor carga exitosamente al menos un archivo de autorización.

Por ahora, necesitas crear las claves tú mismo, con un script (como estos escritos en Bash, Rust o Python), o manualmente.

Para generar manualmente las claves, necesitarás instalar openssl versión 1.1+ y basez.

Paso 1. Generar una clave usando el algoritmo x25519:

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

Si obtienes un mensaje de error, algo ha salido mal, y no puedes continuar hasta que te hayas dado cuenta de por qué no funcionó.

Paso 2. Formatear las claves en base32:

Clave privada

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

Clave pública

$ 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

Paso 3. Copiar la clave pública:

 $ cat /tmp/k1.pub.key

Paso 4. Crear un archivo de cliente autorizado:

Formatear la autenticación de cliente y crear un nuevo archivo en el directorio <HiddenServiceDir>/authorized_clients/. Cada archivo en ese directorio debería tener el sufijo ".auth" (ej.: "alice.auth"; el nombre de archivo es irrelevante), y el formato de su contenido debe ser:

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

Los valores soportados para <auth-type> son: "descriptor".

Los valores soportados para <key-type> son: "x25519".

El <base32-encoded-public-key> es la representación en base32 solamente de los bytes de la clave en bruto (32 bytes para x25519).

Por ejemplo, el archivo /var/lib/tor/hidden_service/authorized_clients/alice.auth debería parecerse a:

 descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ

Si estás planeando tener más clientes autenticados, cada archivo debe contener solamente una línea. Cualquier archivo anómalo será ignorado.

Paso 5. Reiniciar el servicio tor:

 $ sudo systemctl reload tor

Si obtienes un mensaje de error, algo ha salido mal, y no puedes continuar hasta que te hayas dado cuenta de por qué no funcionó.

Importante: Se puede revocar un cliente removiendo su archivo ".auth", sin embargo, la revocación va a entrar en efecto solamente después que se reinicie el proceso tor.

Lado de cliente

Para acceder a un Servicio Onion versión 3 con autorización de cliente como un cliente, asegúrate de que tienes ClientOnionAuthDir configurado en tu torrc. Por ejemplo, agrega esta línea a /etc/tor/torrc:

 ClientOnionAuthDir /var/lib/tor/onion_auth

A continuación, en el directorio <ClientOnionAuthDir>, crea un archivo .auth_private para el servicio Onion correspondiente a esta clave (es decir, 'bob_onion.auth_private'). El contenido del archivo <ClientOnionAuthDir>/<user>.auth_private debería parecerse a esto:

 <dirección-onion-de-56-caracteres-sin-la-parte-.onion>:descriptor:x25519:<x25519 private key in base32>

Por ejemplo:

 rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ

Si generaste el par de claves manualmente siguiendo las instrucciones en esta página, puedes copiar y usar la clave privada creada en el Paso 2. A continuación, reinicia tor y deberías poder conectarte a la dirección del Servicio Cebolla.

Si estás generando una clave privada para un sitio onion, el usuario no necesita editar el torrc del Navegador Tor necesariamente. Es posible ingresar la clave privada directamente en la interfaz del Navegador Tor.

Por más información acerca de autenticación de cliente, por favor mira el manual de Tor.