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 .