Devo tenere tutti gli UUIDv4 generati oAuth2 Bearer Tokens nel mio database per prevenire un attacco?

1

Genero oauth2 accesso e aggiornamento token e li memorizzo nel mio database. Genero questi token utilizzando UUID v4 e rimuovo i trattini. Ho cancellato i token dopo che sono scaduti, ma ora li memorizzo tutti perché ho pensato a qualcosa che potrebbe accadere.

Cosa succede se un utente malintenzionato memorizza localmente tutti i token di accesso che sono stati generati per lui e continua a utilizzare questi token di accesso ancora e ancora per l'autorizzazione. Poiché io, come amministratore del database, stavo cancellando i token generati, il DB non ha modo di sapere che il token è unico. Pertanto se l'algoritmo UUIDv4 genera un token di accesso per un utente diverso e si tratta di una collisione (stesso UUID di uno generato in precedenza) e l'utente malintenzionato ha trovato la collisione, potrebbe entrare nel servizio poiché ha i token che sono stati generati in precedenza.

La mia domanda è se dovessi preoccuparmi di questo e mantenere tutti i miei token in caso di collisione per verificare l'univocità o dovrei eliminare i token di accesso e aggiornamento dopo la scadenza e confidare che UUIDv4 abbia abbastanza entropia per impedirlo?

Sono anche preoccupato che se tengo tutti i token, inflazionerà il database poiché i token di accesso scadono ogni ora e vengono rigenerati la prossima volta che l'utente intraprende un'azione.

Qualsiasi aiuto è apprezzato!

    
posta programmerdave 13.05.2014 - 05:31
fonte

1 risposta

1

Se stai generando UUID versione 4 usando un RNG crittograficamente sicuro, la probabilità di un token precedentemente emesso che corrisponde a un token attualmente valido è esattamente uguale alla probabilità di ogni token casuale creato dall'attaccante che corrisponde a un token corrente.

Ciò significa che un attaccante con token precedenti non ha alcun vantaggio su nessun altro attaccante e non è necessario mantenere i token scaduti nel database.

Concentrati invece a garantire che tu stia utilizzando un RNG veramente sicuro, preferibilmente proveniente da una fonte fisica di casualità.

Un motivo più utile per mantenere gli UUID scaduti è quello di rilevare problemi con l'RNG. Se mai ottieni un UUID ripetuto, è possibile che ci sia un bug nella generazione di numeri casuali, simile a Debian OpenSSL bug (DSA-1571 -1) .

    
risposta data 13.05.2014 - 11:57
fonte

Leggi altre domande sui tag