È necessario verificare che i miei ID di conferma ordine siano unici?

0

Sto generando conferme d'ordine di 9 caratteri come K1YBFRG17, O1D15ZCOM, ecc. e li uso come numeri di conferma d'ordine. In pratica, si tratta solo di selezionare a caso dalla stringa 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' nove volte.

Anche se questo consente 36 ** 9 ID diversi, che credo siano circa un centinaio di quadrilioni, e la probabilità di una ripetizione è infinitesimale, mi chiedo solo come si guarderebbe da un punto di vista della sicurezza. È importante spazzare il database ogni volta che viene generato un nuovo ID e rendere sicuro che è unico, anche se non c'è quasi nessuna possibilità di farlo?

    
posta temporary_user_name 23.11.2018 - 23:09
fonte

1 risposta

2

La probabilità di campionare lo stesso valore casuale due volte da una distribuzione uniforme dipende sia dal numero di valori possibili che da quanti campioni hai registrato fino a quel momento. È improbabile che generi due ID identici nei primi 100 ID generati, ma la probabilità aumenta (in modo piuttosto anti-intuitivo) più ID fai. Questa idea viene definita come problema del compleanno .

Come regola generale dovresti aspettarti che se stai campionando (con la sostituzione) da una distribuzione discreta uniforme di size n , allora dovresti aspettarti di vedere la tua prima ripetizione dopo circa sqrt(n) di campioni. Nel tuo scenario sono circa 10 milioni di ID.

Nella crittografia è comune utilizzare un RNG per evitare valori ripetuti. Ma richiede numeri molto grandi. che fanno sembrare 36 9 insignificanti. La dimensione minima di questi numeri è probabilmente tra 192 bit e 256 bit. Questo presuppone che stiamo usando una distribuzione uniforme e un vero generatore di numeri casuali (o qualche approssimazione di un TRNG).

    
risposta data 23.11.2018 - 23:42
fonte

Leggi altre domande sui tag