Newsgroup: it.comp.sicurezza.crittografia
Titolo: Generatore dei numeri pseudo-casuali

Ho realizzato un programma di criptatura (spero si dica cosi').
Il programma funziona settando in un certo modo il generatore dei
numeri pseudo-casuali.
Il programma e' scritto sotto Windows XP.
Mi e' venuto in mente un dubbio:
e' possibile che su altri sistemi operativi o altre versioni di
Windows il generatore dei numeri pseudo-casuali internamente sia
implementato in maniera diversa e che quindi diventi impossibile
riportare in chiaro un file precedentemente criptato su un altro
OS? Per esempio criptare un file sotto Windows XP e riportarlo in
chiaro sotto Linux?
Ringrazio tutti coloro che mi risponderanno.

 chiaro sotto Linux?
Dipende da quale generatore usi. Afaik, se usi la funzione standard definita 
per ogni linguaggio di programmazione, è il compilatore che decide 
l'implementazione.
Per evitare "sorprese", quando scrivo un programma che richiede l'utilizzo 
di un generatore di numeri pseudo-casuali, nel programma includo anche il 
generatore di cui ho bisogno.
Cristiano 

 prevedibili (pur essendo pseudo-casuali).
che io sappia nessun generatore genera sequenze diverse con lo stesso seed.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 OS?
Difficile rispondere, dipende da quale generatore di numeri
pseudocasuali hai utilizzato.
Se è quello del sistema operativo, sotto Windows se ne occupa CAPI
(Criptographic API) e sotto gli *x invece ci sono dei meccanismi
fondamentalmente diversi (i byte pseudocasuali vengono da /dev/random e
/dev/urandom); non so se CAPI sia aggiornato in modo da rompere la
compatibilità con i PRNG delle precedenti versioni, ma in Vista CAPI
sarà soggetto ad una sostanziale revisione.
Se il generatore è quello del tool di sviluppo con cui programmi
invece dovrebbe comportarsi in modo uniforme sotto le varie
piattaforme, sempre a meno di aggiornamenti che rompano la
compatibilità con i precedenti PRNG.
In effetti di solito per decriptare qualcosa il seed viene passato, non
rigenerato dal PRNG, che in teoria dovrebbe occuparsi solo di fornire
valori sempre nuovi e difficilmente prevedibili, quindi è quantomeno
un uso insolito fare si che il PRNG si trovi nella stessa identica
situazione tale da generare lo stesso seed... anzi, la qualità del
PRNG è più buona proprio quanto è più difficile fargli creare lo
stesso seed.

 seed.
L'ho sentito dire anch'io, ma dove sta scritto che l'OP usa sempre lo stesso 
seme?
Immagino che l'OP abbia implementato una specie di stream cipher, per cui 
immagino che:
1) ognuno abbia la sua chiave *segreta* (che sarebbe il seme);
2) il generatore sia crittograficamente sicuro.
Cristiano 

 > OS?
Dopo aver letto la risposta di Cristiano mi sembra di avere capito
meglio l'OP.
Se il seed viene passato come chiave da il mittente al destinatario è
necessario fare si che l'algoritmo PRNG usato sia lo stesso per i due
soggetti, quindi usare una funzione ben precisa, ad esempio una stream
cipher che sia implementata o implementabile sui vari sistemi che
mittenti e destinatario potranno usare.
Se invece si utilizzano i PRNG di sistema o la funzione random
dell'ambiente di sviluppo si rischia di ricadere in un qualcosa che non
è stato pensato per essere portabile ma appunto solo per generare
numeri pseudocasuali, quindi non c'è una vera e propria necessità e
garanzia che in due ambiente diversi o due versioni diverse o due
sistemi diversi si utilizzino esattamente le stesse funzioni di PRNG.
Quindi lo stesso seed potrebbe dare origine a due stream diversi
perchè diversa è la struttura del PRNG, mentre usando una data stream
cipher x si è sempre sicuri che ogni implementazione corretta di
quella funzione, su qualunque sistema ed in qualunque versione, deve
dare esattamente lo stesso risultato, verificabile tramite test vectors
noti, che è buona norma fare in modo che l'applicazione verifichi in
partenza: se non è in grado di generare test vectors noti a partire
dai rispettivi seed significa che c'è un qualche problema.