GNU/Linux >> Znalost Linux >  >> Linux

Přidání entropie náhodných čísel pro klíče GPG?

Je na tom zrnko pravdy, ve skutečnosti více pravdy než mýtu, ale přesto toto prohlášení odráží zásadní nepochopení toho, co se děje. Ano, pohyb myši při generování klíče pomocí GPG může být dobrý nápad. Ano, pohyb myši přispívá určitou entropií, která dělá náhodná čísla náhodnými. Ne, pohyb myši nezvyšuje bezpečnost klíče.

Všechny dobré náhodné generátory vhodné pro kryptografii, a Linux do této kategorie patří, mají dvě složky:

  • Zdroj entropie, který není deterministický. Účelem entropie je zavést generátor náhodných čísel s nepředvídatelnými daty. Zdroj entropie musí být nedeterministický:jinak by protivník mohl reprodukovat stejný výpočet.
  • Generátor pseudonáhodných čísel, který vytváří nepředvídatelná náhodná čísla deterministickým způsobem z měnícího se vnitřního stavu.

Entropie musí pocházet ze zdroje, který je mimo počítač. Uživatel je jedním ze zdrojů entropie. To, co uživatel dělá, většinou není náhodné, ale jemné načasování stisků kláves a pohybů myši je tak nepředvídatelné, že je mírně náhodné – ne příliš náhodné, ale postupně se hromadí. Mezi další potenciální zdroje entropie patří časování síťových paketů a bílý šum kamery nebo mikrofonu. Různé verze a konfigurace jádra mohou používat různé sady zdrojů. Některé počítače mají vyhrazené hardwarové obvody RNG založené na radioaktivním rozpadu nebo, což je méně působivé, nestabilní elektronické obvody. Tyto vyhrazené zdroje jsou užitečné zejména ve vestavěných zařízeních a serverech, které mohou mít při prvním spuštění docela předvídatelné chování, aniž by uživatel dělal divné věci.

Linux poskytuje náhodná čísla programům prostřednictvím dvou zařízení:/dev/random a /dev/urandom . Čtení z obou zařízení vrací kryptografickou kvalitu. Obě zařízení používají stejný vnitřní stav RNG a stejný algoritmus k transformaci stavu a vytváření náhodných bajtů. Mají zvláštní omezení, která nečiní ani jeden z nich tím správným:

  • /dev/urandom může vrátit předvídatelná data, pokud systém ještě nenashromáždil dostatečnou entropii.
  • /dev/random vypočítá množství dostupné entropie a blokuje, pokud není dost. To zní dobře, až na to, že výpočet je založen na teoretických úvahách, díky nimž množství dostupné entropie klesá lineárně s každým výstupním bitem. Tedy /dev/random má tendenci se velmi rychle zablokovat.

Systémy Linux ukládají vnitřní stav RNG na disk a obnovují jej při spouštění. Entropie se proto přenáší z jedné boty do druhé. Jediný okamžik, kdy může linuxový systém postrádat entropii, je čerstvě nainstalovaný. Jakmile je v systému dostatečná entropie, entropie se nesnižuje; snižuje se pouze chybný výpočet Linuxu. Další vysvětlení této úvahy najdete v /dev/urandom je vhodný pro generování kryptografického klíče profesionálním kryptografem. Viz také Můžete vysvětlit odhad entropie použitý v random.c.

Pohyb myši dodává systému více entropie. Ale gpg umí číst pouze z /dev/random , nikoli /dev/urandom (způsob, jak tento problém vyřešit, je vytvořit /dev/random stejné zařízení 1:9 jako /dev/urandom ), takže nikdy nehrozí, že obdrží nenáhodná-dost náhodná čísla. Pokud nepohnete myší, bude klávesa tak náhodná, jak jen může být; ale může se stát, že gpg může být zablokováno při čtení z /dev/random , čeká na zvýšení počítadla entropie jádra.


GPG používá linuxový (kernel) generátor náhodných čísel. Generátor jádra získává entropii (náhodnost) ze všech možných míst, mezi něž patří i časování přerušení pro určitá přerušení. Pohyb myši (a psaní, aktivita disku atd.) bude generovat přerušení.

Pohyb myši tedy skutečně potenciálně přispívá do generátoru náhodných čísel. Ale jestli ano, záleží na přesné verzi používaného jádra; novější verze nepoužívají (alespoň v mém testování) přerušení klávesnice nebo myši pro entropii. Aktivita disku však ano (takže například spuštění sync přidá potenciálně velké množství entropie v závislosti na tom, kolik je vypláchnuto).

Stručně řečeno:na aktuálních verzích Linuxu to neplatí. Bylo to na starších.

Pokud však generátoru dojde entropie, měl by se prostě zastavit – takže vaše generování klíče bude viset, dokud se nevygeneruje nějaká entropie. Takže by to byl věčný problém, ne bezpečnostní problém.

Můžete vidět, kolik entropie je k dispozici pomocí cat /proc/sys/kernel/random/entropy_avail .


Linux
  1. Jak provést příkaz Ping pouze pro N počet paketů

  2. gpg:příkaz nenalezen

  3. Jak vybrat statické číslo portu pro vlastní aplikaci?

  1. jak změnit číslo portu pro instalaci Jenkins v Ubuntu 12.04

  2. Nástroj pro měření kvality entropie?

  3. Hledání řetězce v řadě souborů v Linuxu

  1. Chyba v počítání skriptu pro počet výskytů?

  2. Linux – nástroj pro měření kvality entropie?

  3. Přidání náhodného zpoždění pro příkaz Linux