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.

[ Hits: 63.069 ]

Por: Marcelo Theodoro em 14/01/2013


Cliente Tor - Funcionamento básico



O cliente Tor tem o objetivo de garantir seu anonimato na Internet. Este software trabalha redirecionando seu tráfego de Internet através da rede Tor, antes que ele chegue ao seu destino final.

A rede Tor é um conjunto de servidores que funcionam retransmitindo seu tráfego de Internet. Estes servidores são chamados de relay's. Atualmente, existem cerca de 3.000 relay's disponibilizados por voluntários em todas as partes do mundo.

O primeiro passo do cliente Tor quando ele é iniciado, é buscar em um Directory Server uma lista de endereços de todos os relay's Tor disponíveis.

Tendo posse desta lista, ele escolhe 3 relay's randomicamente. Estes relay's serão usados para a criação de um túnel virtual que vai ligar o cliente Tor até o seu destino. Ou seja, quando o cliente Tor mandar uma mensagem qualquer, esta mensagem não será encaminhada direto pro seu destino.

Ela será enviada primeiramente para o PRIMEIRO_RELAY_TOR (relay de entrada), que vai entregar a mensagem para o SEGUNDO_RELAY_TOR, e que por sua vez vai entregar a mensagem para o TERCEIRO_RELAY_TOR (relay de saída). E então, é o TERCEIRO_RELAY_TOR que entregará a mensagem para o destino final.

Depois de definido quais serão os três relay's que formarão o circuito, o cliente Tor vai até eles e negocia com cada um deles, separadamente, uma chave pública diferente para a encriptação dos dados.

Tendo certeza que o relay só vai conseguir descriptografar e ver a mensagem que foi criptografada com a sua própria chave pública, nós garantimos que nenhum dos relay's vai conseguir ver o caminho todo percorrido pela mensagem.

Exemplo: Supondo que você vai enviar uma mensagem para um destino qualquer usando o Tor, sendo que o circuito (o túnel virtual passando pelos três relay's) já está definido e o Tor já tem as chaves públicas desses três relay's:
  • O primeiro passo do Tor é pegar o pacote original e criptografá-lo usando a chave pública do TERCEIRO_RELAY_TOR. Note que, no corpo do pacote, existe a informação que está sendo trafegada (vamos supor que seja um HTTP request) e no Header, entre outras informações, tem o destino original dessa mensagem (que pode ser um site qualquer). Ou seja, a mensagem que contém o destino original vai estar criptografada quando sai de sua máquina e enquanto passa pelos relay 1 e 2. Apenas o terceiro relay vai conseguir descriptografar a mensagem para saber o destino!
  • Após a primeira encriptação, o Tor pega essa mensagem criptografada e cria um pacote tendo ela como conteúdo, adiciona o endereço do TERCEIRO_RELAY_TOR no Header e criptografa novamente, agora usando a chave pública SEGUNDO_RELAY_TOR. Isto garante que o endereço do relay de saída (ou seja, o terceiro relay) estará criptografado quando sair de sua máquina, e quando passar pelo primeiro relay. O único que precisa saber o endereço do TERCEIRO_RELAY_TOR é o SEGUNDO_RELAY_TOR, que vai ficar responsável por encaminhar a mensagem para ele.
  • Essa mensagem que já foi criptografada duas vezes, agora vai ser criptografada novamente junto com o endereço do SEGUNDO_RELAY_TOR no header, só que agora, com a chave pública do PRIMEIRO_RELAY_TOR. Isso dá uma segurança a mais, caso a comunicação entre seu cliente Tor e o primeiro relay seja interceptada.

Para facilitar o entendimento do esquema de criptografia em camadas, vamos tomar uma perspectiva mais prática:
  1. Quando a mensagem chegar no primeiro relay e ele a descriptografar, esse relay vai encontrar duas informações: um pacote de dados criptografados e o endereço do segundo relay do circuito. Ele a envia.
  2. Quando o primeiro relay entregar a mensagem para o segundo relay e ele descriptografar, o conteúdo que ele vai ter acesso vai ser: um pacote de dados criptografado e o endereço desse terceiro relay. E então, ele entrega a mensagem ao terceiro relay.
  3. O terceiro relay vai descriptografar e vai encontrar a mensagem original (o HTTP request) e o endereço do destino final, e faz o HTTP request.

Obs.: No Header dos pacotes TCP, existe o campo "source address". Logicamente, neste campo, vai ter o endereço do TERCEIRO_RELAY_TOR, e não do cliente.

Para entender melhor

A representação abaixo esquematiza como o redirecionamento de tráfego funciona quando o cliente_TOR tenta conectar-se a um destino qualquer:
Linux: Tor e Hidden Service Protocol - Explicando tecnicamente a tal da 'Deep Web'
Note que:
  • O TOR_relay_1 "sabe" apenas o endereço do cliente_TOR e o endereço do TOR_relay_2;
  • O TOR_relay_2 "sabe" apenas o endereço do TOR_relay_1 e do TOR_relay_3;
  • O TOR_relay_3 "sabe" apenas o endereço do TOR_relay_2 e do Destino;
  • O IP que chega ao Destino, é o do TOR_relay_3.

Como notamos acima, o cliente não envia os pacotes diretamente para o destino, assim como o site também não recebe pacotes vindos diretamente do cliente. Isso garante a privacidade de dois modos:
  1. Não é possível descobrir para ONDE o cliente está enviando pacotes. E graças a esse aspecto, muitas pessoas que vivem em países que promovem a CENSURA podem acessar a Internet livremente;
  2. O site não sabe por QUEM ele está sendo acessado, algo muito interessante para quem não quer ser identificado quando está usando a Internet.

Pode ser usado também por quem acredita estar sendo monitorado por algum tipo de sniffer de rede. Como o tráfego até o TOR_relay_3 vai ser criptografado, alguém que esteja "sniffando" sua rede local não vai conseguir nenhuma informação dos dados que estão sendo trafegados e nem para ONDE eles estão sendo enviados.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Cliente Tor - Funcionamento básico
   3. Hidden Service Protocol
   4. É seguro?
Outros artigos deste autor

Hidden Service - Disponibilizando seu site na Deep Web através do Tor

Solicitações através do Tor utilizando Python

Leitura recomendada

Transferindo arquivos de modo seguro entre Windows e Linux

AUDIT: Auditoria de arquivos no Linux para conhecer quem fez alterações em arquivos

Bind: Explorando e evitando falhas

Instalação do Snort + BASE no Debian Etch pelos fontes

Implementação de WAF mod_security e integração com Graylog utilizando Filebeat e Logstash

  
Comentários
[1] Comentário enviado por robsontex em 14/01/2013 - 21:11h

Excelente artigo. Vai para os favoritos! Parabéns pela clareza na explicação de um assunto que não é dos mais simples. Fico no aguardo de outros artigos relacionados ao tema.

[2] Comentário enviado por Polnoraref em 14/01/2013 - 22:49h

Melhor explicação do TOR que eu já vi, até agora só lia sobre mitos e etc nada muito claro mas agora sim um bom artigo favoritado, muito bem explicado, parabéns :)

[3] Comentário enviado por MarceloTheodoro em 15/01/2013 - 13:33h

Opa!
Ainda bem que gostaram. :)

[4] Comentário enviado por phcerqueira em 15/01/2013 - 23:10h

Parabéns amigo! Melhor artigo sobre o assunto que eu já li até hoje e olha que foram muitos.
A monografia da minha esposa era sobre isso e eu nunca tive tanta base para poder ajudá-la como agora.
Obrigado!

[5] Comentário enviado por andrejhonny em 17/01/2013 - 21:38h

Já está nos favoritos!
Ref. "Deixo claro desde já, que este artigo é completamente teórico, porém, caso a comunidade ache o tema interessante, pretendo escrever outro artigo com uma abordagem mais prática. Ou seja, mostrando a configuração de um cliente Tor e de um Hidden Service. "

Cara...demorou pra fazer :)

[6] Comentário enviado por agoncalves em 18/01/2013 - 17:13h

Parabéns!
Ótimo artigo!

[7] Comentário enviado por removido em 31/01/2013 - 11:30h

Nota 10 pelo artigo, muito bom mesmo.

Se souberes, poderia explicar algo sobre as camadas da Deep, o funcionamento também. Já pesquisei muito sobre isso, mas nunca encontrei nada a respeito e não sei também se é verdade esse esquema de camadas mais profundas com outros conteúdos. Sabe se é verdade ou como funciona?

Abraço e parabéns novamente

[8] Comentário enviado por MarceloTheodoro em 31/01/2013 - 21:07h


[7] Comentário enviado por snock em 31/01/2013 - 11:30h:

Nota 10 pelo artigo, muito bom mesmo.

Se souberes, poderia explicar algo sobre as camadas da Deep, o funcionamento também. Já pesquisei muito sobre isso, mas nunca encontrei nada a respeito e não sei também se é verdade esse esquema de camadas mais profundas com outros conteúdos. Sabe se é verdade ou como funciona?

Abraço e parabéns novamente


Obrigado. :)
Sobre sua pergunta...
Algumas pessoas quando falam de outras camadas, podem estar falando de outros tipos de "redes anonimas". Como freenet e algumas outras menores.
Mas fato é, que boa parte do que se ouve por aí é mito.
Alguns dizem que existem algumas camadas que são necessários computadores "quânticos" pra acessar... isso aí já é viajem total.
Bom, de modo geral, nunca vi algo que me convenceu de que realmente existem várias camadas... e se existem, provavelmente não tem nada a ver com a rede Tor.

[9] Comentário enviado por ianclever em 02/02/2013 - 17:05h

Ótimo artigo, veio na hora certa!


[10] Comentário enviado por gpxlnx em 13/02/2013 - 15:08h

Bah otimo artigo meus parabens

[11] Comentário enviado por px em 27/02/2013 - 06:29h

otimo artigo , esta deep net em ... , algo q n domino ainda , porem to me esforçando para entender , sobre estas camadas nada mais são do q servidores e serviços "ocultos" por ai neh é isto , entendi ??

[12] Comentário enviado por MarceloTHeodoro em 27/02/2013 - 11:47h


[11] Comentário enviado por px em 27/02/2013 - 06:29h:

otimo artigo , esta deep net em ... , algo q n domino ainda , porem to me esforçando para entender , sobre estas camadas nada mais são do q servidores e serviços "ocultos" por ai neh é isto , entendi ??


Não existe uma definição formal sobre esse lance de camadas. xD
Mas a maior parte das pessoas que vejo falando de outras camadas, é exatamente isso: Outros tipos de serviços/servidores que funcionam de modo parecido a Tor network.

[13] Comentário enviado por alexspmiranda em 30/10/2014 - 18:14h

Primeiramente, parabéns. Excelente artigo. Se não for abuso, tenho uma dúvida, o meio físico de conexão da "deepweb" é o mesmo da surface web? Digo, cabeamentos... Acredito que use a protocolo P2P, ou estou enganado?

Abração.

[14] Comentário enviado por MarceloTheodoro em 06/01/2015 - 12:47h


[13] Comentário enviado por alexspmiranda em 30/10/2014 - 18:14h

Primeiramente, parabéns. Excelente artigo. Se não for abuso, tenho uma dúvida, o meio físico de conexão da "deepweb" é o mesmo da surface web? Digo, cabeamentos... Acredito que use a protocolo P2P, ou estou enganado?

Abração.


Sim, o meio físico é exatamente o mesmo.
A diferença são os protocolos usados e as camadas de criptografia.

[15] Comentário enviado por souza.CENTOS em 05/05/2015 - 16:39h

Excelente artigo, fiquei muito satisfeito e com informação suficiente para continuar aumentando conhecimento!!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts