ECDSA vs ECDH vs Ed25519 vs Curve25519

88

Entre los algoritmos ECC disponibles en openSSH (ECDH, ECDSA, Ed25519, Curve25519), que ofrece el mejor nivel de seguridad y (idealmente) ¿por qué?

    
pregunta Omar 04.02.2014 - 10:53
fuente

4 respuestas

83

En SSH, se utilizan dos algoritmos: un algoritmo de intercambio de claves (Diffie-Hellman o la variante de curva elíptica llamada ECDH) y un algoritmo de firma. El intercambio de claves produce la clave secreta que se utilizará para cifrar los datos de esa sesión. La firma es para que el cliente pueda asegurarse de que habla con el servidor correcto (se puede usar otra firma, calculada por el cliente, si el servidor aplica la autenticación de cliente basada en clave).

ECDH utiliza una curva ; la mayoría del software utiliza la curva estándar NIST P-256. Curve25519 es otra curva, cuyo "punto de venta" es que es más rápido, no más fuerte, que P-256. La diferencia de rendimiento es muy pequeña en términos humanos: estamos hablando de menos de un milisegundo de cómputos en una PC pequeña, y esto ocurre solo una vez por sesión de SSH. No lo notarás. No se puede decir que ninguna de las curvas sea "más fuerte" que la otra, no prácticamente (ambas están bastante lejos en el ámbito "no se puede romper") ni académicamente (ambas están en el "nivel de seguridad de 128 bits").

Incluso cuando se usa ECDH para el intercambio de claves, la mayoría de los servidores y clientes SSH usarán claves DSA o RSA para las firmas. Si desea un algoritmo de firma basado en curvas elípticas, entonces eso es ECDSA o Ed25519; por algunas razones técnicas debido a la definición precisa de la ecuación de curva, eso es ECDSA para P-256, Ed25519 para Curve25519. Una vez más, ninguno es más fuerte que el otro, y la diferencia de velocidad es demasiado pequeña para ser detectada por un usuario humano. Sin embargo, la mayoría de los navegadores (incluidos Firefox y Chrome) ya no son compatibles con ECDH (dh también).

El uso de P-256 debería producir una mejor interoperabilidad en este momento, porque Ed25519 es mucho más nuevo y no está tan extendido. Pero, para un servidor determinado que configura y que desea acceder desde sus propias máquinas, la interoperabilidad no importa mucho: usted controla el software del cliente y del servidor.

Básicamente, la elección depende de la estética, es decir, depende completamente de usted, sin una razón racional. Los problemas de seguridad no serán causados por esa elección de todos modos; Los algoritmos criptográficos son la parte más fuerte de todo tu sistema, no la más débil.

    
respondido por el Tom Leek 04.02.2014 - 13:32
fuente
65

De la Introducción a Ed25519 , hay algunos beneficios de velocidad y algunos beneficios de seguridad. Uno de los beneficios de seguridad más interesantes es que es inmune a varios ataques de canal lateral:

  
  • No hay índices de matriz secreta. El software nunca lee ni escribe datos de direcciones secretas en la RAM; El patrón de direcciones es completamente predecible. Por lo tanto, el software es inmune a los ataques de sincronización de caché, ataques de subprocesamiento y otros ataques de canal lateral que dependen de la filtración de direcciones a través del caché de la CPU.
  •   
  • No hay condiciones de ramas secretas. El software nunca realiza ramas condicionales basadas en datos secretos; El patrón de saltos es completamente predecible. Por lo tanto, el software es inmune a los ataques de canal lateral que dependen de la filtración de información a través de la unidad de predicción de ramificación.
  •   

A modo de comparación, se han demostrado varios ataques de tiempo de caché en el mundo real en varios algoritmos. enlace

    
respondido por el Brian Minton 14.03.2014 - 16:53
fuente
33

Tenía la impresión de que Curve25519 es en realidad más seguro que las curvas NIST debido a la forma de la curva que la hace menos susceptible a varios ataques de canal lateral así como a fallas en la implementación. Consulte: enlace

Ed25519 tiene la ventaja de poder usar la misma clave para firmar un acuerdo clave (normalmente no haría esto). No estoy lo suficientemente familiarizado con las matemáticas como para decir si esto es una propiedad de ser una curva de Edwards, aunque sí sé que se convierte en el sistema de coordenadas de Montgomery (efectivamente en Curve25519) para un acuerdo clave ... Ed25519 es más que una curva, también especifica la generación de claves deterministas entre otras cosas (por ejemplo, hashing), que vale la pena tener en cuenta. Esto es algo frustrante sobre las implementaciones de DJB, ya que sucede, ya que tienen que ser tratados de manera diferente para mantener la interoperabilidad.

    
respondido por el zenith 07.02.2014 - 22:27
fuente
32

Hay una importante ventaja práctica de Ed25519 sobre (EC) DSA: la última familia de algoritmos se rompe completamente cuando se utiliza para firmas junto con un generador de números aleatorios roto. Tal fallo de RNG ha ocurrido antes y muy bien podría volver a ocurrir.

Teóricamente, las implementaciones pueden proteger contra este problema específico, pero es mucho más difícil verificar que ambos extremos estén usando una implementación correcta que solo para preferir o aplicar (dependiendo de sus necesidades de compatibilidad) un algoritmo que especifique explícitamente un comportamiento seguro (Ed25519).

    
respondido por el lxgr 01.12.2014 - 12:53
fuente

Lea otras preguntas en las etiquetas