miércoles, 14 de agosto de 2013

Onion Routing: Idea primigenia

En el encaminamiento de cebolla se persigue que cada nodo intermedio (router) conozca sólo lo que es estrictamente necesario: La dirección de la entidad que le envía el mensaje y la dirección a la que tiene que redirigir el mensaje. Los mensajes que se intercambian los routers no tienen que proporcionar ninguna información adicional. De esta forma ningún router intermedio sabrá quien es el emisor ni el destinatario de la comunicación. Por ser el último router de la ruta el que directamente se comunica con el destinatario, este será el único que sabrá quien es el destinatario y el contenido del mensaje original que tenía que entregar.
onion routing

Para conseguir este objetivo la idea original era seguir el siguiente esquema:
  • El emisor origen de la comunicación establece una conexión de inicialización con un proxy de aplicación (en inglés Application Proxy) que convierte los mensajes del protocolo específico de la aplicación a un formato genérico que pueda ser manejado por los routers.
  • A continuación el proxy de aplicación envía los mensajes a un Onion Proxy (se le suele llamar nodo OP), el cual decide la ruta hacia el destino y construye la estructura de datos que se va a enviar al siguiente nodo y a la que se llama onion ('cebolla' en inglés) o onion forward ('cebolla hacia adelante', para indicar el sentido de la comunicación). La estructura de datos tiene una capa cifrada por cada router que vaya a formar parte del circuito.
    Si EPK(<datos>) representa el cifrado usando la clave pública PK, DSK(<datos>) representa el descifrado usando la clave privada y el onion proxy inicial decide que se va a usar la ruta <4,3,5> de routers, entonces el paquete que se envía al siguiente router puede ser representado por:
    EPK4(dirección_del_router3, EPK3(dirección_del_router5, EPK5(<datos>)))
  • La estructura de datos es enviada por el onion proxy a el entry funnel (punto de entrada al canal). El cual es un onion router (nodo OR) usado como punto de entrada a la red de enrutadores de la red de cebolla. Este router descifra el paquete (pela su capa de la 'cebolla') y obtiene la dirección del siguiente nodo OR en el camino del mensaje.
  • A continuación el entry funnel coge el resto del mensaje y lo manda al siguiente onion router.
  • Así se continúa hasta llegar al onion router que actúa como nodo de salida al que llama exit funnel. Este nodo descifra y obtiene el mensaje que originalmente produjo el proxy de aplicación. Este mensaje se envía a la dirección destino especificada.
  • Cuando el receptor envía una respuesta a un mensaje particular, el exit funnel lo convierte al protocolo genérico, lo cifra con su clave privada y lo envía de vuelta al onion router del que le vino el mensaje original.
  • Cada onion router opera de forma similar cifrando la respuesta y lo envía de vuelta obteniendo una estructura de datos, a la que se llama reply onion o onion forward, que tiene la siguiente estructura:
    ESK4(ESK3(ESK5(<datos>)))
  • El mensaje llega al onion proxy el cual descifra usando las claves públicas de los onion routers que escogió como camino del mensaje original.

0 comentarios:

Publicar un comentario