Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

IPs Virtuales masivas

Última Actualización: 29 de Diciembre de 2.000 - Viernes

¿Qué es una IP virtual?

Una IP virtual es un mecanismo por medio del cual el resto de usuarios de IRC no tiene acceso a nuestra IP real, sino que ve una IP que no se corresponde con la realidad. Dicha IP "virtual" nos protege de ataques "nuke" y nos proporciona un buen nivel de privacidad y anonimato, manteniendo de una correspondencia lo bastante próxima a la IP real del usuario como para que se puedan poner "baneos" por IP, o para que se identifiquen clones.

¿Cómo sé que tengo una IP virtual?

A partir de la versión u2.10.H.01.24, todos los usuarios de IRC-Hispano disponen del servicio de IP Virtual, sin necesidad de realizar ninguna actuación especial. Dicho privilegio puede verificarse comprobando que disponemos del modo de usuario "+x". Mientras tengamos dicho modo activado, tendremos nuestra IP protegida.

Si deseamos mostrar nuestra IP, en un momento determinado, el usuario puede quitarse libremente el modo de usuario "+x". A partir de dicho momento, cualquier usuario que intente ver la IP del primero, tendrá acceso a ella.

El usuario puede volverse a poner el modo "+x" en cualquier momento.

Yo me hago un "whois" a mí mismo y veo mi IP

Los usuarios con IP virtual siguen viendo su propia IP cuando realizan un "/whois". La razón de ello es que muchas funcionalidades de su cliente IRC pueden depender de la capacidad de conocer su propia dirección IP. Asimismo, el IRC puede utilizarse también para identificar nuestra propia IP, por lo que no tendría mucho sentido el proteger la IP de nosotros mismos.

El usuario puede conocer su propia IP virtual haciéndose un "/whois" y viendo la linea que empieza por "Direccion VIRTUAL". En ese campo podemos comprobar qué IP virtual ven el resto de usuarios del IRC.

El hecho de que el propio usuario vea su propia IP sin restricciones es importante a la hora de ver nuestras propias caídas por "ping timeout", etc.

¿Hasta qué punto mi IP es privada?

La IP virtual proporciona una seguridad elevada, pero no es una solución a prueba de bomba. Algunas de las consideraciones a tener en cuenta son:

  • Los IRCops y operadores de red tienen acceso a la IP real del usuario, incluso en el caso de que sólo se disponga de un log.

  • Si el usuario envía o recibe DCC's (chats o ficheros), el otro extremo conocerá su IP, ya que los DCC establecen conexiones físicas entre las dos máquinas.

  • Si el usuario dispone de una IP fija y en algún momento se filtró su IP, cualquier ocultación posterior es futil.

  • Si el usuario tiene un troyano en su máquina, el ocultar la IP no sirve de nada.

  • Si el atacante tiene una cierta idea de la IP del usuario, puede realizar un ataque por fuerza bruta sobre "/who" o "/whois".

  • Si se compromete la clave de cifrado de IPs de la red, el atacante puede averiguar la IP real a partir de cualquier virtual. Para reducir el riesgo, la clave de cifrado de IPs de la red se cambia de manera frecuente, y siempre que sea necesario.

  • Algunas acciones de los operadores de la red pueden hacer visible la IP de los usuarios. Por ejemplo, una GLINE.

¿Por qué se ha tardado tanto en introducir esta tecnología en IRC-Hispano?

Desde hace muchos meses, la tecnología de IRC-Hispano/ESNET ya disponía de capacidad para proporcionar IPs virtuales a todos los usuarios de la red. Lamentablemente las implementaciones iniciales vinculaban el modo de usuario "+r" con el modo "+x". Es decir, sólo podían tener IPs virtuales aquellos usuarios cuyo nick estaba protegido con la base de datos distribuida (el modo "+r"). La idea inicial era dotar a la red de la infraestructura de base de datos distribuídas y registro y verificación distribuída de nicks, en un plazo corto de tiempo.

Lamentablemente el progreso lento en los nuevos servicios distribuídos estaba retrasando demasiado la implantación del modo "+r" de una forma generalizada, si bien los IRCops, los operadores de red y un buen número de usuarios llevan utilizando este sistema de forma experimental desde hace meses. Debido a esta coyuntura se ha decidido acelerar la implantación de las IPs virtuales, lo que ha obligado a independizar el modo "+x" del modo "+r".

Esta desvinculación de modos es lo que ha hecho posible la implantación de IPs virtuales de forma masiva.

¿Cómo funciona el sistema?

En su momento hubo un gran debate, entre los operadores de la red, sobre la forma concreta de proporcionar IPs virtuales. El consenso final definió las siguientes características:

  • Todos los servidores deben producir la misma IP virtual para la misma IP real. Este requisito se relaja en situaciones de cambio de clave de cifrado de IPs de la red, algo que está fuera del funcionamiento normal de la red.

  • Una misma IP debe corresponderse a una misma IP virtual, salvo en situaciones de cambio de clave.

  • Los clones deben aparecer también como clones en la IP virtual.

  • Teniendo una IP virtual, debe poderse obtener la IP real si se dispone de la clave de cifrado de red. De esta forma es posible identificar IPs en logs, por ejemplo.

Si la IP virtual cambiase, por ejemplo, al cambiar de servidor o simplemente saliendo y volviendo a conectar, un usuario podría saltarse cualquier baneo o introducir clones de forma no detectada. En mi diseño original, con el modo "+x" vinculado al modo "+r", los usuarios se identificaban por su nick registrado, no por su IP real o virtual. Lo lógico en esa situación, por tanto, era poner los baneos al nick (si el usuario cambiaba de nick, su IP se hacía visible). En el contexto actual, con los modos "+x" y "+r" independientes, es precisa una solución de este tipo.

La protección funciona de la siguiente manera:

  1. Se toma la IP real del usuario.

  2. Se toma la clave de cifrado de IPs de la red, a través de la base de datos distribuída.

  3. Se toma un valor inicial "v".

  4. Se cifra la concatenación de la IP del usuario con el valor "v", usando la clave de cifrado de IPs de la red.

  5. El resultado se codifica en "radix-64".

  6. Si el resultado codificado en "radix-64" contiene caracteres inválidos para el DNS, se elige un valor nuevo de "v" y se vuelve a empezar. La probabilidad de que una codificación sea inválida es de 1-(31/32)10 = 27.2%. Es decir, el número medio de cifrados hasta conseguir una codificación válida es de solo 1.37. Esta cifra es más que aceptable.

  7. Cuando el resultado codificado en "radix-64" sólo contiene caracteres válidos, se divide en dos grupos de 32 bits cada uno, y se publican en la red como "[grupo1].[grupo2].virtual".

Algunas consideraciones:

  • El valor "v" se utiliza exclusivamente para generar IPs virtuales válidas para el sistema DNS.

  • Las IPs virtuales se dividen en dos grupos de 32 bits para evitar baneos masivos tipo "*.virtual".

  • El sistema de cifrado de IPs virtuales es el TEA (Tiny Encryption Algorithm), utilizando una clave de 64 bits. Tienes más información sobre TEA y su uso en la red en la página de Registro de Nicks.

¡¡Quiero el código fuente!!

El desarrollo del sistema de IPs virtuales masivas se realizó entre las versiones 2.10.H.01.13 (no inclusive) y 2.10.H.01.28 (inclusive). Se puede acceder a los detalles a través del sistema CVS de la red IRC-Hispano.


Historia

  • 29/Dic/00: Más información sobre TEA.

  • 20/Nov/00: Primera versión de este documento.



Python Zope ©2000 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS