Non è possibile recuperare la chiave ... supponendo che la chiave abbia sufficiente entropia.
Ecco cosa può fare l'attaccante. Se l'attaccante ha un'ipotesi sulla chiave, l'attaccante può controllare se la sua ipotesi è corretta. Ciò significa che se l'attaccante può restringere l'elenco delle possibilità per la chiave in una lista abbastanza breve, l'attaccante può semplicemente provare tutte le possibilità in quella lista e vedere quale è corretta, e l'attaccante alla fine scoprirà il valore corretto della chiave. Questa strategia di attacco è nota come ricerca forza bruta o ricerca chiavi completa. Si scopre che questo è essenzialmente l'unico attacco che un attaccante può fare; con SHA1-HMAC, un attaccante non può fare meglio di questa strategia di attacco.
Quindi, il tuo compito come difensore è di assicurarti che il numero di possibilità per la chiave sia abbastanza grande da impedire la ricerca di forza bruta. Idealmente, ci sarebbero almeno 2 128 possibilità per la chiave, tutte ugualmente probabili. Ad esempio, potresti generare la chiave leggendo 128 bit da /dev/urandom
. Se è così che selezioni la chiave, non ci sarà modo per un utente malintenzionato di recuperare la chiave.
D'altra parte, se si fa un pessimo lavoro come difensore della scelta della chiave, allora potrebbe essere possibile per un utente malintenzionato recuperare la chiave. Ad esempio, supponiamo che tu decida che la tua chiave sarà un numero casuale a 4 cifre. Bene, quindi ci sono solo 10.000 possibilità per la chiave, quindi un utente malintenzionato può provarle tutte e identificare quale è corretta. Il processo di prova ed errore richiederà solo millisecondi, quindi se è così che hai scelto la tua chiave, le cose sarebbero del tutto insicuri e l'emittente sarebbe in grado di recuperare la chiave. Se si seleziona un numero casuale di 10 cifre come chiave, allora ci sono 10 valori 10 possibili della chiave, che non è ancora sufficiente: un utente malintenzionato potrebbe provare tutti questi valori possibili in poche ore. Quindi, non farlo. Oppure, se si utilizza il numero di telefono di qualcuno o SSN come chiave, sarà nuovamente possibile per un utente malintenzionato recuperare la chiave (semplicemente provando tutte le possibilità). Quindi, non farlo neanche.
In breve: scegli la tua chiave usando 128 bit di casualità con cripto-forza. Quindi, non sarà possibile per un utente malintenzionato recuperare la chiave.