PARTE 1 . Conceptos básicos
Tunelización : Técnica de anonimato en Internet, nos permite evitar que se nos pueda identificar como origen de la conexión.
Tomando como ejemplo una comunicación web, cuando solicitamos el acceso mediante nuestro navegador a https://regor.home.blog/ (el cual esta asociado en el DNS a la dirección del servidor el cual aloja el contenido web que solicitamos). Primero nuestro router se encarga de almacenar tanto la IP del equipo (por ejemplo, 192.168.1.10) como el puerto (el 80 TCP por lo general para protocolo HTTP) por el cual recibió la petición, luego ENRUTA (de ahí su nombre por su principal función) la petición al servidor que tiene alojado la web que solicitamos, cuando el servidor recibe la petición y tiene lista la respuesta (la web de https://regor.home.blog/) esta es enviada hacia nuestra dirección (192.168.1.10) para esto el servidor web siempre tiene que saber que dirección fue la que solicito la web para que una vez tenga lista la respuesta la envíe a la dirección a la que se lo pidió.
Análogo a una comunicación cotidiana:
Una persona A le pide a un vendedor de bodega (una persona B) una botella de agua, A seria el cliente el cual realiza la petición a B sobre una botella de agua y cuando B que sería el servidor recibe la petición, retorna a A una respuesta la cual es en este caso la botella de agua.
Para esto fue necesario que tanto A sepa quien es B y B sepa quien es A, de lo contrario A no hubiera sabido a quien solicitar la botella de agua y ni B hubiera sabido si alguien le solicitaba una botella con agua o tampoco hubiera sabido a quien enviar esa botella de agua. ¿Que pasa si A no quiere que se sepa que es él quien pide una botella de agua?, en otras palabras cómo podemos hacer que A sea anónimo a B.
Si añadimos a una persona X a la comunicación en la cual, A le diga a X que le solicite a B una botella de agua tal que luego B entrega la botella de agua a X y X se la da a A, de esta forma X es el intermediario y B no conoce a A para nada. En este ejemplo X actuaria similar a un proxy, el cual tiene el propósito de “cubrir” la dirección IP original con la dirección IP del proxy, de esta forma el servidor desconoce quien fue el que originalmente realizo la petición, esto da al usuario cliente (quien realiza la petición) cierto grado de anonimato, el usuario de hecho puede usar cuantos proxys quiera y así crear una gran túnel para sus comunicaciones (lo cual obviamente retrasaría las comunicaciones como efecto secundario ya que el trafico estaría viajando a través de varios puntos que pueden estar muy alejados geográficamente.
PRIVACIDAD != ANONIMATO
En este punto es válido hacer una aclaración: PRIVACIDAD y ANONIMATO son cosas que pueden estar relacionadas pero significan cosas muy diferentes. Se puede hablar de anonimato cuando se desconoce la identidad de alguien, mientras que privacidad es aquello que una persona lleva a cabo en un ámbito reservado evitando darlo a conocer a los demás. Uno no implica al otro, dicho de otra forma con un ejemplo, nosotros podemos tener privacidad en nuestra casa, sin embargo esto no significa que implique que seamos anónimos ya que puede haber personas tales como amigos o vecinos que conocen que vivimos ahí y saben quien somos; otro ejemplo, una persona escribe un libro científico en la edad media el cual es publicado como anónimo, tal persona es anónima ya que no se le puede identificar como el autor del libro pero ello no implica que en su vida tenga privacidad ya que puede tratarse de una ‘figura pública’ o famosa por ejemplo (las cuales por lo general tienen menos privacidad de lo normal al estar expuestas a los medios de comunicación). Aclarado esto de alguna forma podemos notar que un proxy nos brinda anonimato, más no privacidad pues continuando con nuestro ejemplo de las personas A , B y X sabemos que gracias a X es posible que A sea anónimo para B pero esto no garantiza su privacidad, ya que una persona S que observa la comunicación puede notar fácilmente que A pide una botella de agua a B mediante X (note que agregamos una persona S a la comunicación), de este modo dado que S pudo obtener el dato sobre A (que pide una botella con agua) podemos decir que S vulneró la privacidad de A.
OBS: Del ejemplo se puede notar que S hace referencia a un sniffer de red.
¿Como podemos mejorar la comunicación de tal manera que no se comprometa la privacidad de A? La respuesta está en cifrar la comunicación de A a X de esta forma, cualquier persona como la persona S que observe la comunicación, cuando esta obtenga los datos, estos estarán cifrados y la privacidad de A se mantendrá a salvo. Siguiendo con nuestro ejemplo podemos usar cualquier sistema para cifrado para el mensaje de A hacia X (existen muchos métodos de cifrado, desde simples como el cifrado cesar o más avanzados como el RSA) en este ejemplo lo cifraremos mediante unos supuestos ‘códigos’ que por obvias razones solo conocen A y X, de esta forma supongamos que el mensaje “quiero una botella de agua” el cual es el mensaje en texto claro, en el código que manejan A y X sea algo como “odio los pepinillos”. De esta manera la comunicación mejorada seria la siguiente: A dice a X “odio los pepinillos” a lo que X entiende el código y sabe que el mensaje en texto claro es “quiero una botella de agua” y una persona S que observa tal comunicación intercepta los datos de la comunicación y obtiene “odio los pepinillos”, luego esta persona S al no conocer el código utilizado para cifrar el mensaje (el cual solo conocen A y X) no podrá saber nunca lo que realmente significa “odio los pepinillos” de esta forma la privacidad de A ya no es comprometida.
IMPORTANTE: Puede usarse más de un intermediario como X (sean por ejemplo X1, X2, X3 … Xn), obviamente mientras más intermediarios haya más segura es la comunicación, el trafico se puede cifrar de nodo a nodo (por ‘nodo’ nos referimos a cada host así como A, X1, X2, … ) con cualquier método de cifrado PERO nunca se deberá cifrar el trafico que va desde Xn al host servidor, dicho de otra forma en el ejemplo que usamos nunca se puede cifrar el trafico de X a B ya que B es un servidor que no conoce el código con el cual fue cifrado el mensaje por lo cual si se cifra el trafico a B (a B le llegaría el mensaje “odio los pepinillos”), le sucederá lo mismo que a S, pues no podrá saber cual es la petición y por lo tanto no podrá enviar la respuesta a X para que esta se lo de a A, terminando la comunicación sin que A obtenga la respuesta (botella de agua en el ejemplo).
Identifiquemos a las personas del ejemplo:
- A : HOST CLIENTE
- B : HOST SERVIDOR
- X : INTERMEDIARIO (Puede ser un proxy)
- S : SNIFFER DE RED
Definamos:
Comunicacion por PROXY:
Nos da anonimato enmascarando nuestra IP con la IP del proxy, más no nos da privacidad ya que el trafico desde el host-cliente al proxy o a los proxys NO es cifrado, de hecho la comunicación mediante proxy se denomina enrutamiento transparente ya que el trafico se enruta a través de los proxys pero este tráfico puede ser accedido por cualquiera que intercepte la comunicación, como por ejemplo un sniffer.
VPN (Virtual Private Network):
Nos permite crear conexiones privadas entre dos puntos utilizando una red pública como es Internet. Dicha red VPN tuneliza el trafico entre dos puntos de manera cifrada otorgando de esta forma privacidad y anonimato en Internet. Esto es similar a la comunicación mejorada que dimos en el ultimo ejemplo, donde entre los puntos A y B el trafico esta tunelizado mediante X y este trafico de A a X esta cifrado.
SSH (Secure SHell):
Protocolo de comunicación segura entre dos sistemas que permite a uno de estos conectarse al otro de forma remota. Dicho de otra forma nos permite abrir un terminal en un host desde otro diferente, de manera que podemos ejecutar interactuar con un host M desde un host N mediante dicho terminal. Una característica importante de SSH que lo coloca por encima de otros protocolos de comunicación como FTP o Telnel (considerados protocolos inseguros en la actualidad) es que el trafico de nodo a nodo es CIFRADO, por medio de RSA también conocido como sistema criptografico de llave publica.
Más info :
https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-ssh.html
