Passa al contenuto principale

7.1.3. Windows CryptGenRandom

7.1.3. Windows CryptGenRandom

La raccomandazione di Microsoft agli utenti del sistema operativo Windows ampiamente diffuso è generalmente di usare la chiamata di generazione di numeri pseudo-casuali CryptGenRandom con il provider di servizi crittografici CryptAPI. Questo prende un handle a una libreria di provider di servizi crittografici, un puntatore a un buffer tramite il quale il chiamante può fornire entropia e nel quale viene restituita la pseudo-casualità generata, e un'indicazione di quanti ottetti di casualità sono desiderati.

Il provider di servizi crittografici CryptAPI di Windows memorizza una variabile di stato seed con ogni utente. Quando viene chiamato CryptGenRandom, questo viene combinato con qualsiasi casualità fornita nella chiamata e con vari dati di sistema e utente come l'ID di processo, l'ID di thread, il clock di sistema, l'ora di sistema, il contatore di sistema, lo stato della memoria, i cluster di disco liberi e il blocco di ambiente utente hashato. Tutti questi dati vengono alimentati a SHA-1, e l'output viene usato per seminare un key stream RC4. Quel key stream viene usato per produrre i dati pseudo-casuali richiesti e per aggiornare la variabile di stato seed dell'utente.

Gli utenti di Windows ".NET" troveranno probabilmente più facile usare l'interfaccia del metodo RNGCryptoServiceProvider.GetBytes.

Per ulteriori informazioni, vedere [WSC].