¿Cuál sería el equivalente a nivel de aplicación de los secretos de comunicación dinámica?

7

Probablemente solo sea lo suficientemente grueso y suficientemente nuevo para los problemas relacionados con la seguridad en el desarrollo de software, pero como no puedo encontrar información y me he quedado atascado en Google por un tiempo.

Recientemente encontré un libro, Secretos dinámicos en la seguridad de la comunicación (también disponible en Amazon) y ahora me pregunto, Si esta técnica tiene un equivalente en la programación de socket? También está el documento Creando Secretos Compartidos Fuera de Thin Air que tiene una buena descripción en el idea.

Brevemente, como lo entiendo, la idea es generar dinámicamente secretos de comunicación basados en las propiedades de transmisión en canales inalámbricos (por ejemplo, fallas) que son difíciles de adivinar para un adversario, si no están presentes en muchos lugares del medio de transmisión inalámbrico. . Por lo tanto, el canal de comunicación sería seguro, incluso si el adversario tuviera una gran capacidad de cálculo a disposición. Esto también permitiría a las partes participantes detectar si el tráfico ha sido secuestrado.

¿Existe algún método conocido para generar secretos dinámicos basados en, por ejemplo, ¿Se intercambian todos los mensajes y se obtiene una seguridad tal que permite detectar el secuestro de tráfico y hacer que las comunicaciones sean resistentes incluso a un adversario con mucha potencia de cálculo? No busco Diffie-Hellman , ya que solo se aplica en la iniciación, pero tal vez algo como IPSec Encapsulating Security Payload ?

    
pregunta Veksi 12.06.2013 - 22:15
fuente

3 respuestas

8

El segundo artículo (Safaka et al ) describe un protocolo que se basa en un protocolo similar al protocolo Cachin-Maurer que describo al final de esta respuesta . La premisa es que hay un canal de comunicación de transmisión no confiable entre las partes involucradas, de modo que cuando una parte emite una lista de "paquetes", todas las demás solo ven algunos del Paquetes, y no todos ellos ven los mismos paquetes. Así que Alice y Bob, que desean establecer un secreto compartido, solo tienen que emitir muchos paquetes, registrar lo que reciben y luego decirse qué paquete recibieron (se hace referencia a los paquetes con una ID convencional). ). Con alta probabilidad, el atacante no pudo ver todos los paquetes que tanto Alice como Bob registraron, por lo que la concatenación de todos los paquetes, adecuadamente hash, es una buena clave compartida.

En el protocolo Cachin-Maurer, la transmisión es de una fuente aleatoria de alto ancho de banda, y la falta de fiabilidad de la recepción se debe a la imposibilidad de grabar todos los datos, debido a su gran tamaño. En el protocolo de Safaka, se supone que el medio de transporte no es confiable, lo cual es un poco optimista porque el atacante puede invertir en una antena buena , algo mucho mejor para captar ondas de radio que los adaptadores WiFi básicos de gente honesta.

Llevar ese principio al nivel de la aplicación es difícil porque la característica realmente básica del "nivel de la aplicación", la razón por la que lo llamamos "aplicación", es su confiabilidad inherente . Por ejemplo, los paquetes de IP sin procesar no son confiables: pueden perderse, duplicarse, a veces alterarse (lo he visto: un enrutador Cisco con mala memoria RAM) y llegar fuera de servicio. Sin embargo, lo primero que hacen las aplicaciones es aplicar TCP , que brinda confiabilidad (a través de reconocimientos y reemisiones). Cuando el transporte es confiable, es confiable para todos, incluido el atacante.

Esta es una tendencia genérica: el tipo de protocolo de intercambio de claves del que estamos hablando debe basarse en algún proceso físico que impida cierta imprevisibilidad; En el protocolo de Safaka, el proceso físico es el ruido de radio que interrumpe la recepción de algunos paquetes. El mundo informático, por otro lado, es matemático más que físico: vive y se esfuerza en un mundo abstracto donde un poco es un poco y no se mueve al azar. De hecho, cuando se invierte un bit de RAM (se dice que esto ocurre aproximadamente una vez cada tres meses en promedio para una máquina determinada, debido a los rayos cósmicos ), la máquina puede bloquearse, dependiendo de dónde se encuentre dicho bit. Todo el principio de la informatización es huir del mundo físico y mantenerlo lo más alejado posible. Esto evita de forma inherente el uso eficiente de los protocolos de tipo Safaka, y más aún cuando subimos más arriba en la pila de capas, es decir, "a nivel de aplicación", como usted dice.

Un punto secundario a destacar es que estos protocolos son intercambio de claves, no autenticación . Pueden proporcionar seguridad solo contra atacantes pasivos, que observan pero no interfieren. Este no es un supuesto realista hoy en día. Muchos ataques a la red involucran acciones positivas de los atacantes; y algunos atacantes de bajo poder pueden ser descritos como "solo activos": a menudo es mucho más fácil enviar paquetes falsos a un servidor que escuchar a escondidas paquetes entre un servidor y un cliente honesto.

Por lo tanto, se necesita algo de autenticación: no desea intercambiar una clave en general, sino una clave con un cliente o servidor específico. Para hacer eso, necesita algún mecanismo de autenticación que ocurra lo suficientemente temprano en el proceso, por ejemplo. con claves públicas o algunos PAKE , y vuelve a la "criptografía normal", haciendo que los protocolos de tipo Safaka sean más bien sin sentido.

    
respondido por el Tom Leek 19.07.2013 - 19:14
fuente
3

Tom ha hecho algunos buenos puntos. Este esquema es para una red con pérdidas. El nivel de aplicación puede usar algo como UDP, una cantidad ridícula de paquetes y estadísticas sobre el tiempo enviado contra el recibido. No es tan bueno como el dominio deseado: redes con pérdidas como las inalámbricas. Entonces, parece que suena difícil de hacer y eso es lo que me especializo, así que ¿por qué no intentarlo de todas formas? ;)

(Nota importante: es mejor usar las bibliotecas y técnicas de criptografía existentes para trabajos importantes. Mucho más seguro, más práctico, etc. Esto es solo para fines educativos y de entretenimiento.)

El supuesto principal es que tienen presencia limitada. No están en todos los puntos finales, por lo que pierden paquetes. El punto clave es que pierden paquetes. Podemos hacerlo a nivel de aplicación. Aquí hay algunas posibilidades.

  1. Use varios canales de comunicación a la vez. Envíe UDP, correos electrónicos, pings y tal vez paquetes de amplificación de DNS a la vez.

  2. Use un relé de terceros que permita conexiones SSL y no registre el tráfico. Dividir la clave entre varios si no quieres confiar solo en uno. Tiene aproximadamente el mismo efecto que otros protocolos en la práctica.

  3. Cuando use relés o paquetes no confiables, envíelos en una ruta específica que vaya a países con una sola fibra submarina que los conecte. Además, enviar a la hora punta. La imprevisibilidad de la congestión debería ayudar.

  4. Dividir partes entre UDP y correo electrónico enviado a través de Mailinator.

Honestamente, los esquemas que se basan en la ofuscación del intercambio, tanto el protocolo como los datos, son mejores que los que se basan en el ruido del canal. Esa propiedad del canal no se puede confiar en nuestro Internet bastante optimizado. Como se dijo antes, sin embargo, todo esto es solo para patadas.

    
respondido por el Nick P 21.07.2013 - 04:07
fuente
0

Los secretos dinámicos, en general, son una modificación del modelo tradicional (a.k.a. Kerckhoffs) del diseño de cifrado de cifrado de clave. Kerckhoffs afirma que un sistema de cifrado debe asumir que todo, excepto la clave, es conocido por el adversario. Tal suposición es válida y cercana a la realidad en el escenario del campo de batalla, donde los soldados llevan máquinas de cifrado y mantienen códigos secretos en sus cerebros (si pueden recordar con tanta claridad ...)

Este modelo no es 100% práctico en el mundo de hoy, especialmente en el mundo civil de comunicaciones seguras. Por un lado, no es confiable asumir que la clave siempre es un secreto. Adversary roba el nombre de usuario, la contraseña y las claves criptográficas de vez en cuando, utilizando programas troyanos, por ejemplo. Por otro lado, es una fuerte suposición de que el adversario sabe todo lo demás. Por ejemplo, es prácticamente imposible escuchar cada bit transmitido en las comunicaciones inalámbricas. Estos pensamientos motivan a la gente de UMass (Xiao et al.) A generar la idea de secretos dinámicos y redactar un documento de INFOCOM y el libro "Secretos dinámicos en la seguridad de la comunicación". Presentaron la idea a sus colegas europeos y luego siguieron la investigación y generaron el nuevo documento INFOCOM.

    
respondido por el cocoon 14.08.2013 - 03:22
fuente

Lea otras preguntas en las etiquetas