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:

  1. Non casuale
  2. Prevedibile

Per generare numeri casuali bene, il computer deve avere due cose:

  1. Un buon algoritmo di generazione di numeri casuali
  2. 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é:

  1. Il sistema il tempo è un pessimo seme, perché è prevedibile all'interno di una piccola serie.
  2. 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.

«Chiunque tentando di produrre numeri casuali da puramente aritmetica significa, ovviamente, in uno stato di peccato". - John von Neumann.
Scrivere Codice di sicurezza Costruire Secure Software Sicuro di codificazione delle merci Secure Programming Cookbook
Acquisto questi eccellenti libri su Amazon.com a garantire la programmazione


Top 5 Free Networking Tools

Favoriti Che cosa è un numero casuale vulnerabilità?

Ultimi post sul blog


Inglese Inglese Tedesco Tedesco Spagnolo Spagnolo Francese Francese Italiano Italiano Portoghese Portoghese Russo Russo Olandese Olandese
Greco Greco Hindi Hindi Giapponese Giapponese Coreano Coreano Cinese Cinese Cinese (semplificato) Cinese (semplificato) Arabo Arabo

Copyright 2009 Tech-FAQ. Tutti i diritti riservati. Privacy Policy.