Terminología: un canal seguro es un canal de comunicación que está protegido contra ataques de hombre en el medio y espionaje. . El cifrado solo no hace un canal seguro. La forma sencilla de establecer un canal seguro es utilizar SSL / TLS . pero hay sutilezas.
Encriptar el tráfico es solo una parte de la protección contra los ataques de intermediarios. Esto evita que el atacante decodifique el tráfico, porque no conoce la clave de descifrado. Esto también evita que el atacante inyecte tráfico arbitrario, porque no conoce la clave de cifrado.
Con solo cifrado, el hombre en el medio puede inyectar algo al generar un texto cifrado. Es posible que no sepa qué es el texto simple, pero eso aún puede causar problemas: el destinatario está obteniendo datos confusos, lo que incluso podría desencadenar un error del analizador. Un canal seguro no solo proporciona cifrado, sino también autenticación, una verificación de que los datos provienen de una fuente legítima.
Si el protocolo de comunicación se basa en un paquete, cada paquete debe tener una etiqueta que indique quién lo envió (para que el atacante no pueda enviar el tráfico de una parte a sí mismo) y algún tipo de número de secuencia (para que el el atacante no puede reenviar un paquete antiguo, que ahora puede tener un efecto diferente).
Por supuesto, si el atacante puede suprimir el tráfico además de escuchar e inyectar, el atacante puede interrumpir la comunicación cortándola por completo, reordenando paquetes, etc. Los paquetes que se reordenan pueden detectarse (y los paquetes se pueden reordenar o desechar) usar correctamente los números de secuencia para autenticar la comunicación (que es más fuerte que autenticar cada paquete individual). Ninguna cantidad de criptografía eliminará la capacidad del atacante para bloquear todo el tráfico, si puede eliminar paquetes. Necesitas medios físicos: mensajeros armados, transmisores de radio que sean más fuertes que las interferencias del adversario, ...
Es posible que el cifrado no siempre garantice que la comunicación sea confidencial. La comunicación puede permitir canales laterales . En particular, el tamaño y el tiempo de los paquetes pueden ser reveladores. Por ejemplo:
- Si el 5 de junio de 1944 la BBC hubiera transmitido repentinamente una serie de mensajes codificados, eso habría indicado que algo estaba en marcha, incluso si los mensajes no hubieran podido ser resueltos. Solución: envíe mensajes codificados todo el tiempo y, si no tiene nada que enviar, envíe mensajes aleatorios que no se puedan distinguir de los mensajes útiles.
- El tamaño del mensaje puede ser una indicación. Por ejemplo, si se envían órdenes militares a un rnpwbhm en lugar de a un mcouzjooyb, sabrías que el alcance es lo suficientemente importante como para involucrar a un capitán en lugar de un teniente, incluso si no hubieras podido descifrar el rango. Remedio: usar códigos de longitud fija para conceptos relacionados; dualmente, varíe aleatoriamente la longitud de los términos potencialmente reconocibles (por ejemplo, mediante la ortografía alternativa de nombres propios, o agregue de forma más sistemática basura aleatoria). (Tanto el ataque como el remedio que cito aquí son de las historias de la Segunda Guerra Mundial, aunque no tengo la referencia a la mano).
- El tráfico de voz es particularmente vulnerable a reconstrucción porque normalmente está comprimido y Enviado en tiempo real. El ritmo de los paquetes solo puede ser suficiente para reconstruir el habla en condiciones de laboratorio. Remedio: comprima menos y acepte más retraso, por ejemplo, envíe un paquete de tamaño fijo cada N milisegundos.
Otra dificultad para protegerse contra los ataques del hombre en el medio es iniciar la comunicación. Con una clave precompartida, esto no es un problema, pero si las dos partes no se conocen de antemano, el atacante podría ser un hombre en el medio directo: cuando Alicia intenta establecer un canal con Bob, Eve intercepta todos los paquetes y le permite a Alice establecer un canal con ella, luego establece un canal con Bob y transmite el tráfico o no como le plazca. Esta es la razón por la que SSL requiere una verificación de certificado: el cliente verifica que el canal que está configurando está en el servidor deseado (y, opcionalmente, el servidor realiza la verificación simétrica).