Le prestazioni da sole sono un motivo per usare MAC.
Considera una connessione TLS. Per il pacchetto ogni , la parte ricevente deve verificare che il pacchetto non sia stato modificato in transito da un aggressore man-in-the-middle. Quindi per ogni pacchetto, il mittente deve calcolare un MAC / firma e il ricevitore deve verificarlo. Se si desidera, ad esempio, una velocità di trasferimento di 10 MB / s e una media di 10 KB / pacchetto, significa che si dispone solo di una frazione di 1 ms per calcolare o verificare la firma. È troppo lento per una firma digitale.
Il tempo necessario per creare e verificare una firma asimmetrica è abbastanza piccolo da essere un non-problema se lo fai una volta quando viene stabilita una connessione, supponendo che tu abbia un hardware di fascia alta come un PC, un server o smartphone (può essere un problema su dispositivi embedded). Ma non funziona se devi farlo una volta per pacchetto.
Una firma digitale ha il vantaggio che può essere verificata da una parte che non è in grado di generare una firma falsa. Questo non è utile in un caso come una connessione TLS. Per TLS, le due parti impostano una chiave di sessione, che è una chiave simmetrica generata casualmente all'inizio della connessione. Dopodiché, le uniche due parti che conoscono la chiave sono il client e il server. Se il client vede un MAC valido (che non si è generato), può essere stato prodotto solo dal server e viceversa. Allo stesso modo, una volta generata la chiave di sessione, viene utilizzata la crittografia (e non la crittografia asimmetrica) per la crittografia.
(Correttamente parlando, la stessa chiave non dovrebbe essere usata per scopi diversi come MAC e crittografia, anche se capita di avere il formato giusto. Ho semplificato le cose un po 'sopra. La "chiave di sessione" è in realtà un segreto materiale da cui derivano una chiave di crittografia e una chiave MAC o, in alcune cifrarie, viene derivata una singola chiave di crittografia autenticata, sebbene l'algoritmo AE ottenga due chiavi internamente.)