Nel link Google consiglia di utilizzare un numero casuale protetto da crittografia a 130 bit come anti-contraffazione token.
Perché abbiamo bisogno di così tanti bit? Se un attaccante decide di montare un attacco a forza bruta, non sarebbe in grado di individuarli e bloccarli dopo alcuni tentativi? Con un minimo di 30 bit, hai 1 milione di token possibili per 1000 utenti simultanei. Indovinare il token usando la forza bruta sembra estremamente improbabile.
Il mio punto è che 30-40 bit di dati sembrano molto difficili da rompere usando la forza bruta. Quindi, perché Google consiglia 130 bit? Non è solo eccessivo?
UPDATE : Ok, dì che non puoi impedire un attacco di forza bruta ...
- In base al link Facebook riceve 500.000 visitatori unici al minuto.
- Supponendo che ogni utente effettui una richiesta al secondo, hai una richiesta per 2 microsecondi.
- Pertanto, possiamo tranquillamente supporre che (a partire da oggi) l'attaccante più potente sarà in grado di inviare al massimo una richiesta per 2 microsecondi.
- Successivamente, supponiamo di far scadere i token dopo 5 minuti. Ciò significa che un utente malintenzionato può avviare richieste 1.5 * 10 8 prima che il token scada.
- Successivamente, supponiamo di volere che l'autore dell'attacco abbia meno dell'1% di possibilità di indovinare il token. Pertanto abbiamo bisogno di un pool di token 1.5 * 10 10 per token attivo.
- Quindi se hai 500.000 utenti simultanei (Facebook) hai bisogno di token 7,5 * 10 15 (un pool per utente).
- Ciò significa che hai bisogno di 53 bit di dati, che ancora non si avvicinano ai 130 bit richiesti da Google.