¿Qué es mejor en "DH-group14-sha1 with hmac-sha2-256" y "DH-group-exchange-sha256 con hmac-sha2-256" desde la perspectiva de rendimiento y seguridad?

2

En nuestro producto (sistema integrado), hasta ahora estábamos usando diffie-hellman-group1-sha1 con hmac-sha1. Pero debido a problemas de seguridad, estamos planeando usar diffie-hellman-group14 para el intercambio de claves y hmac-sha2-256 para HMAC.

¿Está bien usar diffie-hellman-group14-sha1 junto con hmac-sha2-256? ¿La combinación diffie-hellman-group14-sha1 y hmac-sha2-256 sería buena desde el punto de vista del rendimiento y la seguridad?

¿Habría mucho impacto en el rendimiento si utilizamos la combinación diffie-hellman-group-exchange-sha256 y hmac-sha2-256.

Ya que estamos usando un sistema integrado, queremos mantener un buen equilibrio entre seguridad y rendimiento.

¿Estaría muy agradecido si las personas pudieran brindar sus opiniones?

    
pregunta Rakesh Gupta 06.03.2014 - 14:12
fuente

2 respuestas

2

El contexto no declarado de esta pregunta es un servidor SSH: estas son opciones criptográficas negociables en el protocolo de transporte SSH. Es posible que desee actualizar la pregunta para indicar esto.

De la forma de su pregunta, primero quiero aclarar algo. Cuando preguntes:

  

¿Está bien usar diffie-hellman-group14-sha1 junto con hmac-sha2-256? ¿La combinación diffie-hellman-group14-sha1 y hmac-sha2-256 sería buena desde el punto de vista del rendimiento y la seguridad?

... esto parece implicar que piensas que hay algo de qué preocuparse en la mera combinación de estos algoritmos. No hay Son completamente independientes. Estos:

  • diffie-hellman-group1-sha1
  • diffie-hellman-group14
  • diffie-hellman-group-exchange-sha256

... son algoritmos de intercambio de claves. Se utilizan al principio del protocolo de transporte para establecer las claves de sesión (cifrado / MAC), autentificando el servidor en el proceso. Estos:

  • hmac-sha1
  • hmac-sha2-256

... son nombres de algoritmos de MAC utilizados para implementar la verificación de integridad de los datos de usuario transmitidos posteriormente por el protocolo. Estos se utilizan más adelante, con claves derivadas de la salida del intercambio de claves. Si está haciendo la pregunta porque cree que podría haber algún problema al "mezclar" SHA-1 y SHA-256, que yo sepa, no hay razón para preocuparse por eso en este escenario.

  

¿Habría mucho impacto en el rendimiento si utilizamos la combinación diffie-hellman-group-exchange-sha256 y hmac-sha2-256.

Ahora ha introducido la versión de "intercambio grupal" del intercambio de claves Diffie-Hellman SSH. Esto permite que el servidor utilice parámetros Diffie-Hellman configurados localmente (grupos finitos), en lugar de los grupos fijos prescritos por los intercambios "grupo1" y "grupo14". El impacto en el rendimiento será determinado por los grupos que proporcione, principalmente por el tamaño de los grupos en cuestión. Puede reducir la sobrecarga utilizando grupos más pequeños, con la correspondiente reducción de seguridad. Tenga en cuenta que el cliente solicita un módulo por tamaño, por lo que debe proporcionar grupos lo suficientemente grandes para satisfacer a sus clientes.

  • Protocolo de transporte SSH ( enlace )
  • Intercambio de grupo SSH Diffie-Hellman ( enlace )
respondido por el Richard E. Silverman 07.03.2014 - 00:16
fuente
0

La otra respuesta no parece responder a la pregunta, solo aclara el uso de los términos y las malas suposiciones. Entonces, si quieres saber cuál es mejor, diffie-hellman-group14-sha1 versus diffie-hellman-group14-sha1, aquí está mi intento de hacerlo.

Una parte de la pregunta es entre SHA2 y SHA1. SHA2 es más fuerte que SHA1, y diffie-hellman-group-exchange-sha256 es SHA2.

El otro es los primos utilizados en el intercambio. Los primos de grupo 14 se consideran fuertes (2048 bits), pero se conocen públicamente. Los primos de intercambio de grupo dependen de una lista de primos del lado del servidor y de las restricciones del lado del cliente. En OpenSSH en Linux, tiene un archivo / etc / ssh / moduli que contiene estos. Ese archivo lo proporciona la distro, por lo que también se conocen públicamente, pero puede cambiarlos.

Para ver un recuento de cada tamaño que tiene ahora, intente algo como:

awk '$1 != "#" {print $5+1}' /etc/ssh/moduli | sort | uniq -c

Lo que en algunos sistemas Ubuntu 16.04 que probé dicen lo mismo:

 49 1536
 40 2048
 37 3072
 38 4096
 37 6144
 36 7680
 29 8192

Por lo tanto, es posible que su intercambio de grupo use claves muy pequeñas del tamaño de 1536. Así que si elimina todas las más pequeñas para que coincidan con group14 (Oakley Group 14, tamaño 2048), probablemente debería ser mejor (ya que sha256 es mejor que sha1) y también porque puedes controlarlos para que no se conozcan públicamente. El cambio en el tamaño podría no tener ningún efecto si los clientes limitan sus propios mínimos y máximos de todos modos ... pero no puede hacer daño. o si prefieren un tamaño grande pero el mínimo es bajo, un ataque de baja calificación como LogJam puede funcionar.

Para recortar su archivo para que contenga solo números primos 2048 y más grandes (todavía se conoce públicamente), tal vez debería usar:

awk '$1 == "#" || $5 >= 2048 {print $0}' /etc/ssh/moduli > /etc/ssh/moduli.tmp
mv /etc/ssh/moduli /etc/ssh/moduli.bak.$(date +%s)
mv /etc/ssh/moduli.tmp /etc/ssh/moduli

Y para hacer un nuevo archivo de números primos únicos, quizás no conocidos públicamente (por supuesto, existe una posible superposición), puede generarlos (lo que puede llevar horas):

mv /etc/ssh/moduli /etc/ssh/moduli.bak.$(date +%s)
ssh-keygen -G /tmp/moduli -b 2048
ssh-keygen -T /etc/ssh/moduli -f /tmp/moduli

Sugiero reiniciar sshd después de hacer esto.

También vea enlace

    
respondido por el Peter 03.08.2017 - 11:18
fuente

Lea otras preguntas en las etiquetas