Hlavní navigace

ChaosKey: skutečný generátor náhodných čísel do USB

Petr Krčmář 11. 8. 2016

Základem silné kryptografie je dostatečně kvalitní generátor náhodných čísel. ChaosKey v sobě jeden takový obsahuje a jeho hardware i software je navíc plně otevřený a podporovaný v Linuxu.

Náhodná čísla potřebujeme

Podstatná část dnešní kryptografie závisí na generování kvalitních náhodných čísel. Pokud by bylo možné činnost generátoru predikovat, vzniká tím potenciální riziko prolomení šifrované komunikace. Většina systémů dnes používá pseudonáhodný generátor čísel (PRNG), který se pomocí deterministického algoritmu snaží z nejrůznějších vstupních dat vytvořit řadu dostatečně náhodných hodnot.

Proti tomu skutečné generátory náhodných čísel (TRNG) jsou implementovány v hardware, jehož základem je šumový generátor. Ten nabízí opravdu náhodný fyzikální jev, ze kterého je možné při správné implementaci odečítat skutečná nepredikovatelná náhodná data. Existuje řada komerčně dostupných generátorů, které jsou ale obvykle velmi drahé a zároveň uzavřené.

ChaosKey: otevřený generátor

Na konferenci DebConf16 představili Bdale Garbee a Keith Packard produkční verzi zařízení ChaosKey, na jehož vývoji pracovali déle než dva roky. Jejich cílem bylo vytvořit jednoduché zařízení, které by přidávalo skutečnou entropii do jaderného generátoru náhodných čísel. Ten za normálních okolností používá jako vstup různé události ze svého okolí – stisky kláves, čtení z disku či komunikaci po síti. Většina počítačů dnes nemá hardware pro generování náhodných čísel a cílem projektu ChaosKey je takový hardware vytvořit a přidat jeho entropii k jadernému generátoru.

Vývojáři si dali za úkol vytvořit velmi levné a plně otevřené zařízení, které bude jednoduše použitelné v Linuxu a bude odolné proti softwarovému útoku. To znamená, že i když je zařízení připojené do USB, není možné přepisovat jeho firmware. K tomu je potřeba mít fyzický přístup, otevřít krabičku a propojit uvnitř dva kontakty. Nemůže tedy dojít k tomu, že by někdo generátor softwarově poškodil nebo upravil jeho chování jen pomocí vzdáleného přístupu.

Samotné zařízení má podobu malé destičky, která není větší než USB konektor. Podle autorů byla velikost dána malou krabičkou, kterou se jim podařilo nakoupit. Výhodou takto malého zařízení je, že je úzké a nebude zasahovat do vedlejšího USB konektoru. Design desky je minimalistický – obsahuje vlastně jen procesor a obvod pro generování šumu.

Vpravo nahoře vidíte procesor, uprostřed dva tranzistory generující šum a vpravo dole je zdroj 20 V.

Celá hardwarová specifikace:

  • procesor STM32F042 System-on-Chip
    • ARM Cortex-M0 MCU
    • 32k Flash
    • 6k RAM
    • USB 2.0 Full Speed
    • provoz bez krystalu
  • 20V zdroj šumu
    • zvyšující měnič s AP3015A
    • šum na dvojici tranzistorů 3904
  • operační zesilovač OPA356
    • 200MHz GBP

Princip činnosti

K samotnému generování šumu dochází na dvou tranzistorech, využívá se při tom lavinový průraz přechodu báze-emitor jednoho z nich. K tomu je potřeba napětí vyšší než 6 V, proto deska obsahuje také vlastní zdroj 20 V. Více o principu naleznete na Wikipedii.

Generovaný šum pak po zesílení širokopásmovým zesilovačem putuje do A/D převodníku umístěném v procesoru. Výsledkem je následující rozložení do zvonové křivky, které ale při generování náhodných čísel nepotřebujeme.

Podobný výsledek ukazuje i oscilogram vynesený z 2000 naměřených bodů – hodnot je nejvíce u středu rozsahu.

Dobrou zprávou je, že při analýze pomocí Fourierovy transformace se neprojeví žádná dominantní frekvence.

Vývojáři uvažovali, jak by mohli takové rozložení transformovat na skutečně náhodně rozložené. Jednou z možností by bylo u 16bitového A/D převodníku použít jen spodních 8 bitů. Nakonec ale místo toho používají hardwarovou podporu pro CRC32, kterému předhodí celý výstup z převodníku. Výsledkem je výstup s lépe (náhodněji) rozloženými hodnotami. Podle autorů přes USB do počítače přitéká přibližně megabajt náhodných hodnot každou sekundu.

Podpora v Linuxu

Vývojáři přidali podporu zařízení do jádra verze 4.1 (červen 2015, zprávička). Ovladač vytváří zařízení /dev/chaoskeyX a zároveň jej registruje v jaderném generátorů náhodných čísel hwrng. USB ID pochází z OpenMoko USB vendor (0×1d50) a má hodnotu 0×60c6. Pokud máte jádro s tímto ovladačem, stačí ChaosKey zasunout do USB portu a vše začne automaticky fungovat.

Pokud máte na svém počítači spuštěné virtuální stroje, je i v nich možné využít vlastností ChaosKey. KVM a QEMU totiž obsahují zařízení virtio-rng, které dovoluje vytahovat data ze zásobníku entropie hostitelského stroje a předávat je dovnitř vituálu. Postup pomocí virt-manageru je popsán na webu projektu.

Koupit nebo postavit?

ChaosKey je možné si objednat hotový za 40 dolarů za kus. Pokud objednáte deset kusů, vyjde vás jeden na 35 dolarů a pokud si jich objednáte rovnou pětadvacet, dostanete se na 30 dolarů. Bohužel pro nás cenu navýší poštovné z USA. Při objednávce většího množství kusů by se ale jistě dalo poštovné rozpustit.

Druhou variantou je vlastní stavba, schémata, deska i firmware jsou otevřené:

Sami vývojáři doporučují stavbu i vylepšování ChaosKey. Jakou možnost preferujete vy?

Našli jste v článku chybu?

12. 8. 2016 16:14

Sten (neregistrovaný)

Nevěřím atomům, které si doma nezfúzuji :-)

12. 8. 2016 12:50

Měl by věřit jen procesoru, který si sám navrhne a na hradlovém poli vytvoří.

Podnikatel.cz: Platební brány a EET? Stále s otazníkem

Platební brány a EET? Stále s otazníkem

Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život