InET 3x3: Internet Protocol v6
Introduccion I (no tiene que ver con el articulo)
En el mundo de los sueños primero se penso en una increible red, que se extendiera rapidamente por todo el planeta y lograra conectar tantas computadoras como fuese posible, una red que tuviera vida propia y que fuese la casa del conocimiento y la libertad. William Gibson comenzo a impresionar a sus lectores con terminos extraños tales como ciberespacio y realidad virtual, las ideas de mundos virtuales en los que los humanos y entes IA se conocen e interactuan; un mundo sin limites donde flotan las fantasias reales. Esto era considerado por la gente normal como ficcion cientifica. La realidad en estas epocas solo estaba en la imaginacion. Internet fue el paso mas acertado para que esa imaginacion fuese explotada.
Introduccion II
Debido a la inauguracion de los laboratorios de InET, he decidido hacer un articulo acerca del nuevo protocolo de IP denominado IPv6. Mi deseo es hacer una serie de varios tomos con este tema, en el cual se explique a fondo las caracteristicas de este nuevo protocolo; asi que comienzo con la introduccion y en la proxima entrega explicare lo que es meramente tecnico.
Para un mejor entendimiento del articulo es necesario tener bases del protocolo TCP/IP. Si no sabes mucho... que esperas para aprender?, ve ya mismo a bajarte un manual de TCP/IP antes de leer lo que viene (Ahhh, estoy exagerando, mejor leelo y si te quedan dudas te bajas el manual... bien?)
Introduccion III
Dentro de las caracteristicas tecnicas que crean una comunicacion basada en el intercambio de paquetes, se encuentra la direccion IP.
Las primeras organizaciones encargadas del desarrollo de internet (todo esto no tiene que ver con los hackers, que son sus fundadores) se preocupaban por seleccionar un tipo de protocolo estandar para efectuar las operaciones de intercambio de paquetes. Esto ocasiono un ambiente competitivo muy desagradable entre distintas compañias que querian tener el credito de ser las primeras en implementar el protocolo ideal para la comunicacion en internet.
Nombres como CLNP (Conection-Less network Protocol), TUBA (TCP and UDP OverBigger Adresses), TP/IX, SIP (Simple IP) e IPv4 son los protocolos que han influido de una u otra forma al desarrollo de internet. Al principio se pensaba que internet no iba a ser una red a la cual millones de usuarios iban a acceder. por eso actualmente se trabaja con el protocolo IPv4, un protocolo de comunicacion eficiente pero con el defecto de tener muy limitado sus bits de direcciones de red, lo cual hace que el cupo de las computadoras conectadas a internet sea muy limitado (esto me hace acordar del pequeño descuido del año 2000...en fin, cuestiones apocalipticas aparte ;)).
Este protocolo ha sido implementado desde hace ya mas de veinte años, pero ya esta llegando a su fin. Dentro de los problemas que se destacan en el esta la incapacidad de tener incorporada dentro de su propia arquitectura la encriptacion de paquetes y seguridad (Ipsec), el servicio DHCP (Dynamic Host Configuration Protocol), NAT (Network Adress Translator) y la limitacion de direcciones a 32 bits. (a diferencia del Ipv6 que utiliza direcciones a 128 bits). El protocolo IPv6 se destaca por implementar la tecnologia Ipsec (la cual sera una adicion del protocolo IPv4 en el desarrollo de la seguridad) y el DHCP (Dynamic Host Configuration Protocol) que es el servicio que permite la autoconfiguracion de direcciones IP disponibles, en este caso sin necesidad de un servidor, todo mediante la autoconfiguracion sin estado.
Las direcciones de IPv6 aumentan en una cantidad de 1028 veces mas que las de IPv4; gracias al nuevo esquema agregado de direcciones, los 48 bits a la izquierda de la direccion asignada constituyen la ruta publica. El primer campo (conformado por 3 bits) indica que el formato de direcciones es agregado. El segundo campo indica la identidad del agregador de nivel mas alto el cual se limita a 8192 proveedores de alto trafico. El tercero esta conformado por los agregadores de proximo nivel que permiten la alineacion jerarquica para la existencia de varios subniveles de ISP. El cuarto es el agregador de nivel de sitio para la organizacion de los propios subniveles y el ultimo es el identificador de interfaz en el cual se almacena el codigo de la compañia y el identificador de extension. Todo esto se explicara detalladamente en futuras entregas.
En la actualidad existe un banco de pruebas internacional encargado de las operaciones necesarias que se deben implementar en el protocolo IPv6 para su correcto funcionamiento en un futuro, su nombre es 6Bone.
Dentro de su anatomia basada en tuneles de trafico sobre la infraestructura IPv4 existente se encuentran caracteristicas como las pilas dobles de trafico IPv4 - IPv6 y viceversa para el envio libre del IPv6 sobre internet; el IPv6 encapsulado en paquetes IPv4; un DNS que soporta registros AAAA de IPv6; un registro de la ruta 6bone que controle los puntos de servicio y sus tuneles y soporte al publico por medio de una lista de correo y una pagina web (http://www.6bone.net). El desarrollo del protocolo IPv6 crece de acuerdo a la colaboracion de diferentes organizaciones que se unan voluntariamente al banco de pruebas 6Bone.
Si alguien esta interesado en la configuracion de IPv6 y usa Linux pues que esta esperando... aqui les presento una pequeña guia de configuracion para Linux (eso si, pequeña... esto es una introduccion)
La instalacion de la configuracion primaria es almacenado en /etc/sysconfig/network-ip6
- Aqui puedes especificar un nivel de debug para los scripts de IPv6
- Activa/desactiva la interface de configuracion IPv6 y especifica un archivo de informacion.
- Activa/desactiva la configuracion de Enrutamiento/Puerta de Enlace y especifica un archivo de informacion.
- Activa/desactiva el IPv6 forwarding, este debe estar activado en un host para actuar como un router
- Activa/desactiva la configuracion de tunel IPv6 y especifica un archivo de informacion.
- Activa/desactiva el IPv6 radvd y especifica el archivo de configuracion y algunas opciones con los demonios.
Ejemplo: network-ip6
#!F:network-ip6
#
#!P:/etc/sysconfig
#
#!D:IPv6 network configuration file
#
#!C:Copyright 1997-1998 Peter Bieringer <pb@bieringer.de>
#
#!V:Version 1.11 05.03.1998
# Changes to:
# 1.11: add IP6FORWARDING switch (to differ between a host and a router)
## IPv6 configuration debugging
# Bit0: show all commands, bit1:don't execute anything
IP6DEBUG=0
## IPv6 network configuration? {yes|no}
IP6NETWORKING=yes
#IP6NETWORKING=no
# Take information from the file
IP6INTERFACEFILE=/etc/sysconfig/network-ip6.conf
## Gateway network configuration
# for i.e. routing IPv6 packages over local IPv6 routers
# similar to the default gateway in IPv4)
# Allow gateway configurations {yes|no}
IP6GATEWAYCONFIG=yes
#IP6GATEWAYCONFIG=no
# Take information from the file
IP6ROUTEFILE=/etc/sysconfig/network-ip6.conf
# Allow forwarding option, host is a router {yes|no}
IP6FORWARDING=yes
#IP6FORWARDING=no
## IPv6 tunnels
# for tunneling IPv6 packages over IPv4 routers to a IPv6 tunnel endpoint
# i.e. 6bone connection, ask a 6bone partner near your location for set up
# tunnel to you
# Allow IPv6 tunnel interface configuration {yes|no}
IP6TUNNELCONFIG=yes
#IP6TUNNELCONFIG=no
# Take information from the file
IP6TUNNELFILE=/etc/sysconfig/network-ip6.conf
## Router Advertisement Daemon
# Start Daemon {yes|no}
IP6RADVD=yes
#IP6RADVD=no
# Sepcify configuration file
#IP6RADVDFILE="/usr/inet6/etc/radvd.conf"
IP6RADVDFILE="/etc/sysconfig/radvd.conf"
# Specify options
IP6RADVDOPTIONS=""
#IP6RADVDOPTIONS="-d 9"
Los valores de configuracion de la interface son guardados por ejemplo en /etc/sysconfig/network-ip6.conf
- Este archivo esta especificado por las entradas en /etc/sysconfig/network- ip6
- La informacion en este archivo puede ser dividida en varios archivos
- Aqui puedes:
- Especificar varias direcciones IPv6 para cada interface.
- Especificar varias rutas de IPv6 por medio de Gateways (puertas de enlace) para cada interface.
- Especifica varios tuneles IPv6 a terminales de tuneles exteriores y tambien varios enrutamientos por medio de estos tuneles.
Ejemplo: network-ip6.conf
#!F:network-ip6.conf
#
#!P:/etc/sysconfig
#
#!S:root:root 440
#
#!D:IPv6 configuration file
#
#!C:Copyright 1997-1998 Peter Bieringer <pb@bieringer.de>
#
#!V:Version 2.12 16.05.1998
# Changes to
# 2.11: nothing important
# 2.12: NBMA tunnel configuration ready
# This file is needed by 'functions-ip6' version 2.xx
### The order in the file is only for a good overview, it is not really
### necessary. The important values are 'device' and 'key'!
################# Tunnel section
## Here you can configure tunnel endpoints. Be sure, that you set the device
## entry in a right way like 'sit1', 'sit2' and so on, otherwise you will get
## an error information from 'functions-ip6'
#Device Key IPv4 gateway address
#sit1 tunnel 137.193.227.41
#sit2 tunnel IPv4-Address
#sit3 tunnel IPv4-Address
# Tunnel route section
# Here you can specify several routes to your configured tunnels.
# More than one are possible!
#Device Key Network
#sit1 route 3ffe::/16
#sit2 route IPv6-Network/Prefix
#sit3 route IPv6-Network/Prefix
## Here you can configure tunnel endpoints in NBMA style. It's useful for
## setting up many tunnels at once.
#Device Key IPv4 gateway address Network
sit nbma 137.193.227.41 3ffe::/16
#sit nbma IPv4-Address IPv6-Network/Prefix
#sit nbma IPv4-Address IPv6-Network/Prefix
################# Interface section
## Here you can specify several addresses for your interfaces.
## More than one are possible!
#Device Key prefix suffix length
eth0 iface fec0:0:0:1 0:0:0:1 64
eth0 iface 3ffe:0400:0100:f101 0:0:0:1 64
################# Gateway section
## Here you can specify several routes to your gateway.
## More than one are possible!
#Device Key Gateway address Network
eth0 route fec0:0:0:1:0:0:0:20 fec0:0:0:2::/64
eth0 route 3ffe:0400:0100:f101:0:0:0:20 3ffe:0400:0100:f102::/64
Para que entiendan mejor las caracteristicas de este protocolo, hare una comparacion entre el IPv6 y el SSL (Secure Sockets Layer). Los aspectos de la encriptacion usados en el IPv6 se trataran a fondo en la InET Magazine 4.
Basandonos en las especificaciones del IP secure, mas las caracteristicas incorporadas en el protocolo (algunas de las cuales necesitan ser adiciones para el IPv4) sacamos ciertas conclusiones que nos sirven para compararlos: el IPv6 y el SSL no tienen cifrados restringidos, estan abiertos al publico en general. Ambos usan como algoritmos estandar el DES CBC (en realidad es un algoritmo muy vulnerable al crackeo, juego de niños para cualquier cypherpunk) pero se piensa en actualizar los algoritmos estandar de estos protocolos para incrementar su seguridad (3DES podria ser el algoritmo estandar). SSL es usado para los servicios de host a host, o host a servidor, mientras que el IPv6 es mas profundo al emplearse en los servicios de host a subnet o entre dos subnets (que es el mas usado). SSL es un protocolo de transporte de capas, mientras que el IPv6 esta dentro de la capa de una red, haciendo que TODOS los paquetes que pasen por la red sean controlados por la seguridad del mismo protocolo, en cambio el SSL solamente se encarga de los protocolos SMTP, HTTP y NNTP. IPv6 brinda confidencialidad en la informacion y presta un buen servicio para autentificacion a todo el paquete IP, no solo a los valores de carga. (entonces... quedaran obsoletos los ataques IP spoofing??). El IPv6, con la capacidad que tiene en el encabezado de ruta puede hacer mas dificiles los intentos remotos de analisis de trafico en una red.
IPv6 demuestra gran potencia sobre el SSL, pero gracias a las aplicaciones basadas en browser para comercio electronico o transacciones seguras en general y al incorporarse facilmente a navegadores como el Netscape Navigator, el SSL se seguira utilizando durante mas tiempo.
Hasta aqui llega la primera entrega. !esto es solo una introduccion!
En el proximo numero de InET entraremos a explorar los aspectos tecnicos misteriosos del IPv6 y nos centraremos en la seguridad de y criptografia de este nuevo protocolo.