Differenze tra le versioni di "Ottenere numeri casuali di ambito Byte dai file-device /dev/random e /dev/urandom"
Riga 1: | Riga 1: | ||
− | I file speciali "''/dev/random''" e "''/dev/random''" fungono da generatori di numeri ''pseudo-casuali''. <SUP>[[[#Note|nota 1]]]</sup> <SUP>[[[#Note|nota 2]]]</sup> | + | I file speciali "''/dev/random'' " e "''/dev/random'' " fungono da generatori di numeri ''pseudo-casuali''. <SUP>[[[#Note|nota 1]]]</sup> <SUP>[[[#Note|nota 2]]]</sup> |
Permettono l'accesso al rumore ambientale raccolto da driver di periferica ed altre fonti. Essi utilizzano un recipiente di entropia di 512 byte per generare dati casuali e si fermano quando tale recipiente è pieno. In particolare il kernel di Linux genera entropia dal ''timing'' della tastiera, i movimenti del mouse, e tempi IDE e rende i dati casuali di caratteri a disposizione di altri processi del sistema operativo attraverso i file speciali ''/dev/random'' e ''/dev/random''. | Permettono l'accesso al rumore ambientale raccolto da driver di periferica ed altre fonti. Essi utilizzano un recipiente di entropia di 512 byte per generare dati casuali e si fermano quando tale recipiente è pieno. In particolare il kernel di Linux genera entropia dal ''timing'' della tastiera, i movimenti del mouse, e tempi IDE e rende i dati casuali di caratteri a disposizione di altri processi del sistema operativo attraverso i file speciali ''/dev/random'' e ''/dev/random''. | ||
Riga 7: | Riga 7: | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | + | Dim fl As File | |
− | + | Dim b As Byte | |
− | + | ||
fl = Open "/dev/urandom" For Read | fl = Open "/dev/urandom" For Read | ||
− | + | Do | |
Read #fl, b | Read #fl, b | ||
Print b | Print b | ||
− | + | Wait 0.3 | |
− | + | Loop | |
'''End''' | '''End''' | ||
Riga 24: | Riga 24: | ||
---- | ---- | ||
=Note= | =Note= | ||
− | [1] I file-device "''/dev/urandom''" | + | [1] I file-device "''/dev/urandom'' " e "''/dev/random''" forniscono numeri casuali basati su stati fisici derivanti dai driver hardware, mentre la funzione ''Rnd()'' fornisce numeri pseudo-casuali che non possono essere utilizzati in crittografia. |
− | [2] Coloro che lavorano con i computer parlano spesso del "''generatore di numeri casuali''" del loro sistema e dei "''numeri casuali''" che esso produce. I numeri, calcolati da un computer attraverso un processo deterministico, non possono però per definizione essere ''casuali''. Infatti, data la conoscenza dell'algoritmo utilizzato per creare i numeri e lo stato interno, è possibile predire tutti i numeri restituiti dalle chiamate successive all'algoritmo, mentre con numeri veramente casuali, la conoscenza di un numero o di una sequenza arbitrariamente lunga di numeri non è di alcuna utilità per prevedere il numero successivo da generare. | + | [2] Coloro che lavorano con i computer parlano spesso del "''generatore di numeri casuali'' " del loro sistema e dei "''numeri casuali'' " che esso produce. I numeri, calcolati da un computer attraverso un processo deterministico, non possono però per definizione essere ''casuali''. Infatti, data la conoscenza dell'algoritmo utilizzato per creare i numeri e lo stato interno, è possibile predire tutti i numeri restituiti dalle chiamate successive all'algoritmo, mentre con numeri veramente casuali, la conoscenza di un numero o di una sequenza arbitrariamente lunga di numeri non è di alcuna utilità per prevedere il numero successivo da generare. |
Versione delle 15:34, 27 ago 2022
I file speciali "/dev/random " e "/dev/random " fungono da generatori di numeri pseudo-casuali. [nota 1] [nota 2]
Permettono l'accesso al rumore ambientale raccolto da driver di periferica ed altre fonti. Essi utilizzano un recipiente di entropia di 512 byte per generare dati casuali e si fermano quando tale recipiente è pieno. In particolare il kernel di Linux genera entropia dal timing della tastiera, i movimenti del mouse, e tempi IDE e rende i dati casuali di caratteri a disposizione di altri processi del sistema operativo attraverso i file speciali /dev/random e /dev/random.
Mostriamo un esempio pratico per leggere uno dei file-device, ad esempio /dev/urandom, e ottenere numeri casuali di tipo Byte (il corrispondente unsigned char del linguaggio C):
Public Sub Main() Dim fl As File Dim b As Byte fl = Open "/dev/urandom" For Read Do Read #fl, b Print b Wait 0.3 Loop End
Note
[1] I file-device "/dev/urandom " e "/dev/random" forniscono numeri casuali basati su stati fisici derivanti dai driver hardware, mentre la funzione Rnd() fornisce numeri pseudo-casuali che non possono essere utilizzati in crittografia.
[2] Coloro che lavorano con i computer parlano spesso del "generatore di numeri casuali " del loro sistema e dei "numeri casuali " che esso produce. I numeri, calcolati da un computer attraverso un processo deterministico, non possono però per definizione essere casuali. Infatti, data la conoscenza dell'algoritmo utilizzato per creare i numeri e lo stato interno, è possibile predire tutti i numeri restituiti dalle chiamate successive all'algoritmo, mentre con numeri veramente casuali, la conoscenza di un numero o di una sequenza arbitrariamente lunga di numeri non è di alcuna utilità per prevedere il numero successivo da generare.
Riferimenti
- https://it.wikipedia.org/wiki//dev/random
- http://man7.org/linux/man-pages/man4/random.4.html
- http://manpages.ubuntu.com/manpages/hardy/it/man4/random.4.html
- https://wiki.archlinux.org/index.php/Random_number_generation
- http://www.2uo.de/myths-about-urandom/
- http://www.onkarjoshi.com/blog/191/device-dev-random-vs-urandom/
- http://stackoverflow.com/questions/5635277/is-dev-random-considered-truly-random