random

Autres langues

Langue: pl

Autres versions - même langue

Version: 2003-10-25 (openSuse - 09/10/07)

Section: 4 (Pilotes et protocoles réseau)

NAZWA

random, urandom - urz±dzenia ¼ród³owe liczb losowych j±dra

OPIS

Specjalne urz±dzenia znakowe /dev/random i /dev/urandom (obecne w Linuksie od wersji 1.3.30) stanowi± interfejs do wbudowanego w j±dro generatora liczb losowych. Plik /dev/random ma g³ówny numer urz±dzenia 1 i poboczny numer 8. Plik /dev/urandom ma g³ówny numer urz±dzenia 1 i poboczny numer 9.

Generator liczb losowych zbiera szum ¶rodowiskowy ze sterowników urz±dzeñ i innych ¼róde³ do puli losowej. Generator przechowuje równie¿ szacunkow± liczbê bitów szumu w puli losowej. Z owej puli tworzone s± liczby losowe.

W trakcie odczytu, urz±dzenie /dev/random bêdzie zwracaæ losowe bajty, spo¶ród oszacowanej liczby bitów szumu w puli. /dev/random nadaje siê najlepiej do zastosowañ, w których potrzebna jest losowo¶æ bardzo wysokiej jako¶ci, jak np. jednorazowa maska lub generowanie kluczy. Je¶li pula losowa jest pusta, odczyt z /dev/random bêdzie wstrzymany do czasu zebrania dodatkowego szumu ¶rodowiskowego.

Odczyt z urz±dzenia /dev/urandom zwróci tyle bajtów, ile za¿±dano. W efekcie, je¶li nie ma wystarczaj±cego chaosu w puli losowej, zwracane warto¶ci s± teoretycznie nara¿one na atak kryptograficzny w stosunku do algorytmów wykorzystywanych przez sterownik. Wiedza na ten temat nie jest dostêpna w obecnych nie zastrze¿onych publikacjach, ale istnieje teoretyczna mo¿liwo¶æ przeprowadzenia takiego ataku. Je¶li jest to problemem w przypadku twojego programu, u¿yj /dev/random.

KONFIGURACJA

Je¶li w systemie nie ma plików /dev/random i /dev/urandom, mo¿na je utworzyæ przy u¿yciu nastêpuj±cych poleceñ:

        mknod -m 644 /dev/random c 1 8

        mknod -m 644 /dev/urandom c 1 9

        chown root:root /dev/random /dev/urandom

Gdy Linux uruchamiany jest przy niewielkim udziale operatora, pula losowa mo¿e byæ w do¶æ przewidywalnym stanie. Faktyczna ilo¶æ szumu w puli losowej jest wówczas poni¿ej ilo¶ci szacowanej. Aby przeciwdzia³aæ temu efektowi, pomocne jest zapamiêtywanie informacji o puli losowej pomiêdzy kolejnymi uruchomieniami systemu. Aby dzia³o siê to automatycznie, nale¿y dodaæ nastêpuj±ce wiersze do stosownych skryptów startowych Linuksa:


        echo "Inicjowanie generatora liczb losowych w j±drze..."

        random_seed=/var/run/random-seed

        # Przechowanie warto¶ci losowej od jednego startu systemu

        # do kolejnego startu. £adujemy, a potem zachowujemy ca³±

        # pulê losow±.

        if [ -f $random_seed ]; then

            cat $random_seed >/dev/urandom

        else

            touch $random_seed

        fi

        chmod 600 $random_seed

        poolfile=/proc/sys/kernel/random/poolsize

        [ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512

        dd if=/dev/urandom of=$random_seed count=1 bs=$bytes

Trzeba równie¿ dodaæ nastêpuj±ce wiersze do stosownego skryptu uruchamianego podczas zamykania systemu Linuksa:


        # Przechowanie losowych danych pomiêdzy wy³±czeniem a wy³±-

        # czeniem komputera. Zachowywanie puli losowej generatora.

        echo "Zachowywanie danych losowych..."

        random_seed=/var/run/random-seed

        touch $random_seed

        chmod 600 $random_seed

        poolfile=/proc/sys/kernel/random/poolsize

        [ -r $poolfile ] && bytes=`cat $poolfile` || bytes=512

        dd if=/dev/urandom of=$random_seed count=1 bs=$bytes

INTERFEJS PROC

Pliki w katalogu /proc/sys/kernel/random (obecnym od wersji 2.3.16) s± dodatkowym intefejsem do urz±dzenia /dev/random.

Plik z prawami tylko do odczytu entropy_avail dostarcza dostêpn± pulê losow±. Zazwyczaj bêdzie to 4096 (bitów), ca³o¶æ dostêpnej puli.

Plik poolsize podaje rozmiar puli losowej. Zazwyczaj - 512 (bajtów). Mo¿e byæ zmienione na dowoln± warto¶æ, dla której dostêpny jest algorytm. Obecnie mo¿liwe warto¶ci to: 32, 64, 128, 256, 512, 1024, 2048.

Plik read_wakeup_threshold zawiera liczbê bitów entropii potrzebnej do obudzenia procesu, który zasn±³, czekaj±c na entropiê z pliku /dev/random. Domy¶lnie - 64. Plik write_wakeup_threshold zawiera liczbê bitów entropii poni¿ej której zostanie u¶piony proces, który wykona select() lub poll(), aby otworzyæ do zapisu urz±dzenie /dev/random. Warto¶ci te mog± byæ zmienione przez zapis do tych plików.

Pliki tylko do odczytu uuid i boot_id zawieraj± losowe ³añcuchy znaków, takie jak 6fd5a44b-35f4-4ad4-a9b9-6b9be13e1fe9. Pierwszy z tych plików jest generowany na nowo przy ka¿dym odczycie, a drugi jest generowany tylko raz.

PLIKI

/dev/random
/dev/urandom

AUTOR

Generator liczb losowych w j±drze zosta³ napisany przez Theodore'a Ts'o (tytso@athena.mit.edu).

ZOBACZ TAK¯E

mknod (1)
RFC 1750, "Randomness Recommendations for Security" (Zalecenia dotycz±ce bezpieczeñstwa losowo¶ci)