Fondamentalmente, le funzioni di hash sono una parte necessaria del processo di creazione di una firma digitale.
La maggior parte degli algoritmi di firma non sono progettati per essere in grado di firmare direttamente e / o in modo efficiente messaggi lunghi, quindi il primo passo di ogni algoritmo è di solito l'hash del messaggio firmato, riducendolo a una lunghezza fissa che il resto del messaggio l'algoritmo della firma è in grado di elaborare in modo efficace. Allo stesso modo, gli algoritmi di verifica delle firme coinvolgono l'hashing del messaggio in fase di verifica, quindi eseguono alcune serie di operazioni sulla firma per verificare se corrispondono a tale hash.
Ad esempio, con le firme RSA la firma può essere considerata come un hash dei dati firmati, "crittografata" con la chiave privata del firmatario:
Immagine da Wikimedia Commons
Il processo di verifica implica la "decodifica" della firma (utilizzando la chiave pubblica del firmatario) e il confronto dell'hash risultante con l'hash dei dati a cui si applica la firma. Nel caso dei certificati SSL, i dati sono il certificato SSL stesso.
Nota: ho scritto "crittografato" e "decrittografato" tra virgolette perché in realtà le operazioni utilizzate nell'algoritmo di firma RSA non sono esattamente le stesse utilizzate per la crittografia RSA. Sono abbastanza vicini anche se per fare un'analogia efficace qui. Con altri algoritmi di firma come ECDSA, gli algoritmi di firma e verifica sono totalmente diversi, non coinvolgono "crittografia" o qualcosa di veramente simile al processo precedente, ma il messaggio è ancora sottoposto a hash come parte del processo di firma e verifica.
Per informazioni più dettagliate sull'uso dell'hash in specifici algoritmi di firma, vedi:
Questa risposta è stata ricavata dalla lettura delle domande collegate in dave_thompson_085 's < a href="https://security.stackexchange.com/questions/67512/what-role-do-hashes-play-in-tls-ssl-certificate-validation#comment110330_67512"> commento .