Perché le firme RSA basate sull'hash del messaggio piuttosto che sul messaggio stesso?
L'hash funge da misura per determinare se il messaggio è stato modificato da quando è stato firmato. In questo modo il destinatario sa che il messaggio è lo stesso di quando è stato firmato (integrità).
Il messaggio è composto
Messaggio hashed
Hash è crittografato con la chiave privata del mittente
La firma risultante accompagna il messaggio
Il destinatario può utilizzare la chiave pubblica del mittente per controllare l'hash, confermando in tal modo l'integrità del messaggio e che il mittente è stato colui che ha firmato (non ripudio). Una firma digitale significa che il messaggio è come previsto e inviato da una fonte confermata.
Applicare la chiave privata all'hash è più efficiente dal punto di vista computazionale (cosa più piccola da crittografare) e la crittografia del messaggio potrebbe non essere necessaria se la riservatezza non è richiesta / desiderata.
Tecnicamente, la firma funziona sul messaggio; succede che il primo passo dell'algoritmo di generazione delle firme sia quello di hash il messaggio con una funzione hash, e successivamente il valore hash.
L'uso di una funzione di hash è necessario perché l'algoritmo RSA si basa su numeri interi un dato numero intero (che è parte della chiave pubblica), quindi non può funzionare con valori che non rientrano in quella limitata gamma. È necessaria anche la funzione hash per garantire la non malleabilità (una caratteristica interna piuttosto tecnica). L'utilizzo di una funzione di hash è sufficiente a causa delle proprietà delle funzioni hash crittografiche ; vale a dire, la resistenza delle funzioni di hash alle collisioni e alle preimmagini significa in realtà che firmare un hash è "buono" come firmare il messaggio originale.