Provided by: manpages-pl_20060617-2_all bug

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)