¿Qué rol juegan los hash en la validación de certificados TLS / SSL?

7

Después de encontrar esta pregunta en Hot Network Questions y leyendo la sección En la publicación del blog de Google , estoy empezando a sentir curiosidad por el papel que desempeñan estas funciones hash en la validación de certificados TLS / SSL.

Tenía la impresión de que un certificado SSL era solo un enlace entre un conjunto de nombres de dominio y una clave pública (la clave pública del propietario del sitio para ser más precisos), firmada criptográficamente por la clave privada de una autoridad de certificación. ¿Por qué se necesita una función hash para validarla?

    
pregunta Ajedi32 16.09.2014 - 23:30
fuente

2 respuestas

13

Básicamente, las funciones hash son una parte necesaria del proceso de creación de una firma digital.

La mayoría de los algoritmos de firma no están diseñados para poder firmar mensajes largos de forma segura y / o eficiente de manera directa, por lo que el primer paso de cada algoritmo generalmente es marcar el mensaje que se está firmando, reduciéndolo a una longitud fija que el resto del algoritmo. El algoritmo de firma es capaz de procesar efectivamente. De manera similar, los algoritmos de verificación de firmas implican el hashing del mensaje que se está verificando y luego realizar un conjunto de operaciones en la firma para verificar si corresponde a ese hash.

Por ejemplo, con las firmas RSA, la firma se puede considerar como un hash de los datos firmados, "encriptados" con la clave privada del firmante:

Imagen de Wikimedia Commons

El proceso de verificación implica "descifrar" la firma (utilizando la clave pública del firmante) y comparar el hash resultante con el hash de los datos a los que se aplica la firma. En el caso de los certificados SSL, los datos son el propio certificado SSL.

Nota: escribí "cifrado" y "descifrado" entre comillas aquí porque en realidad las operaciones utilizadas en el algoritmo de firma RSA no son exactamente las mismas que las utilizadas para el cifrado RSA. Sin embargo, están lo suficientemente cerca como para hacer una analogía efectiva aquí. Con otros algoritmos de firma como ECDSA, los algoritmos de firma y verificación son totalmente diferentes, no implican "encriptación" o en realidad nada parecido al proceso anterior, pero el mensaje aún está marcado como parte del proceso de firma y verificación.

Para obtener información más detallada sobre el uso de hash en algoritmos de firma específicos, consulte:

Esta respuesta se derivó de leer las preguntas vinculadas en dave_thompson_085 's < a href="https://security.stackexchange.com/questions/67512/what-role-do-hashes-play-in-tls-ssl-certificate-validation#comment110330_67512"> comment .

    
respondido por el Ajedi32 17.09.2014 - 16:04
fuente
2

Por lo general, las firmas digitales no se aplican realmente a los datos completos. En su lugar, los datos (en el caso del certificado x.509) están troceados y solo se firma el hash resultante.

Si este no fuera el caso, las firmas digitales terminarían siendo al menos tan grandes como el mensaje en sí, y firmar / verificar los archivos sería menos eficiente.

Esto significa, sin embargo, que si un atacante puede generar un certificado falso utilizando su propio par de claves pública / privada con el mismo hash que el certificado legítimo, el certificado falsificado puede pasar verificaciones de validación y puede usarse para ejecutar un hombre En el ataque medio.

    
respondido por el lzam 16.09.2014 - 23:54
fuente

Lea otras preguntas en las etiquetas