identificables entre ellos y tampoco por terceras partes. Por ejemplo,
actualmente hay sitios web I2P internos (permitiendo publicación y hospedaje
anónimo) además de proxies HTTP hacia la web normal (permitiendo
navegación anónima). Disponer de la posibilidad de correr servidores
internamente en I2p es esencial, ya que es bastante probable que cualquier
proxy de salida hacia la Internet normal pudiera ser monitorizado, desactivado
o comprometido con el intento de ataques más maliciosos.</p>
<p>La red es en sí misma orientada a mensajes - es en esencia una capa IP segura
y anónima donde los mensajes son direccionados hacia claves criptográficas
(Destinos) y pueden ser considerablemente más largos que los paquetes IP.
Algunos ejemplos del uso de la red incluyen "eepsites" (servidores web
hospedando aplicaciones web normales dentro de I2P), un cliente BitTorrent
("I2PSnark"), o un sistema de almacenaje de datos distribuido. Con la ayuda
de la aplicación <ahref="i2ptunnel">I2PTunnel</a>,somos capaces de correr aplicaciones TCP/IP tradicionales sobre I2P, como SSH, IRC, un proxy Squid, e igualmente streaming de audio. Mucha gente no usará I2P directamente, o mismamente no necesitarán saber que lo están usando. En vez de eso, su percepción será la de una de las aplicaciones I2P habilitadas, o quizá la de una pequeña aplicación de control para activar y desactivar varios proxies que permitan funcionalidades de anonimato.</p>
<p>Una parte esencial de diseñar, desarrollar y probar una red anónima es definir el
<ahref="how_threatmodel">modelo de amenaza</a>, si partimos de que no existe lo que podría ser
considerado anonimato auténtico, solamente se puede hacer más costoso el
identificar a alguien. Brevemente, el propósito de I2P es permitir comunicarse
a la gente en ambientes arbitrariamente hostiles suministrando buen anonimato,
mezclado con suficiente tráfico de cobertura proporcionado por la actividad
de gente que requiere menos anonimato. De esta forma algunos usuarios pueden
evitar ser detectados por poderosos adversarios, mientras otros intentarán
ocultar su identidad de forma más débil,
<i>todo en la misma red</i>, donde los
mensajes de cada uno son ensencialmente indistinguibles de los del resto.</p>
<h2>¿Por qué?</h2>
<p> Puede haber multitud de razones por las que necesitemos un sistema que soporte
comunicación anónima, y cada cual tendrá su razonamiento personal. Hay muchos
<ahref="how_networkcomparisons">otros proyectos</a> trabajando en encontrar formas de suministrar
a la gente diferentes grados de anonimato a través de Internet, pero no
podríamos encontrar ninguno que se ajuste a nuestras necesidades o al
modelo de amenaza.</p>
<h2>¿Cómo?</h2>
<p>Un vistazo a la red muestra que se compone de una instalación de nodos
("routers") con un número de rutas virtuales unidireccionales entrantes y salientes (Tunnels, como se describen en la página <ahref="how_tunnelrouting">tunnel routing</a>).
Cada router está identificado por una RouterIdentity cifrada que es
permanente normalmente. Estos routers se comunican entre ellos a través
de mecanismo de transporte existentes (TCP, UDP, etc) enviandose
distintos mensajes. Las aplicaciones clientes tienen su propio identificador
criptográfico ("Destino") que las habilita para enviar y recibir mensajes.
Estos clientes pueden conectarse a cualquier router y autorizar la asignación
temporal ("arrendamiento") de varios tuneles que serán usados para enviar y recibir mensaje a través de la red. I2P tiene su propia <ahref="how_networkdatabase">base de datos de red</a> (utilizando una modificación del algoritmo Kademlia) para distribuir
información de rutas y contactos de forma segura.</p>
<p>En la imagen, Alice, Bob, Charlie and Dave están corriendo routers con un
simple Destino en su router local. Cada uno de ellos tiene un par de túneles
de dos saltos entrantes por destino (etiquetados como 1, 2, 3, 4, 5 y 6), y una
pequeña parte del grupo de los túneles de salida de esos routers se representa
con tuneles de salida de dos saltos. Para simplificar, los túneles entrantes de
Charlie y los de salida de Dave no se muestran, tampoco está el resto del grupo
de túneles de salida de cada router (típicamente compuesto por varios túneles
a la vez). Cuando Alice y Bob se comunican entre ellos, Alice envía un mensaje
por uno de sus túneles de salida (rosa) en dirección a uno de los túneles
entrantes (verde) de Bob (túnel 3 o 4). Ella conoce cómo enviar a los túneles
del router correcto mediante consultas a la base de datos de red, que está
constantemente actualizándose tan pronto cómo son autorizados nuevos
arrendamientos y expiran los viejos.</p>
<p>Si Bob quiere contestar a Alice, simplemente utilizará el mismo proceso
- envía un mensaje por uno de sus túneles de salida en dirección hacia
uno de los túneles de entrada de Alice (túnel 1 o 2). Para hacer las cosas
más sencillas, la mayor parte de los mensajes enviados entre Alice y Bob
usan el envoltorio <ahref="how_garlicrouting">garlic</a>, incluyendo la información de arrendamiento propia
del remitente en el paquete, de esta forma el destinatario puede contestar inmediatamente sin necesidad de buscar el dato en su base de datos de red.</p>
<p>Para tratar con un ámplio rango de ataques, I2P es completamente distribuida
sin recursos centralizados - no hay servidores de directorio manteniendo
estadísticas sobre el rendimiento y fiabilidad de los routers dentro de la red.
De esta forma cada router debe guardar y mantener los perfiles de varios routers
y es responsable de seleccionar los pares apropiados para satisfacer el anonimato, rendimiento y fiabilidad requeridos por los usuarios tal y como
se describe en la página <ahref="how_peerselection">selección de pares</a></p>
<p>La red hace uso de un significante número de <ahref="how_cryptography">técnicas criptográficas y algoritmos</a> -
una lista completa incluye cifrado El Gamal de 2048 bits,
AES de 256 bits en modo CBC con relleno PKCS#5, firmas DSA de
1024 bits, hashes SHA256, negociación de conexiones Diffie-Hellman de
2048 bits con autenticación estación a estación y <ahref="how_elgamalaes">ElGamal / AES+SessionTag</a>.</p>
<p>El contenido enviado sobre I2P está cifrado a través del cifrado garlic de tres
capas (usado para verificar la entrega del mensaje a destinatario), cifrado
de túnel (todos los mensajes cruzando a través de un túnel están cifrados desde
el túnel gateway hasta el túnel destino final) y cifrado de la capa de transporte
inter-router (e. g. el transporte TCP usa AES256 con claves efímeras).</p>
<p>El cifrado (I2CP) punto a punto (aplicación cliente hacia aplicación servidor)
fué deshabilitado en la versión 0.6 de I2P; el cifrado (garlic) punto a punto
(router cliente I2P hacia router servidor I2P) desde el router de Alice "a"
hasta el router de Bob "h" permanece. ¡Observa el diferente uso de términos!
Todos los datos desde "a" hasta "h" están cifrados punto a punto, pero las
conexiones I2CP entre el router I2P y las aplicaciones no son cifradas punto
a punto. "A" y "h" son los routers de Alice y Bob, mientras que, y siguiendo
el diagrama, Alice y Bob son las aplicaciones corriendo encima de I2P.</p>
<divclass="box"style="text-align:center;"><imgsrc="_static/images/endToEndEncryption.png"alt="End to end layered encryption"title="End to end layered encryption."/></div>
<code>O(log(N))</code> debido al algoritmo de <ahref="how_networkdatabase">base de datos de red</a>, mientras que los mensajes punto a punto serían <code>O(1)</code> (escala libre), puesto que los mensajes pasan por K saltos a través del túnel de salida y otros
K saltos por el túnel de entrada, donde K no es mayor de 3. El tamaño de la