2010-09-28 10 views
10

Sto tentando di capire se un RNG hardware è effettivamente più sicuro di RNGCryptoServiceProvider.RNGCryptoServiceProvider è valido come un RNG hardware?

Dato che la casualità da RNGCryptoServiceProvider è fornito utilizzando vari dati di sistema e utente come l'ID di processo, ID di thread, clock di sistema, tempo di sistema, controrotanti, lo stato della memoria, cluster liberi disco e hash blocco di ambiente utente insieme Algoritmi di crittografia standard internazionale[ref], ci sono davvero dei buoni motivi per utilizzare un RNG hardware per un'applicazione di sicurezza, oltre alla velocità?

MODIFICA: Vorrei presumere in tutto questo che il computer su cui è in esecuzione l'RNG non sia comprimibile, cioè non ci sia app di spionaggio su di esso.

+8

La domanda più importante dovrebbe essere: * È 'RNGCryptoServiceProvider' abbastanza sicuro per le mie esigenze *? – LukeH

+0

Nota anche gli RNG hardware presentano errori, poiché nessun processo fisico è perfettamente simmetrico e bilanciato. La maggior parte (buona) RNG hardware hanno fasi di sbiancamento dei dati e altri trucchi (ad esempio: periodici RNG h/w si aggiornano su un PRNG) per dare risultati "buoni". Le distribuzioni entropiche sono identiche (altrimenti un disegno non lo taglia). – DeepSpace101

risposta

5

No, RNGCryptoServiceProvider non è buono come utilizzare l'hardware.

Ma è molto più economico e disponibile su ogni macchina. E abbastanza buono (e abbastanza veloce) per la maggior parte dei casi d'uso.

+0

Interessante. Che qualità possiede un RNG hardware che lo rende "migliore"? – PaulG

+0

@PaulG: tutte le cose che RNGCryptoServiceProvider usa per creare un numero casuale, come le hai elencate nella tua domanda, possono essere facilmente ottenute da un programma in esecuzione sulla macchina, e quindi il successivo numero casuale da generare può essere calcolato (es. un'app di spionaggio) e l'intera idea di casualità può essere sovvertita. Con un hardware-RNG, questo non è possibile, poiché si basa su un fenomeno fisico impossibile da prevedere. –

+0

@PaulG: l'hardware può essere "davvero" casuale. Ma con un buon software il diff diventa teorico. –

6

È una grande domanda, e sospetto che la risposta sia (come suggeriva Henk) più teorica. Un componente hardware potrebbe essere impiegato per generare rumore bianco, quindi campionato e usato come un RNG hardware. Nella teoria ciò sarebbe "più casuale" rispetto all'utilizzo dei tempi dal sistema.

In pratica, tuttavia, gli RNG vengono sottoposti a test quando attraversano lo FIPS certification. RNGCryptoServiceProvider si è qualificato attraverso certificazione FIPS 140-2 (fonte: http://technet.microsoft.com/en-us/library/cc750357.aspx)

Alcune delle risposte sono basati su un equivoco che, poiché il RNG software utilizza fonti note per i suoi valori di ingresso, quindi quei valori di ingresso possono essere monitorati e il seme scoperto.

Questo non è un vero debolezza (se era lo stesso si può dire del RNG hardware, potremmo monitorare il valore corrente (single?) E determinare il seme)

La debolezza (se presente) è che la maggior parte dei software RNG usa fonti di input che possono essere manipolate (in una certa misura) nel software. Ciò consentirebbe al malware di essere manipolato in modo spettacolare per manipolare l'hardware fino a un punto in cui l'RNG emette un numero prevedibile (cioè non casuale).

4

Qualsiasi parametro l'implementazione PRNG utilizzi come seme, ha una quantità limitata di entropia - al massimo la lunghezza delle rappresentazioni dei valori, ma in realtà è molto più piccola (ad esempio, le PID sono facili da limitare a una probabilità intervallo: il tempo di sistema è molto facile da indovinare con precisione, eccetera). Indipendentemente dalla quantità di dati generati da un PRNG in questo modo, la quantità di entropia rimane la stessa e quindi la quantità di lavoro richiesta per determinare il seme rimane la stessa.

Con un RNG hardware, al contrario, la quantità di entropia è la quantità di dati generati. Non c'è possibilità che la forza bruta cerchi l'insieme di possibili valori di seme, perché non c'è stato da sfruttare.

+0

Ho l'impressione che RNGCryptoServiceProvider usi continuamente fattori "esterni" (stato memoria ecc.). Quindi non è limitato come un PRNG deterministico che descrivi. – Tom

+0

È ancora limitato alla quantità di entropia che può ottenere e tale quantità è praticamente garantita per essere inferiore alla quantità di dati casuali generati. –

Problemi correlati