Protezione forza bruta a due fattori

5

Se implemento l'autenticazione a due fattori usando TOTP, I (ovviamente) deve proteggere dai semplici attacchi di forza bruta del valore TOTP.

Se chiedo il valore TOTP dopo l'accesso con password, l'autore dell'attacco conosce già la password valida. Poiché la lunghezza predefinita per il valore TOTP è di 6 cifre, è facile da forzare.

Possibili soluzioni:

  • Blocca account utente: svantaggio del blocco di un utente legittimo senza possibilità di sblocco.
  • Blocca IP: potrebbe funzionare, ma potrebbe essere aggirato sfruttando una botnet. Dovrebbe bloccare più di un singolo IP per IPv6.

Soluzioni che non funzionano:

  • Blocca sessione corrente: non funziona, poiché l'utente malintenzionato conosce la password e può semplicemente aprire un'altra sessione.

Come può essere implementata una protezione da forza bruta in modo che non blocchi l'utente legittimo, ma blocca ancora gli attacchi nel miglior modo possibile?

    
posta kelunik 13.04.2016 - 16:25
fonte

1 risposta

7

Il fatto di forzare bruto un token TOTP è che devi indovinare giusto al momento giusto . Quindi, se non vuoi bloccare un utente dopo x tentativi falliti (che è pratica comune) puoi rallentare i tentativi falliti fino al punto in cui le probabilità di ottenere il TOTP a destra sono statisticamente insignificanti.

Ad esempio: il token TOTP a 6 cifre ha 1.000.000 di possibilità. Ma la chiave corretta cambia ogni 30 secondi (nell'implementazione standard di TOTP), quindi la finestra di successo non è il tempo necessario per esaurire l'intero spazio token, ma quanti token l'attaccante può attraversare in un determinato periodo diviso per il tokenspace e ha ancora solo una possibilità di successo. Rendi impossibile attraversare lo spazio dei gettoni in 30 secondi e riduci l'attacco a una scommessa.

Esempio: l'attaccante ottiene una supposizione al secondo. Possono ottenere solo 30 ipotesi di un determinato token, quindi le probabilità di successo sono sostanzialmente casuali. Utilizzando il processo di variabili casuali di Bernoulli (probabilità di fallimento per il numero di tentativi), 24 ore di attacco in questo modo (86.400 ipotesi) produce solo una probabilità di successo dell'8,2%. A 10 giorni, sale al 57%. Quindi, semplicemente convincere il tuo utente a cambiare la sua password, o trovare un altro modo per bloccare l'aggressore (tramite IP, ecc.) Prima che tale percentuale diventi molto alta.

    
risposta data 13.04.2016 - 16:58
fonte

Leggi altre domande sui tag