Che cosa è un numero casuale vulnerabilità?
I computer sono deterministici e quindi prevedibili. Computer non può, di per sé, generare numeri casuali veramente.
In assenza di contributi esterni, i computer possono solo creare i numeri pseudo-casuali.
Un numero casuale vulnerabilità si verifica quando un programma utilizza un metodo di generazione di numeri casuali che sia:
- Non casuale
- Prevedibile
Per generare numeri casuali bene, il computer deve avere due cose:
- Un buon algoritmo di generazione di numeri casuali
- Un casuale unpredicatable e sementi per l'algoritmo di generazione di numeri casuali
Esempi di numeri casuali vulnerabilità
Si consideri il seguente frammento di codice:
x = rand ();
Questo codice di numeri casuali generati male, perché quando si chiama rand () prima di un seme è stato istituito con srand (), si utilizza il valore 1 come un seme di default. Chiunque altro sulla stessa macchina con lo stesso compilatore che chiama rand () con un seme di 1 si ottiene lo stesso numero casuale, come hai appena fatto.
Diamo un'occhiata a un altro frammento di codice:
srand (time (0)); x = rand ();
Questo codice non chiamare srand () con l'ora corrente, come un seme. Tuttavia, questo codice è ancora insicuro perché:
- Il sistema il tempo è un pessimo seme, perché è prevedibile all'interno di una piccola serie.
- L'ANSI C rand () funzione in sé non generano buoni numeri casuali.
Let's esaminare un terzo frammento di codice:
srandom (tempo (0)); x = random ();
Questo codice utilizza la BSD casuale () e srandom () funzioni, che molto meglio generare numeri casuali ANSI C rispetto ai loro predecessori. Tuttavia, questo codice utilizza ancora tempo () per generare il seme numero. Una fonte molto meglio di numeri casuali su BSD e Linux è / dev / random dispositivo.
Numero di sementi e di numeri casuali Vulnerabilità
Buon seme numeri provengono da eventi imprevedibili, come utente movimenti del mouse o tastiera. Queste non sono le fonti di casualità perfetta, comunque. Comportamento umano prevedibile e un po 'di hardware può tastiera e del mouse buffer interrupts, di ridurre le casualità.
Numerosi altri generatori di numeri casuali sono disponibili per diverse piattaforme e ambienti di sviluppo. E 'estremamente difficile creare una buona, e ancor più difficile stabilire se il generatore di numeri casuali si è creato è davvero generare numeri casuali e imprevedibili. Il miglior percorso per la maggior parte delle applicazioni è quello di attuare un generatore di numeri casuali, che è stata oggetto di pubblico criptoanalisi.
Numero casuale vulnerabilità sono di interesse per gli hacker quando può essere utilizzata per determinare i valori di ingresso per crittografiche funzioni. Questo può essere utilizzata in criptoanalisi.
Un uso improprio delle chiamate di funzione rand () e random () sono le normali cause di numero casuale vulnerabilità.
Altre fonti di informazione sulla generazione di numeri casuali
Per ulteriori informazioni sulla generazione di numeri casuali, leggere RFC 1750 - Randomness Consigli per la sicurezza.
|
Favoriti Che cosa è un numero casuale vulnerabilità?





