Legge dei grandi numeri vs. OpenSSL RAND_bytes

3

Ho un sistema in cui decine di migliaia di utenti accedono ogni volta che lo desiderano e il mio server deve assegnarli a uno dei tanti database. Vorrei distribuire uniformemente gli utenti tra i database. Stavo pensando di utilizzare uno dei due metodi e non posso decidere quale mi darà una distribuzione più uniforme:

  1. RAND_bytes dal numero del modulo OpenSSL dei database.
  2. Timestamp corrente (in secondi) numero modulo dei database.

La prima opzione si basa su RAND_bytes e la seconda si basa sulla legge dei grandi numeri.

Gli utenti accedono per lo più durante determinate ore di punta.

Quale mi darà una distribuzione più uniforme?

    
posta Max 16.07.2015 - 17:07
fonte

1 risposta

4

Per definizione, un PRNG crittograficamente protetto ti darà la distribuzione più uniforme - perché qualsiasi distorsione rilevabile sarebbe considerata come debolezza Se il PRNG è "strong", significa che nessuno ha mai rilevato un singolo bias, anche se stavano provando davvero .

La funzione RAND_bytes() di OpenSSL dovrebbe essere un PRNG crittograficamente strong e molti sistemi si affidano a che.

Con la data e l'ora, puoi solo sperare che nessuno indovinerà il tuo metodo e creare account a intervalli regolari proprio per essere sempre sullo stesso database e rendere così la tua vita più difficile.

Pertanto, utilizza RAND_bytes() .

    
risposta data 16.07.2015 - 17:21
fonte

Leggi altre domande sui tag