Generazione di password / token temporanei utilizzando RNG

5

Nella mia applicazione web genera token / password temporanei per accedere ai file usando questo metodo:

ALPHABET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
ALPHABET_LENGTH = 64

def generate_token(str_len = 22)
   res = ""
   str_len.times{res << ALPHABET[rand(ALPHABET_LENGTH)]}
   res
end

C'è una qualche vulnerabilità nel generare token / password in questo modo?

Se è importante, un token generato vive 7 giorni.

    
posta Ramito 11.01.2018 - 16:06
fonte

2 risposte

7

Poiché sembra che tu stia usando l'RNG predefinito di Ruby, il Mersenne Twister, è possibile che un attaccante ottenga il seme dell'RNG e quindi comprometta tutti i numeri passati, presenti e futuri generati dall'algoritmo usando qualcosa come mt_derand . Probabilmente è meglio usare SecureRandom.

    
risposta data 11.01.2018 - 19:49
fonte
4

Dipende dalla qualità della funzione rand .

Se non si tratta di un generatore di numeri casuali sicuro (e in particolare se si tratta di una funzione standard da un framework noto), allora sì: un utente malintenzionato potrebbe analizzare un numero di token generati in sequenza e avere una buona possibilità di scoprire lo stato interno del RNG, permettendogli di estrapolare un nuovo token da uno esistente valido.

    
risposta data 11.01.2018 - 16:19
fonte

Leggi altre domande sui tag