Generování náhodných čísel

Jan Kokoska kokoska.jan na globe.cz
Pondělí Únor 2 12:03:09 CET 2004


On Mon, 2004-02-02 at 11:16, Pavel Kankovsky wrote:
> On Mon, 2 Feb 2004, Jan Kokoska wrote:
> 
> Ovsem hybat mysi je treba nahodne, coz neni tak uplne samozrejme.

Jiste, z autorova postu ovsem nevyplyvaly velke pozadavky na entropii,
to by ji mel alespon zminit. Je mozne, ze by mu stacilo pseudonahodne
urandom, ktere by vysledek vygenerovalo velmi rychle.

Jinak komentare na zacatku /drivers/char/random.c jsou ve smeru popisu
vlastnosti a omezeni techto znakovych zarizeni vycerpavajici, pokud
ovsem potreba autora tohoto vlakna vyzaduje jejich studium.

> Opravdu zalezi na tom, jake podminky jsou na ta "nahodna cisla"
> kladeny. Zda je opravdu treba, aby byla nahodna, nebo staci dostatecne
> kvalitni pseudonahodna cisla. V prvnim pripade muze byt nezbytne
> specializovane hw zarizeni (dobra zprava je, ze snad i celkem kvalitni
> zdroj nahodnych bitu je vestaveny v kazdem intelskem cipsetu
> kompatibilnim s 810...a dokonce je na nej v Linuxu driver, jmenuje
> se i810_rng).

Ano, to mate pravdu, slusi se dodat, ze podle dokumentace na to
potrebujete nasledujici:


        In order to make effective use of this device driver, you
        should download the support software as well.  Download the
        latest version of the "intel-rng-tools" package from the
        i810_rng driver's official Web site:

                http://sourceforge.net/projects/gkernel/


> Pak jeste zalezi na tom, co ma byt vysledkem. Vetsina nahodnych i
> pseudonahodnych generatoru produkuje proud bitu resp. bajtu s uniformnim
> rozdelenim. Vami navrzeny postup generuje pseudonahodnou sekvenci znaku
> z mnoziny { '0'..'9', 'A'..'F' } 

To uz pravdu nemate, sekvence je z mnoziny {'0'..'9'}, ani dale uplne
nesouhlasim.

(nekolik milionu nahodnych cisel jsem pochopil jako nekolik milionu
cislic 0..9, pekne v kuse, lze vyuzit treba na jednoduche throw-away
hashovani vstupu)

Vinou meho trivialniho postupu bude kazde pate cislo z rozsahu 0..5
(nahodny vstup konvertovan po dvou bajtech na hodnoty 0..65535), resi sh
skript a modulo 10000, jinak se nedomnivam ze bude vysledek
pseudonahodny.. pokud to chcete vysvetlovat laikovi, proc by tomu tak
melo byt?

> (take s uniformnim rozdelenim). V praxi
> jsou vetsinou potreba (pseudo)nahodne hodnoty s nejakym rozdelenim,
> napr. uniformne cela cisla v intervalu 0-100. Pritom prevod (dokonce
> i z jednoho diskretniho uniformniho rozdeleni na jine diskrektni uniformni
> rozdeleni) neni tak uplne trivialni, pokud je tolerance vuci chybam velmi 
> mala.

Autor vlakna na rozdil od vas nevypada, ze studoval kryptografii na
matfyzu (no offense), takze tak hluboko to mozna neni treba resit ;) 

Pokud ano, necht me opravi.. snazil jsem se navrhnout jednoduchy a
rozumne funkcni postup, nedomnivam se, ze uzivatel, ktery polozi
takovyto dotaz, bude uvedenym postupem zabezpecovat data, jejichz
ziskani by ospravedlnilo u utocnika pouziti technik, ktere by dokazaly
vyuzit slabin takovehle metody.

Realna bezpecnost je nehlede na entropii zdroje relativni (postranni
kanaly), vyplati se uvazovat o tom, co ma pro zabezpeceni danych dat
smysl. A vyplati se uvazovat dostatecne kratce, ma-li se vyvojaruv cas
zaplatit. Uz mlcim a jdu zhodnocovat svuj vyvojarsky cas...

Ocekevam znicujici reakci pritomnych matfyzaku ;)

--
 
Jan Kokoska
Linux Administrator
=========================================
GLOBE INTERNET, s.r.o. - http://globe.cz




Další informace o konferenci Linux