Lávové lampy jako zdroj náhodných čísel | foto: montáž: Pavel Kasík, Technet.cz, Profimedia.cz

Továrna na náhodu: romantická stěna na recepci jistí 10 % internetu

  • 35
Společnost Cloudflare je zodpovědná za šifrování až desetiny celosvětového internetového provozu. Možná nejzajímavějším prvkem jejich systému je přitom něco opravdu neobvyklého. Na stěně mají více než stovku lávových lamp, které pomáhají chránit možná i vaši internetovou komunikaci.

To, co právě teď děláte, se podobá činnosti tajného agenta. Přestože na první pohled jde o relativně běžnou věc, čtete si článek na zpravodajském webu, vaše komunikace s naším webovým serverem je šifrovaná tak, aby nikdo, kdo komunikaci zachytí, nemohl zjistit její obsah. Podobným způsobem - přes protokol HTTPS a šifrování TLS - je zabezpečena velká část internetové komunikace.

Je řada způsobů, jak šifrovat. Obě strany, které spolu komunikují, mohou mít k dispozici stejnou jednorázovou tabulku náhodných čísel a podle ní zprávu kódují. Toto je jediná známá v principu neprolomitelná šifra (tzv. Vernamova šifra, patentovaná v roce 1918). Komunikace se někomu, kdo ji sleduje bez dekódovací knihy, jeví jako řada náhodných znaků bez jakékoli pravidelnosti.

Šifrovací stroj Enigma

Šifrovací stroj Enigma.

Německá armáda za druhé války používala ke kódování a dekódování šifrovací stroj Enigma

V šifrování je náhoda extrémně důležitá. Pokud by tabulka, podle které odesílatel komunikaci šifruje, nebyla náhodná, bylo by možné tuto pravidelnost najít a zašifrovanou zprávu tak případně prolomit. To se třeba podařilo při prolamování nacistického kódu Enigma. Kryptografové si všimli pravidelností v jinak náhodných datech, protože operátoři byli líní a zapomínali (zjednodušeně řečeno) vnést do systému náhodu.

Kvalitní náhoda není jen tak

Mohlo by se zdát, že náhody je všude kolem nás habaděj. Stačí hodit kostkou, mincí nebo otevřít knihu na náhodné stránce. Jenže si představte, že byste měli vypotit ne deset nebo sto náhodných čísel, ale třeba miliardu náhodných čísel za minutu. Házení kostkou najednou nepřipadá v úvahu. A pokud začnete generovat náhodná čísla na počítači, narazíte na další - trochu fyzikální, trochu filozofický - problém. Počítač neumí dělat skutečně náhodná rozhodnutí.

Počítače mají s náhodou problém. Rozhodují se totiž zcela předvídatelně.

Je překvapivě náročné donutit počítač k tomu, aby generoval nepředvídatelná náhodná čísla. Počítače jsou totiž ze své podstaty předvídatelné: správně fungující počítačový kód vytvoří z určitého vstupu vždy stejný výstup. Z toho důvodu se u počítačů mluví o pseudonáhodných generátorech čísel.

Jde o algoritmy, které z prvotní vstupní informace (tzv. „seed“, tedy semínko) vytvoří sekvenci čísel, které působí jako náhodné – ale tak úplně nejsou. Například pokud spočítáte kontrolní součet SHA-256 se vstupem „technet“, vyjde vám na první pohled náhodná změť znaků: „d071d0f581c060b70e196eec6837af1912f304ae85b0faaa2987c7ac3efc1001". Pokud by ale někdo věděl, že jsme ke generování použili něco, co je nám blízké, mohl by uhodnout vstupní informaci a tím odhalit i systém v naší pseudonáhodné sekvenci. 

Řada podobných algoritmů je předvídatelná nebo se dají zpětně zrekonstruovat. Pokud by měl někdo dostatečné prostředky a motivaci (což lze u hackerů předpokládat), může teoreticky zjistit, jaká je v náhodných číslech pravidelnost - a v tu chvíli se mu otevírá možnost šifru prolomit.

Dobrá náhoda něco stojí

Jsou ale i lepší, kryptograficky bezpečné hardwarové generátory, které se předvídat prakticky nedají. I u nich je však důležitý problém: stále vyžadují vstupní „seed“: sekvenci čísel, ze které začnou počítat nepředvídatelná, (pseudo)náhodná čísla. Aby byl výstup skutečně náhodný, je potřeba, aby byl náhodný tento vstup: a počítače si skutečně náhodná čísla nevytvoří.

Sun Microsystems Crypto Accelerator 1000 PCI obsahuje hardwarový generátor pseudo náhodných čísel

Reálný svět však často nepředvídatelný je, a právě to může pomoci. Vstupní data mohou poskytnout informace z hardwaru: existuje i specializovaný hardware pro kryptografii, který mimo jiné obsahuje generátor náhodných čísel na základě nepředvídatelných fyzikálních jevů.

Pro běžné aplikace se používají různé informace, které může počítač získat ze svého okolí. Často se používá prodleva mezi stisknutím kláves, pohyby myší, přesné měření teploty procesoru, u mobilu data z akcelerometru. Takové údaje jsou zpravidla nepředvídatelné a dostatečně náhodné, poskytují tak systému přijatelnou entropii.

Ovšem v případě, kdy chcete jít ještě dále - nebo pokud na sebe chcete jako firma trochu upozornit - je dobré mít něco navíc. Tím něčím je u Cloudflare právě ona romantická stěna s lávovými lampami.

Romantický základ náhodného šumu

Firma Cloudflare na svém blogu popisuje důvody: „V minulosti jsme používali výchozí mechanismy na generování náhodných čísel v operačním systému Linux,“ píše Josua Liebow-Feeser z Cloudflare. „Ale protože jsme dobří kryptografové, nechceme záviset jen na jednom zdroji náhody. Chceme se pojistit pro případ, že by se v tomto linuxovém mechanismu našla chyba.“ A tak se zrodil systém přezdívaný jako LavaRand.

Více než stovka lávových lamp v sanfranciské centrále Cloudflare slouží jako továrna pro náhodu.

„LavaRand je systém, který používá lávové lampy jako sekundární zdroj náhodnosti pro naše produkční servery. Stěna nabízí zdroj nepředvídatelných obrazových dat,“ vysvětluje Liebow-Feeser. Video z naší kamery proženou pseudonáhodným generátorem (CSPRNG) a z toho potom padá proud náhodných čísel. Ta je pak možné použít jako přídavný zdroj náhodných čísel pro servery Cloudflare.

Může se to zdát trochu absurdní, ale je tomu opravdu tak: jedním ze článků tak důležitého bezpečnostního systému je stěna v sanfranciské centrále. Tato stěna se přitom nachází přímo v hale, skrze kterou normálně chodí zaměstnanci i návštěvníci, není nijak utajovaná. To ani není potřeba. Pohyb vosku v lávových lampách je totiž nesmírně chaotický a nelze přesně simulovat: lampy tak slouží jako skvělé zdroje entropie. V průběhu dne se navíc mění osvětlení, před lampami procházejí lidé a tak podobně, což jen dále zvyšuje entropii. A aby toho nebylo málo, před kamerou může být umístěn například rotující krystal, který vnáší další nepředvídatelné optické zkreslení.

„Doufáme, že tuto stěnu nebudeme nikdy potřebovat,“ říká Liebow-Feeser. Zatím není důvod se domnívat, že běžně používané pokročilé generátory náhody nejsou spolehlivé. „Ale kdyby se ukázalo, že tam je chyba, máme naši lávovou stěnu jako zálohu. Je to takové naše pojištění.“

,