Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| pan:comunicaciones_anonimas_v2 [2026/01/06 21:55] – thejuanvisu | pan:comunicaciones_anonimas_v2 [2026/01/07 16:53] (actual) – thejuanvisu | ||
|---|---|---|---|
| Línea 58: | Línea 58: | ||
| {{drawio> | {{drawio> | ||
| + | |||
| + | * A través de la red mix se realizan 2 operaciones en cada etapa: | ||
| + | * Cada nodo $i$ usa su clave privada $K_i^{-1}$ para eliminar una clave de cifrado de cada una de sus entradas | ||
| + | * Estos mensajes parcialmente descifrados se permutan en la etapa $i$ antes de enviarse a la siguiente etapa con un orden aleatorio | ||
| + | * La comunicación en dos direcciones es posible incluyendo un RPI (Return Path Information) y claves asimétricas compartidas $K^s_s$ junto con el mensaje $m$ donde $A_i$ es la dirección de la etapa $i$, $r_i$ es una cadena aleatoria usada para aleatorizar el cifrado de la capa $i$ y $K_i^s$ son claves simétricas compartidas entre el remitente y la etapa $i$. | ||
| + | * Por lo tanto, el receptor recibirá la siguiente salida de la red mix: | ||
| + | <WRAP box> | ||
| + | $E_kx (m || RPI || K_s^s)$ | ||
| + | </ | ||
| + | * Tras el descifrado, el receptor envía la respuesta $m'$ a $A_n$ como: | ||
| + | <WRAP box> | ||
| + | $E_{k_s^s} [m'] || RPI$ | ||
| + | </ | ||
| + | * El receptor no conoce el camino hasta el receptor, por lo que no puede cifrar el mensaje de la forma típica, solo puede hacerlo usando la clave $K^s_s$ | ||
| + | * Cada etapa retira una capa de RPI, obteniendo la siguiente dirección y la clave de la siguiente dirección $K^s_i$, la cual se usa para volver a cifrar el mensaje restante. | ||
| + | |||
| + | ==== Cadena de recifrado ==== | ||
| + | Tipo de red mix basada en el sistema criptográfico ElGamal. El remitente cifra el mensaje $m$ usando la clave pública $K$ de la red mix: | ||
| + | |||
| + | <WRAP box> | ||
| + | $E_k(m,r) = g^r || (A_x || m)K^r$ | ||
| + | </ | ||
| + | |||
| + | Donde $g$ es un generador y $r$ es una cadena aleatoria. La clave pública K puede ser definida como: | ||
| + | <WRAP box> | ||
| + | $K = ∏^n_{i=1} K_i = Π^n_{i=1} g^{d_i} = g^{Σ^n_{i=1}d_i}$ | ||
| + | </ | ||
| + | Donde $K_i = g^{d_i}$ y $d_i$ so las claves públcia y privadas de la etapa i. | ||
| + | * Cada nodo i recifra sus entradas usando cadenas aleatorias para cambiar su apariencia. | ||
| + | * Como en la cadena de descifrado, todos los mensajes son procesados y permutados antes de ser enviados al siguiente nodo. | ||
| + | * Una vez las n etapas son completadas, | ||
| + | * La comunicación bidireccional también es posible enviando 3 cifrados ElGamal a la red mix donde $K$ es la clave pública de la red, $A_s$ y $A_x$ son las direcciones del remitente y el receptor, y $K_s$ y $K_x$ son las claves públicas para ElGamal del emisor y el receptor. | ||
| + | |||
| + | ==== Comparación de Cadena de Cifrado y Cadena de Recifrado ==== | ||
| + | ^ Tipo ^ Ventajas | ||
| + | | Cadeba de descifrado | ||
| + | | Cadena de Recifrado | ||
| + | |||
| + | ===== Topologías ===== | ||
| + | ==== Cascada ==== | ||
| + | Consiste en una secuencia fija de etapas las cuales son comunes para cada emisor o receptor. | ||
| + | * La primera etapa inizializa la mezcla de los mensajes de todos los emsiores, agrupándolos en grupos de tamaño $l$ los cuales se procesan de forma síncrona. | ||
| + | * Una etapa defectuosa puede comprometer toda la red | ||
| + | * Vulnerable a ataques pasivos mediante el trazado de mensajes a través de los grupos mezclados. Cuanto más ghrande sea el grupo, más difícil es seguir el mensaje. | ||
| + | * Vulnerable a ataques activos, pero el atacante debe tener cierto control sobre la red mix | ||
| + | * Debe controlar múltiples etapas para poder trazar mensajes. | ||
| + | * Tiene que manupular las entradas de la red para inyectar tráfico controlado. | ||
| + | |||
| + | |||
| + | ==== Enrutado Libre ==== | ||
| + | Consiste en una serie de etapas interconectadas que no tienen por que ser dependientes. | ||
| + | * Cualquier etapa puede recibir entradas de los emisores, también pueden mandar una entrada directamente a un receptor. | ||
| + | * Una etapa debe también recibir las salidas producidas por cualquier otra etapa a la que este conectada. | ||
| + | * Cada etapa debe esperar hasta tener $l$ mensajes para agruparlos, pero solo por un período de tiempo fijo, pasado dicho período, los mensajes se pasan a la siguiente etapa. | ||
| + | * Este modo de operación es asíncrono ya que los mensajes pueden quedar estancados hasta que se cree un grupo o pueden ser enviados antes dependeindo de su ruta. | ||
| + | * Vulnerable a ataques pasivos, se pueden trazar los mensajes debido al tráfico no uniforme entre etapas, además de por el decremento de capas en cada etapa. | ||
| + | * Vulnerable a ataques activos, se puede inundar la red para aislar un objetivo. | ||
| + | |||
| + | ===== Esquema de verificación ===== | ||
| + | Verificar una red ivolucra el análisis de como de correcto es el procedimiento de acuerdo a los siguientes criterios: | ||
| + | * El grupo de entrada ha sido procesado/ | ||
| + | * El mensaje no ha sido corrompido | ||
| + | * No se han añadido/ | ||
| + | |||
| + | La verificación se puede realizar a varios niveles: | ||
| + | * Salida de la red entera | ||
| + | * Salidas de cada una de las etapas | ||
| + | |||
| + | Estos mecanismos en general no se pueden aplicar a las redes mix de enrutado libre | ||
| + | |||
| + | ==== Red mix de emisor verificable ==== | ||
| + | Este esquema solo detecta mensajes corruptos en la salida de la red. Para implementar este esquema de verificación el emisor incluye un cheksum con el mensaje: | ||
| + | * Tanto el checksum como el mensaje son cifrados con la clave de cifrado del emisor | ||
| + | * Cualquiera puede detectar si el mensaje ha sido alterado al descifrarlo con la clave pública del emisor. | ||
| + | |||
| + | No detecta la adición de mensajes. La eliminación de mensajes puede ser solo detectada si el emisor revisa si su propio mensaje está presente en la salida de la red. No se pueden identificar las etapas comprometidas. | ||
| + | |||
| + | ==== Red mix de etapa verificable ==== | ||
| + | |||
| + | Cada estapa verifica las salidas de la red usando protocolos adicionales para asegurar que todo se hace de forma correcta. | ||
| + | * Se crean numerosas copias del grupo de entrada o se repite toda la mezcla para detectar etapas comprometidas en las cadenas de recifrado. | ||
| + | * Revelando secretos o usando pruebas de cero conocimiento de forma que las operaciones en ciertas etapas pueden ser verificadas por otros. | ||
| + | * Mecanismos de recuperación para reiniciar las operaciones en caso de que se detecten comportamientos extraños. | ||
| + | |||
| + | ====== Onion Routing ====== | ||
| + | Esquema basado en la idea de enrutado a través de varios nodos con varias capas de cifrado. Un mensaje es cifrado capa por capa usando las calves de todos los nodos que hay en el camino al receptor. Cada nodo deshace una capa descifrandola de forma que la dirección al siguiente salto es revelada y envía el resto del mensaje al siguiente nodo. Es el opuesto a las redes mix, no oculta el tráfico de red mezcalndo mensajes. Este mecanismo está compuesto por las siguientes entidades: | ||
| + | * **Aplicación cliente** (Envía el mensaje) | ||
| + | * **Onion Proxy**: Determina el camino desde el origen hasta el destino (n rutas diferentes), | ||
| + | * **Routers**: | ||
| + | * **Tuneles de entrada y salida**: En tunel de entrada puede ver e interactuar con el emisor mientras que el de salida puede hacerlo con el receptor. | ||
| + | |||
| + | {{drawio> | ||
| + | |||
| + | ===== La Idea Original ===== | ||
| + | El procedimiento es similar al del esquema de cadena de descifrado de las redes mix con la excepción de que el número de nodos usados y su orden no es fijo: | ||
| + | <WRAP box> | ||
| + | $O = A_1 || E_{k_1} (A_2 || E_{K_2}(A_3 || ... E_{k_n}(A_x || m)))$ | ||
| + | </ | ||
| + | Donde $A_i$ es la dirección del router $i$. En este caso, si el receptor responde al mensaje, la red es capaz de mantener un estado que permita enrutar de vuelta la respuesta al mensaje a través del mismo camino. La respuesta es construida por todos los routers, que añaden una capa de cifrado en cada paso usando sus claves privadas. Una vez que todos los routers han completado sus operaciones, | ||
| + | <WRAP box> | ||
| + | $R0 = E_{sk_1}(E_{sk_2}(... E_{SK_n}(r)))$ | ||
| + | </ | ||
| + | |||
| + | ===== TOR ===== | ||
| + | La implementación más popular del Onion Routing es TOR, que es considerada una versión evolucionada de la idea original, incluyendo algunas mejoras y mecanismos que lo hacen utilizable en aplicaciones reales. No es una red P2P, los usuarios no actuan independientemente, | ||
| + | |||
| + | Algunos routers también pueden actuar como directorios que muestran el estado de la red. No es seguro contra ataques de punto a punto, si la misma entidad contral el primer y último nodo de un camino puede inferir el emisor, el receptor y el contenido del mensaje. Tampoco oculta la identidad del emisor a nivel de aplicación. Construye los circuitos de forma diferente a la idea original: | ||
| + | * Los circuitos de TOR son siempre de 3 nodos: | ||
| + | * Primero se selecciona el tunel de salida ya que algunos pueden filtrar tráfico específico o puede no tener capacidad suficiente | ||
| + | * Un nodo se selecciona solo una vez. | ||
| + | * Para evitar que una entidad controle el túnel de entrada y el de salida, se aplican algunas reglas. | ||
| + | * El primer nodo es un "Nodo Guardia" | ||
| + | * Los circuítos son rotados periódicamente. | ||
| + | |||
| + | Cada router tiene una clave de identidad de largo plazo y una clave onion de corto plazo. La clave de largo plazo se usa para firmar certificados TLS que se usan para comunicarse con otros routers Onion y proxies. La clave de corto plazo es rotada periódicamente y se usa para construir circuitos y negociar claves para el cifrado y descifrado de los mensajes. | ||
| + | |||
| + | La red TOR construye los circuitos de una forma diferente a la idea original. El camino $A$ -> $C$ es creado siguiendo una aproximación interactive e incremental. | ||
| + | * Cada segmento del camino es construido o destruido progresivamente usando mensajes de control para crear, extender o eliminar el circuito. | ||
| + | * Cada segmento es identificado de forma indemendiente a trawvés de un identificador de circuito: | ||
| + | {{drawio> | ||
| + | * Durante la creación del circuito, se negocia una clave simétrica entre el emisor y cada router usando el protocolo Diffie-Hellman según se van construyendo los segmentos. | ||
| + | |||
| + | Una vez se ha construido el circuito y las claves han sido establecidas, | ||
| + | * El Onion Proxy cifra el mensaje usando las claves negociadas | ||
| + | * Los paquetes tienen un tamaño fijo de 512B y contienen una cabecera (Información de enrutado) y la carga (el mensaje). | ||
| + | * Usando la información identificativa del circuito, los routers pueden enviar los paquetes de forma apropiada por el caminio. | ||
| + | * En cada salto, los routers descifran una capa de cifrado usando la clave compartida | ||
| + | * En el caso de las respuestas, se realiza un cifrado en vez de un descifrado en cada capa. | ||
| + | |||
| + | ===== Servicios ocultos ===== | ||
| + | La idea es que tanto usuarios como el servidor no se conozcan (No conocen sus direcciones IP). Para conseguir esto, el servidor solicita diferentes routers (Normalmente 3) para actuar como punto de introducción. Una vez seleccionados los puntos de introducción, | ||
| + | - En vez de abrir la conexión directamente, | ||
| + | - El cliente envía la petición al punto de encuento preguntando por el servidor oculto. | ||
| + | - El punto de encuentro crea un circuito hasta el punto de introducción para enviar los datos al servidor oculto que los puede aceptar o rechazar. | ||
| + | - Si la petición es aceptada, el servicio oculto crea un circuito diferente hasta el punto de encuentro, donde conecta el cliente y el servicio. | ||