Tor e Hidden Service Protocol - Explicando tecnicamente a "Deep Web"
Este artigo foi escrito para (tentar) explicar o funcionamento do Tor e do Hidden Service Protocol.
Parte 3: Hidden Service Protocol
O cliente TOR nos permite acessar serviços mantendo nosso IP oculto, porém, graças a uma implementação do Hidden Service Protocol na rede Tor, nós podemos também oferecer serviços dentro da rede Tor mantendo nosso IP oculto.
O Hidden Service Protocol permite a disponibilização de serviços, como publicação de páginas, serviços de mensagens, e-mails, SSH, entre outros tipos de serviços dentro da rede Tor, sem que nosso IP seja exposto em momento algum.
Ou seja, com este protocolo você pode, por exemplo, montar um servidor para publicar um site, e o IP desse servidor permanecerá oculto dentro da rede TOR. Ninguém que acessa o site, vai conhecer o IP de seu servidor. :)
Para entendermos corretamente o modo de funcionamento do Hidden Service Protocol, vamos primeiro definir alguns personagens importantes nesse "joguinho":
* Leia com bastante atenção, porque realmente não é uma coisa muito fácil de se entender.
Agora, da perspectiva prática:
O Hidden Service Protocol permite a disponibilização de serviços, como publicação de páginas, serviços de mensagens, e-mails, SSH, entre outros tipos de serviços dentro da rede Tor, sem que nosso IP seja exposto em momento algum.
Ou seja, com este protocolo você pode, por exemplo, montar um servidor para publicar um site, e o IP desse servidor permanecerá oculto dentro da rede TOR. Ninguém que acessa o site, vai conhecer o IP de seu servidor. :)
Para entendermos corretamente o modo de funcionamento do Hidden Service Protocol, vamos primeiro definir alguns personagens importantes nesse "joguinho":
- Cliente_TOR → É o cliente TOR do usuário que está tentando se conectar ao hidden service;
- Hidden Service → É o serviço oculto, ou seja, aquele serviço que vai estar disponível na rede TOR mantendo oculto o IP de quem está o provendo;
- Circuito TOR → Relembrando o que foi passado no outro capitulo, circuito Tor se constitui como a passagem do tráfego saindo do cliente_TOR e pelos 3 relays antes de chegar no destino.
- Ponto de introdução → É um relay aleatório que mantém um circuito aberto com quem está provendo o hidden service. Esse relay é escolhido pelo hidden service no momento que ele é iniciado.
- Chave pública do serviço → Todo hidden service tem uma chave pública. Importante notar, que a URL do serviço oculto, é formada pelo hash da chave pública+subdominio .onion.
Exemplo: http://kpvz7ki2v5agwt35.onion
A chave pública e o hash são gerados automaticamente na primeira vez que o hidden service é iniciado.
- BD distribuído de hashs → Conjunto de relays que guardam informações sobre todos o hidden services disponíveis na rede. As informações que ele guarda são: Qual a chave pública do serviço e quais são seus pontos de introdução. O serviço após gerar a chave pública e escolher seus pontos de introdução, passa essas informações automaticamente para esse BD.
- Ponto de encontro → É um relay escolhido randomicamente pelo cliente TOR. Este relay será o ponto onde tanto o hidden service quanto o cliente TOR, vão se conectar simultaneamente para a troca de informações.
* Leia com bastante atenção, porque realmente não é uma coisa muito fácil de se entender.
Agora, da perspectiva prática:
- Eu já estou com o TOR instalado e digito no Tor Web Browser, o endereço: http://kpvz7ki2v5agwt35.onion;
- Cliente TOR já nota pelo "subdominio .onion" que eu quero me conectar a um hidden service, e envia o hash da chave pública que está no URL para o banco de dados de hashs;
- O banco de dados de hashs procura procura pela hash que enviei, caso encontre, manda como resposta para o meu cliente uma lista de todos os pontos de introdução desse hidden service e sua chave pública completa;
- O cliente TOR escolhe randomicamente na rede um relay para servir como ponto de encontro e cria um circuito até ele, após isso, o cliente envia para o ponto de encontro um código chamado de "one-time secret";
- O cliente TOR, envia para o ponto de introdução do hidden service uma mensagem com o endereço do ponto de encontro, juntamente com o "one-time secret". Essa mensagem é criptografada usando a chave pública do hidden service;
- O ponto de introdução, usando o circuito que já estava estabelecido, passa para o hidden service a mensagem criptografada que recebeu do cliente TOR. O hidden service, com sua chave privada, descriptografa a mensagem e descobre o endereço do ponto de encontro e o "one-time secret";
- O hidden service, que já está com o endereço do ponto de encontro, abre até ele um circuito. E passa para esse ponto de encontro o one-time secret;
- O ponto de encontro compara o one-time secret enviado pelo cliente TOR e pelo hidden service. Caso os dois sejam idênticos, ele notifica o cliente TOR e o hidden service que a conexão foi feita com sucesso;
- O cliente TOR e o hidden service já podem se comunicar. O ponto de encontro apenas repassa as mensagem recebidas pelo hidden service para o cliente TOR e vice-versa. Neste ponto, a conexão é completamente criptografada.