HMAC-SHA1 è un algoritmo di codice di autenticazione dei messaggi (MAC), RSA-SHA1 è un algoritmo di firma. Anche se i MAC sono talvolta chiamati in modo errato firme, sono fondamentalmente diversi.
Con un MAC, chiunque conosca la chiave segreta può creare e verificare i MAC. Con le firme d'altra parte, chiunque abbia la chiave pubblica può verificare una firma, ma solo qualcuno con la chiave privata può creare una firma.
Le firme vengono utilizzate quando si desidera che la parte che verifica la firma non sia in grado di creare firme. PGP li utilizza per verificare la paternità dei messaggi, TLS li usa per verificare le catene di certificati.
I MAC vengono utilizzati quando tutte le parti coinvolte vogliono semplicemente sapere che il messaggio è venuto inalterato da un'altra parte valida. TLS li utilizza per verificare che i messaggi siano inalterati tra il client e il server.
I MAC sono generalmente significativamente più veloci delle firme. Una firma in cui entrambe le parti sanno che le chiavi pubbliche e private potrebbero essere utilizzate come MAC, ma le prestazioni sarebbero molto peggiori.
Si noti che SHA1 viene deprecato nella maggior parte dei luoghi a causa di attacco di collisione . L'attacco di collisione non ha effetto su HMAC-SHA1 , ma potrebbe essere preferibile utilizzare HMAC-SHA256 se non altro per evitare domande non necessarie. SHA1 dovrebbe essere evitato con le firme RSA se l'attaccante ha il controllo su ciò che stai firmando, e dato che potrebbe non essere sempre chiaro se questo sia il caso (o potrebbe essere il caso nel futuro a causa di cambiamenti), è meglio usare solo SHA256.