¿Comunicación segura bidireccional usando dos pares de claves públicas / privadas?

3

Digamos que quiero crear un protocolo para comunicarme de manera segura entre dos puntos finales: cada uno de los puntos finales conoce la clave pública de la otra y todos los datos intercambiados se cifran con la clave pública y se descifran con la clave privada del destinatario. Mi pregunta es aparte del hombre en el ataque central, que puede evitarse mediante el uso de una PKI (?). ¿A qué otros tipos de ataque es vulnerable este protocolo? ¿Y cómo se compara con SSL, ya que hemos eliminado el paso de intercambio inicial?

    
pregunta Ryan Saka 08.05.2013 - 23:53
fuente

3 respuestas

3

Este protocolo es vulnerable a un ataque de reproducción. En notación común

A -> I_B: {m}_PK(B)
I_A -> B: {m}_PK(B)
I_A -> B: {m}_PK(B)

Si m era un mensaje que decía loan me $10 y B era un poco ingenuo ...

Este protocolo también es vulnerable a los ataques de reordenación de mensajes, por ejemplo,

A -> I_B: {m}_PK(B)
A -> I_B: {m'}_PK(B)
I_A -> B: {m'}_PK(B)
I_A -> B: {m}_PK(B)

Si asumimos RSA, entonces si no hay relleno, dicho protocolo sería débil para los ataques de cifrado homomórficos.

Varios otros ataques son obvios pero no interesantes (como la denegación de servicio por parte del intruso que bloquea todos los mensajes, los ataques de diccionario que permiten al atacante verificar una conjetura del mensaje, los ataques de diccionario que permiten al atacante detectar mensajes repetidos, ataques de truncamiento de mensajes, etc. .)

    
respondido por el jhoyla 08.05.2013 - 23:57
fuente
1

Un PKI es un sistema para permitir la distribución segura de claves públicas. Los certificados emitidos por la PKI permiten que los distintos sistemas conozcan las claves públicas de cada uno con cierto nivel de garantía de que las claves son genuinas. En su caso, ya asume que cada uno de sus dos puntos finales conoce la clave pública del otro punto final, es decir, que el problema que PKI trata de resolver ya se ha resuelto. No hay necesidad de una PKI en su caso, entonces.

Este conocimiento mutuo de las claves públicas se puede escalar a un canal protegido de datos bidireccional, pero eso no es algo fácil de hacer; no se puede evacuar con un simple "ciframos los datos con la clave pública del otro sistema"; como otros han señalado, esto sufrirá de ataques de repetición (al menos). Hay muchos detalles de los que preocuparse. Un protocolo en el que todos estos detalles se han tratado de manera dolorosa, a lo largo de dos décadas de roturas y reparaciones, es, de hecho, SSL . Hasta ahora, la mayoría de las personas que pensaron que podrían hacerlo mejor han fracasado, a veces de forma hilarante, a menudo espectacularmente. SSL incluye todo tipo de características que realizan un seguimiento de fragmentos de datos individuales ("registros" en el lenguaje SSL) y detectan de manera confiable las alteraciones externas, incluidos los paquetes reordenados, descartados o duplicados; también garantiza una terminación verificada (cuando la conexión está cerrada por una máquina, la otra máquina tiene alguna garantía de que esta fue activada por la otra máquina, no por un atacante que inserta un paquete RST falso).

Tenga en cuenta que en SSL, el cliente y el servidor se envían sus claves públicas entre sí como parte de las cadenas de certificados. Esto es compatible con el modelo PKI en el que un cliente (respectivamente un servidor) aprende una clave pública del servidor (respectivamente una clave pública de un cliente) a través de la validación de certificados. Sin embargo, nada obliga al cliente y al servidor a procesar los certificados de una forma pura de PKI X.509. Lo que importa es que el cliente (resp. El servidor) use la clave pública correcta del servidor (resp. El cliente). Si el cliente ya conoce la clave del servidor, entonces el cliente simplemente puede usarla en SSL e ignorar cualquier blob que el servidor haya enviado como certificado. Por lo tanto, SSL no está vinculado intrínsecamente a X.509 ni a ningún otro tipo de PKI.

    
respondido por el Thomas Pornin 05.07.2013 - 20:13
fuente
0

Además de los problemas de reproducción y ordenación identificados por jhoyla , no hay autenticación de origen de mensaje o entidad en este protocolo.

Cualquier parte con la clave pública de cualquiera de los pares puede enviar mensajes arbitrarios al par, y el par no tiene forma de autenticar su origen. De hecho, incluso podrían simular una conversación entre dos pares, especialmente si pueden bloquear los mensajes salientes de los participantes o si los detalles del esquema de número de secuencia que implementaste permitieron que los mensajes del atacante "ingresaran primero".

Como es una clave pública, puedes asumir con bastante seguridad que tu atacante tiene acceso a ella.

    
respondido por el Michael 12.05.2013 - 20:58
fuente

Lea otras preguntas en las etiquetas