A autorização do cliente é um método para tornar um Onion Service privado e autenticado.
Ele exige que os clientes Tor forneçam uma credencial de autenticação para se conectar ao Onion Service.
Para o v3 Onion Services, esse método funciona com um par de chaves (uma pública e uma privada).
O lado do serviço é configurado com uma chave pública e o cliente só pode acessá-lo com uma chave privada.
Observação: depois que você configurar a autorização do cliente, qualquer pessoa com o endereço não poderá acessá-lo a partir deste ponto.
Se nenhuma autorização for configurada, o serviço estará acessível a qualquer pessoa com o endereço onion.
Configurando Serviços Cebola v3
Lado de serviço
Para configurar a autorização do cliente no lado do serviço, o diretório <HiddenServiceDir>/authorized_clients/ precisa existir. Seguir as instruções descritas na seção Configuração criará automaticamente este diretório.
A autorização do cliente só será habilitada para o serviço se o tor carregar com sucesso pelo menos um arquivo de autorização.
Por enquanto, você precisa criar as chaves com um script (como estes escritos em Bash, Rust ou Python) ou manualmente.
Para gerar manualmente as chaves, você precisa instalar o openssl versão 1.1+ ebasez.
Passo 1. Gere uma chave usando o algoritmo x25519:
$ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem
Se você receber uma mensagem de erro, algo deu errado e você não poderá continuar até descobrir por que isso não funcionou.
Etapa 2. Formate as chaves em base32:
Chave privada
$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key
Chave 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
Etapa 3. Copie a chave pública:
$ cat /tmp/k1.pub.key
Etapa 4. Crie um arquivo de cliente autorizado:
Formate a autenticação do cliente e crie um novo arquivo no diretório <HiddenServiceDir>/authorized_clients/.
Cada arquivo nesse diretório deve ter o sufixo ".auth" (ou seja, "alice.auth"; o nome do arquivo é irrelevante) e seu formato de conteúdo deve ser:
<auth-type>:<key-type>:<base32-encoded-public-key>
Os valores suportados para <auth-type> são: "descriptor".
Os valores suportados para <key-type> são: "x25519".
<base32-encoded-public-key> é a representação base32 apenas dos bytes da chave bruta (32 bytes para x25519).
Por exemplo, o arquivo /var/lib/tor/hidden_service/authorized_clients/alice.auth deve ter a seguinte aparência:
descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ
Se você planeja ter mais clientes autenticados, cada arquivo deve conter apenas uma linha. Qualquer arquivo malformado será ignorado.
Passo 5. Reinicie o serviço Tor:
$ sudo systemctl reload tor
Se você receber uma mensagem de erro, algo deu errado e você não poderá continuar até descobrir por que isso não funcionou.
Importante: É possível revogar um cliente removendo o arquivo ".auth", porém a revogação só entrará em vigor após o processo tor ser reiniciado.
Lado do cliente
Para acessar um Onion Service versão 3 com autorização de cliente como cliente, certifique-se de ter ClientOnionAuthDir definido no seu torrc.
Por exemplo, adicione esta linha no /etc/tor/torrc:
ClientOnionAuthDir /var/lib/tor/onion_auth
Em seguida, no diretório <ClientOnionAuthDir>, crie um arquivo .auth_private para o Onion Service correspondente a esta chave (por exemplo, 'bob_onion.auth_private').
O conteúdo do arquivo <ClientOnionAuthDir>/<user>.auth_private deve ser semelhante a este:
<56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>
Por exemplo:
rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ
Se você gerou manualmente o par de chaves seguindo as instruções nesta página, poderá copiar e usar a chave privada criada na Etapa 2.
Em seguida, reinicie o tor e você poderá se conectar ao endereço do Onion Service.
Se você estiver gerando uma chave privada para um site onion, o usuário não precisa necessariamente editar o torrc do navegador Tor. É possível inserir a chave privada diretamente na interface do Tor Browser.
Para obter mais informações sobre autenticação de cliente, consulte o Manual do Tor.