Una falsificazione esistenziale di un testo in chiaro scelto sta avendo l'abilità di un utente malintenzionato di ottenere un MAC valido per un testo in chiaro del tuo abbinamento, senza conoscere la chiave richiesta per generare un MAC corretto.
Un vettore comune per questo è un attacco di temporizzazione, e funzionerebbe così:
-
L'attaccante invia un messaggio e un HMAC (in realtà solo una sequenza di byte della stessa lunghezza dell'HMAC) e le volte la risposta dal sistema di decrittografia.
-
L'utente malintenzionato invia quindi lo stesso messaggio ripetutamente e lo stesso pseudo-HMAC, con l'eccezione che ora esegue iterazioni anche se ogni (256) valore possibile per il primo byte dell'HMAC.
-
Se il sistema di decrittografia restituisce immediatamente un errore nel trovare una mancata corrispondenza tra i byte, una di queste iterazioni (quella con lo stesso valore del primo byte calcolato dal sistema di decrittografia) dovrebbe richiedere un tempo leggermente più lungo per essere restituita. Se l'utente malintenzionato può rilevare tale differenza, ora conosce il primo byte corretto per l'HMAC corretto per il messaggio, data la chiave HMAC del sistema di decrittografia.
-
L'attaccante invia lo stesso messaggio e HMAC, questa volta con il primo byte corretto noto, iterando sul secondo byte, fino a quando non trova di nuovo il byte che fa sì che il sistema di decrittografia impieghi un po 'più tempo a rispondere con un errore. L'hacker ora conosce il secondo byte dell'HMAC corretto.
-
Risciacquare e ripetere per ogni byte successivo nell'HMAC, fino a quando non è stato derivato un HMAC valido per il messaggio scelto dall'aggressore, sans key.
Questo è il motivo per cui il confronto HMAC deve essere costante, confrontando tutti i byte dell'HMAC inviato all'HMAC calcolato prima di restituire una risposta. In questo modo, indipendentemente dalla posizione di eventuali byte errati, il tempo di errore sarà sempre uguale. L'utente malintenzionato non ha più modo di dire cosa o dove sono i byte errati.
E la maggior parte di questa risposta viene copiata direttamente dalla mia risposta a: Attacco di tempo contro HMAC nella crittografia autenticata? quindi i riferimenti a HMAC in particolare.