Estoy tratando con una situación en la que se elige una opción de cifrado, como ECDHE-ECDSA-AES128-SHA , para establecer una conexión TLS. En este caso, se requiere que un servidor, al enviar el mensaje ServerKeyExchange al cliente, firme la clave del infierno hellman efímero (EC) usando su clave privada ECDSA (asociada con el certificado de clave pública). La clave pública primero se procesa antes de que se pueda realizar una operación de firma de ECDSA.
Mi pregunta: ¿cómo se determina el algoritmo de hash durante el apretón de manos?
RFC 4492 que describe la aplicación de ECC a TLS 1.2 tiene el siguiente texto para indicar cómo se determina este algoritmo:
"“ Todos los cálculos de ECDSA DEBEN realizarse según ANSI X9.62 [7] o sus sucesores. Los datos para ser firmados / verificados están en hash, y el
el resultado se ejecuta directamente a través del algoritmo de ECDSA sin
adicional hashing La función hash predeterminada es SHA-1 [10] , y sha_size (ver Secciones 5.4 y 5.8) es 20. Sin embargo, un hash alternativo función, como una de las nuevas funciones hash SHA especificadas en FIPS 180-2 [10], puede usarse en su lugar si el certificado que contiene La clave pública de la CE requiere explícitamente el uso de otro hash función. ( El mecanismo para especificar el hash requerido La función no se ha estandarizado , pero esta disposición anticipa dicha estandarización y evita la necesidad de actualizar este documento en respuesta. Los futuros PKIX RFC pueden elegir, para ejemplo, para especificar la función hash que se utilizará con una clave pública en el campo de parámetros de subjectPublicKeyInfo.) "
Sin embargo, si uno hace referencia a los requisitos de NIST Suite-B para TLS 1.2 (RFC 5430), queda claro en el uso de SHA256 y SHA384 para el nivel de seguridad deseado (ya que SHA1 está en desuso por NIST).
Entonces, en el protocolo de enlace TLS, ¿cómo se especifica el uso de SHA256 en el procedimiento de firma anterior?
Gracias,
Hari Tadepalli