Ejemplo de comunicación segura de criptografía de próxima generación (CNG)
El ejemplo de comunicación segura de criptografía de próxima generación (CNG) representa una solución criptográfica en un ataque de tipo "Man in the middle".Simula la comunicación entre tres personas (Alice, Bob y Mallory) en una compañía de publicidad ficticia.En el ejemplo se utilizan las clases CNG, un transporte de canalizaciones con nombre y ventanas de la consola interactivas para mostrar las soluciones de seguridad en un ataque de tipo "Man in the middle".
Se trata de un ejemplo avanzado en el que se presuponen conocimientos en materia de criptografía, comunicación entre procesos y seguridad de red.
Nota
Las clases CNG solo están disponibles en Windows Vista y los subsiguientes sistemas operativos Windows.
En este tema se proporciona información general sobre el ejemplo CNG.En él se tratan los siguientes aspectos:
Escenario del ejemplo
Vulnerabilidades de seguridad de la herramienta IM
Versión 1: Canalizaciones con nombre
Versiones de 2 a 5: Mejoras de seguridad incrementales
Resultados de pruebas
Código del ejemplo:
Convenciones de nomenclatura
Información detallada
Escenario del ejemplo
Una compañía de publicidad desarrolla una herramienta de mensajería instantánea (IM) que se ejecuta en el escritorio.Todos los empleados pueden ver los mensajes que contiene la herramienta.
Alice y Bob trabajan en el departamento de ventas.Utilizan la herramienta IM para enviarse entre sí los contactos de ventas.Mallory es un ingeniero de redes que trabaja en operaciones de sistemas.Ha estado controlando en secreto los mensajes de Alice y Bob.Una vez al mes, copia los valiosos contactos de ventas y los vende a la competencia para su beneficio personal.
Después de varios meses, la compañía comprende que alguien está robando los contactos de ventas y que la comunicación entre departamentos se ha visto comprometida.Deciden crear una nueva herramienta IM y comienzan a analizar la seguridad de la herramienta actual.
Vulnerabilidades de seguridad de la herramienta IM
La compañía comprende que la herramienta IM actual tiene las siguientes vulnerabilidades de seguridad:
Transfiere los mensajes en texto simple (sin cifrar).
Transmite dichos mensajes a través de la red corporativa.
Cualquier persona puede ver, e incluso grabar, los mensajes.
La compañía decide que la nueva herramienta IM puede resolver estos problemas habilitando la comunicación punto a punto en la red corporativa.
Versión 1: Canalizaciones con nombre
La compañía crea una nueva herramienta IM que se basa en las canalizaciones con nombre (o canales) para realizar la comunicación entre procesos (IPC).Esta versión no utiliza cifrado ni firmas digitales.
Alice y Bob reciben las instrucciones siguientes:
Deben crear una conexión inicial a través de un canal denominado PublicChannel.
Deben enviarse entre sí el nombre de un canal privado y, a continuación, desconectarse inmediatamente de PublicChannel.
Deben conectarse utilizando el canal privado y enviarse entre sí los contactos de ventas.
La compañía espera que los canales de comunicación punto a punto proporcionen el suficiente aislamiento del resto de la red corporativa.Pronto ven que esta solución es insuficiente.Mallory descubre cómo puede superar al nuevo sistema.Sigue robando los contactos de ventas y comienza a ocultar sus fechorías cambiando cuidadosamente las direcciones de los contactos de ventas.
La compañía decide agregar nuevas medidas de seguridad a la herramienta IM para detener los robos.
Versiones de 2 a 5: Mejoras de seguridad incrementales
El nuevo software se prueba y se mejora durante varios meses.En el momento en que se completan las pruebas, se han creado cuatro versiones de la herramienta IM.Cada versión se compila basándose en la versión anterior:
La versión 2 incorpora el cifrado basado en CNG que utiliza pares de claves pública y privada.
La versión 3 utiliza una firma digital para firmar las claves criptográficas y los mensajes.
La versión 4 agrega un canal privado para transmitir una firma digital con la que se firman las claves criptográficas y los mensajes.
La versión 5 detiene las intrusiones al finalizar todas las sesiones de IM que reciben claves firmadas con firmas no válidas.
Resultados de pruebas
La versión 2 utiliza un algoritmo de cifrado de alta seguridad.Para descifrar el cifrado, se requeriría una gran cantidad de recursos y tiempo.Por ello, la compañía se sorprende cuando se da cuenta de que la solución está en peligro.
La versión 3, que utiliza firmas digitales, no impide tampoco los robos.Sin embargo, esta versión ayuda a la compañía a hacer un importante descubrimiento: si las claves criptográficas y la firma digital se interceptan y sustituyen, el canal que se utiliza para transmitir las claves y la firma debe ser el origen del problema.
Para comprobar esta tesis, se agrega un canal privado a la versión 4 para transmitir una firma digital.La versión 4 también muestra una advertencia cuando una clave o un mensaje tiene una firma no válida.La versión 4 solo se proporciona a dos personas de la compañía: Alice y Bob.La herramienta comienza a mostrar advertencias de seguridad tan pronto como Alice y Bob envían sus primeros mensajes.La compañía comprende finalmente que su red está sufriendo un ataque de tipo "Man in the middle".
La versión 5 es igual que la versión 4, pero finaliza la sesión cuando se produce la primera infracción de seguridad.En cuanto se instala esta versión, se acaba el robo de los contactos de ventas.
Código del ejemplo:
El código que se proporciona con este ejemplo simula estas cinco versiones de seguridad.En Información general sobre el código fuente (Ejemplo CNG) encontrará información general sobre el código.
Nota
En este ejemplo no se proporciona una solución de seguridad completa.Su único propósito es mostrar la API CNG en un escenario de seguridad plausible.No corresponde al ámbito de este ejemplo proporcionar una aplicación de seguridad completa.
Convenciones de nomenclatura
La documentación de este ejemplo hace referencia a las cinco versiones de software y sus niveles de seguridad correspondientes mediante un número (por ejemplo, "versión 1", versión 2", etc.).
Según el contexto, los nombres "Alice", "Bob" y "Mallory" pueden hacer referencia a las tres personas implicadas en el escenario del ejemplo o a las tres aplicaciones de Visual Studio.Para simplificar, en la documentación se usa el mismo nombre para hacer referencia a ambas cosas.Por ejemplo, "Alice carga automáticamente Bob y Mallory" quiere decir que la aplicación Alice carga automáticamente las aplicaciones Bob y Mallory.
Información detallada
En los temas siguientes se proporciona información detallada sobre el escenario y el código del ejemplo:
En Implementar un ataque de tipo "Man in the middle" se describe cómo se muestra la suplantación en el ejemplo, que es un ataque común de tipo "Man in the middle".
En Información general sobre el algoritmo ECDH se explican brevemente las matemáticas del algoritmo Diffie-Hellman de curva elíptica (ECDH).
En Intercambio de mensajes y claves paso a paso se proporciona una guía paso a paso de los procedimientos de intercambio de mensajes y claves que se utilizan en las cinco versiones del ejemplo.
En Cómo: Generar y ejecutar el ejemplo CNG se describe la arquitectura del ejemplo y se proporcionan instrucciones sobre la compilación, el motor en tiempo de ejecución y sus usos.Esta sección también contiene listados de código fuente.
En Información general sobre el código fuente se describe la interacción y el flujo de los componentes del código.
En Análisis de código de las clases de utilidad se describe el contenido y la finalidad del archivo Utilities.cs.
En Análisis de código de la clase ChannelManager se describe el contenido y la finalidad del archivo ChannelManager.cs.
En Análisis de código de la clase Communicator se describe el contenido y la finalidad del archivo Communicator.cs.
En Resultado esperado se muestra el resultado del ejemplo de código.
Vea también
Conceptos
Modelo de criptografía de .NET Framework