Quanti byte dovrebbe avere un token di autorizzazione? [duplicare]

5

Supponendo di generare byte casuali con un PRNG sicuro, quanti byte devo rendere sicuri i token di autorizzazione?

In particolare, quando gli utenti accedono a un sito Web, un token verrà generato e memorizzato in un cookie per autorizzare richieste future. Lato server, il token verrà archiviato in un database e controllato quando viene ricevuta una richiesta.

    
posta josh3736 04.09.2013 - 03:19
fonte

2 risposte

4

Poiché i token di autorizzazione sono casuali, il tuo vettore di attacco principale è l'ipotesi di forza bruta.

In un attacco online, la tua strategia di difesa può limitare il tasso di probabilità o le ipotesi totali consentite e quindi limitare la lunghezza di bit necessaria.

Un attacco offline è più interessante, se tale attacco è possibile nel tuo ambiente. Con la tecnologia odierna, 64 bit (tra 10 e 11 caratteri alfanumerici) sono solo ai limiti del rischio, data una buona quantità di tempo e una quantità insignificante di denaro. D'altra parte, 128 bit (tra 21 e 22 caratteri alfanumerici) sono al di là della portata degli attacchi di forza bruta praticamente indefinitamente a meno che la nostra comprensione della termodinamica del tempo cambi drasticamente.

    
risposta data 04.09.2013 - 07:09
fonte
1

Sicuro contro cosa?

Anche se in realtà non devi preoccuparti di rispondere a questo, come per qualsiasi dubbio plausibile, sarà sufficiente la risposta di @ terry-chia di 16 byte.

Se hai bisogno di difendervi da una collisione accidentale (due utenti vengono emessi lo stesso token), allora devi vedere quanti utenti distinti potresti avere e fare un po 'di matematica. Quindi se i tuoi token vengono utilizzati per l'identificazione (come un nome utente) e per l'autenticazione, devi preoccuparti di questi tipi di collisioni.

Tuttavia, suppongo che non ci siano possibilità che il numero di utenti raggiunga oltre i trilioni, quindi anche se utilizzi questi token per l'identificazione, saranno sufficienti 16 byte.

A circa 8 * 10 ^ 14 utenti, avrai circa 1 su un miliardo, 10 ^ {- 9}, possibilità che ci sia almeno un paio di utenti che finiscono con lo stesso token. Se questo è un rischio troppo grande, allora vai con 20 byte. Puoi trovare la matematica a questo proposito nella descrizione del problema di compleanno

    
risposta data 04.09.2013 - 07:18
fonte

Leggi altre domande sui tag