Fai un passo indietro e dai un'occhiata al tuo problema da un altro punto di vista. Qual è la cosa peggiore che potrebbe accadere se si usassero numeri sequenziali? Hai menzionato l'enumerazione: qual è la minaccia dell'enumerazione? Qualcuno può causare un problema se vede il tuo numero # 00015 e # 00016 e prevedere che l'ID # 00017 verrà probabilmente generato successivamente? Forse qualcuno potrebbe dirottare un'email o un account Twitter che probabilmente sarà associato a un ID imminente.
E qual è il problema se qualcuno può determinare che l'ID # 00023 è più vecchio di ID # 42234? Gli ID precedenti hanno generalmente più risorse disponibili rispetto ai nuovi ID? Forse so che l'ID 00123 è stato rilasciato il 1 ° maggio e l'ID 00256 è stato rilasciato il 1 ° giugno; se apprendo che alcune celebrità famose hanno annunciato di essersi iscritte a maggio, ho solo 133 numeri per indovinare la loro identità. Indovinare l'ID di qualcuno può causare a qualcuno un problema, o sarà comunque un'informazione pubblica?
A questo punto dovresti capire se i # ID sequenziali devono essere tenuti segreti, o se possono essere pubblici.
Quindi dai un'occhiata ai vettori delle minacce (se si tratta di minacce realistiche) e dai rischi. Molti di questi sembrano essere rischi per i tuoi clienti se i loro ID segreti diventano pubblici e meno pericolosi per i tuoi sistemi. Ma se non stai proteggendo i tuoi clienti, la tua reputazione sarà certamente distrutta e la tua impresa fallirà. Quindi se queste sono minacce valide, devi prenderle sul serio.
Successivamente, aggiungi la comprensione che un Pseudo-Random Number Generator (PRNG) è stato creato esattamente per uno scopo specifico: generare numeri statisticamente ben distribuiti per problemi di modellazione nelle statistiche. Non sono mai stati creati per generare numeri "non raccomandabili". La maggior parte dei PRNG sono solo un problema di matematica dall'essere un generatore di numeri sequenziali. Puoi provare a saltare attraverso molti circuiti di semina per ridurre la capacità di generare numeri indovinabili, ma questo è esattamente il problema che un PRNG crittograficamente sicuro (CSPRNG) è progettato per risolvere. I CSPRNG sono stati specificamente progettati per generare numeri non raccomandabili.
Ora che comprendi meglio alcuni dei rischi, dovresti apprezzare il motivo per cui hai bisogno (o non hai bisogno) di proteggere i tuoi clienti da queste minacce; e con una migliore comprensione delle differenze tra un PRNG e un CSPRNG, puoi arrivare a una decisione solida.
Se devi mantenere questi segreti, allora devi usare un CSPRNG per proteggere i tuoi clienti. Se non è necessario mantenerli segreti, è necessario utilizzare un numero sequenziale e ridurre la complessità del sistema eliminando del tutto il generatore di numeri casuali.