Množství entropie v GNU/Linux

random_hwrngVypadá obrázek zmateně? Ano, obsahuje totiž „entropii“. Entropie, v pojetí informačních technologií množství náhodných dat, je důležitým vstupem pro mnoho kryptografických algoritmů, které zajišťují bezpečný přenos nejrůznějších informací. Dostatečný počet a kvalita „neurčitosti“ se také přímo podílí na schopnosti zachycené šifrované informace nějakým způsobem prolomit. Ač se zdá jednoduché tato náhodná data získat, v některých případech je lze matematickým výpočtem zpětně zjistit. V prostředí ICT je proto jednou z nejdůležitějších úloh nashromáždit co největší množství kvalitní entropie, která může být následně využita, a kterou žádným způsobem nelze predikovat nebo dopočítat.V zásadě může být entropie generována softwarově zjišťováním stavů určitých zařízení a registrů, tzv. softwarovými generátory náhodných čísel, nebo hardwarově speciálními čipy či bloky procesorů. Někdy se však dostaneme do situace kdy zjistíme, že naše náhodná data nejsou tak úplně náhodná.

V GNU/Linux můžeme entropii získávat nejčastěji čtením zařízení /dev/random/dev/urandom. Pokud máme k dispozici hardwarovou podporu, je dalším možným zdrojem /dev/hwrng, případně jiné podobné zařízení.

Dostupné množství entropie získáme čtením souboru /proc/sys/kernel/random/entropy_avail:

Jakékoli číslo menší než 1000 udává, že nemáme entropie dostatek a můžeme se v případě větších požadavků dostat do situace, kdy algoritmus, který náhodná data vyžaduje, bude na potřebné množství čekat. Toho si můžeme povšimnout například na WiFi AP, kdy se nám sníží datová propustnost. Důvodem nemusí být kvalita nebo síla WiFi signálu, ale právě nedostatek náhodných dat, které se uplatňují při šifrování přenosu WEP/WPA.

Dlouhou dobu se pro práci s generátory náhodných čísel/dat používají nástroje rng-tools.
Pokud si chceme otestovat entropii dle FIPS 140-2, použijeme nástroj rngtest:

Hardwarové zařízení /dev/hwrng (součástí Raspberry Pi):

Zařízení /dev/random:

Zařízení /dev/urandom:

V případě, že máme entropie nedostatek, může nám pomoci projekt Haveged. Tento nástroj bývá součástí moderních distribucí.

Množství entropie a její využití se během práce výpočetního systému mění. Tento trend zachycuje následující graf. Takřka dvojnásobný nárůst je způsoben nasazením haveged.
random_entropy

Dostatečně kvalitní entropie:
random_hwrng
Obrázek zachycující vygenerovanou entropii lze získat následujícím příkazem:

Každým spuštěním se vygeneruje obrázek obsahující zcela jiná data. Pokud bychom viděli nějaké jednolité shluky, nejsou náhodná data příliš kvalitní. Takovým příkladem může být využití generátoru RANDU:
random_randu
Jak je na obrázku vidět, výstup je velmi předvídatelný.

Moderní nároky na šifrování dat a nové algoritmy nás přivádí k jednoznačné otázce: „Má náš systém opravdu dostatek kvalitní entropie?“

1 komentář u „Množství entropie v GNU/Linux

  1. Pingback: Šifrování a podepisování datové komunikace s pomocí GnuPG | brichacek.net

Leave a Reply