Entropie (výpočetní) - Entropy (computing)

v výpočetní, entropie je náhodnost shromážděné operačním systémem nebo aplikací pro použití v kryptografii nebo pro jiné účely, které vyžadují náhodná data. Tato náhodnost se často shromažďuje z hardwarových zdrojů (odchylka hluku ventilátorů nebo pevných disků), ať už dříve existujících, jako jsou pohyby myší nebo speciálně poskytované generátory náhodnosti. Nedostatek entropie může mít negativní dopad na výkon a bezpečnost.

Linuxové jádro

The Linuxové jádro generuje entropii z klávesnice načasování, myš pohyby a časování IDE a zpřístupňuje data náhodných znaků dalším procesům operačního systému prostřednictvím speciální soubory / dev / random a / dev / urandom. Tato funkce byla zavedena v systému Linux verze 1.3.30.[1]

Existují některé opravy jádra Linuxu, které umožňují použít více zdrojů entropie.[2] The audio_entropyd projekt, který je součástí některých operačních systémů jako např Fedora, umožňuje použití zvukových dat jako zdroje entropie.[3] K dispozici jsou také video_entropyd který vypočítává náhodná data ze zdroje videa a entropybroker který zahrnuje tyto tři a lze je použít k distribuci dat entropie do systémů, které nejsou schopné spustit žádný z nich (např. virtuální stroje ). Dále lze použít HAVEGE algoritmus vytáhl k entropii bazénu.[4] V některých systémech lze jako zdroj entropie použít také síťová přerušení.[5]

OpenBSD jádro

OpenBSD integroval kryptografii jako jeden ze svých hlavních cílů a vždy pracoval na zvýšení své entropie pro šifrování, ale také pro randomizaci mnoha částí OS, včetně různých interních operací svého jádra. Kolem roku 2011 byla dvě náhodná zařízení vyřazena a propojena do jediného zdroje, protože na průměrném systému by mohla vyprodukovat stovky megabajtů za sekundu vysoce kvalitních náhodných dat. Toto znemožnilo vyčerpání náhodných dat programy uživatelů na OpenBSD, jakmile bylo původně shromážděno dostatek entropie.

Hurd jádro

Ovladač portovaný z linuxového jádra byl zpřístupněn pro Hurd jádro.[6]

Solaris

/ dev / random a / dev / urandom byly k dispozici jako balíčky nebo patche Sun pro Solaris od verze Solaris 2.6,[7] a jsou standardní funkcí od verze Solaris 9.[8] Od verze Solaris 10 mohou správci odstranit existující zdroje entropie nebo definovat nové prostřednictvím kryptografického rámce na úrovni jádra.

K dispozici je také modul jádra třetí strany, který implementuje / dev / random pro vydání z verze Solaris 2.4.[7]

OS / 2

Existuje softwarový balíček pro OS / 2 který umožňuje softwarovým procesům načítat náhodná data.[9]

Okna

Microsoft Windows vydává novější verze než Windows 95 CryptoAPI shromáždit entropii podobným způsobem jako v linuxovém jádře / dev / random.[10]

Windows CryptoAPI používá binární registr klíč HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptographyRNGSeed k uložení nasazené hodnoty ze všech jejích zdrojů entropie.[11]

Protože CryptoAPI je uzavřený zdroj, někteří bezplatný open source software aplikace běžící na platformě Windows používají k získání náhodnosti další opatření. Například GnuPG od verze 1.06 používá různé zdroje, jako je počet volných bajtů v paměti, které v kombinaci s náhodným semínkem generují požadovanou náhodnost, kterou potřebuje.[12]

Programátoři využívající CAPI mohou získat entropii voláním CAPI CryptGenRandom (), po správné inicializaci.[13]

Podpora aplikace CryptoAPI byla ukončena Windows Vista a vyšší. Nové API se nazývá Cryptography API: Next Generation (CNG).[14] CNG systému Windows používá binární soubor registr klíč HKEY_LOCAL_MACHINESYSTEMRNGSeed k uložení nasazené hodnoty.

Novější verze systému Windows jsou schopny používat různé zdroje entropie:

  • TPM pokud je k dispozici a povoleno na základní desce
  • Entropie z UEFI rozhraní (pokud je spuštěno z UEFI)[15]
  • RDRAND Instrukce CPU, pokud je k dispozici
  • Hardwarové systémové hodiny (RTC )
  • Obsah tabulky OEM0 ACPI
  • Přerušit načasování
  • Načasování klávesnice a pohyby myši[16]

Vestavěné systémy

Vestavěné systémy mají potíže s nashromážděním dostatečné entropie, protože jsou to často velmi jednoduchá zařízení s krátkou dobou spuštění a operace generování klíčů, které vyžadují dostatečnou entropii, jsou často jednou z prvních věcí, které systém může udělat. Běžné zdroje entropie nemusí na těchto zařízeních existovat nebo nebudou aktivní dostatečně dlouho během bootování, aby byla zajištěna dostatečná entropie. Integrovaná zařízení často postrádají rotující diskové jednotky, zařízení lidského rozhraní a dokonce i ventilátory a síťové rozhraní, pokud existuje, nebude aktivní dostatečně dlouho, aby poskytlo velkou entropii. Některá zařízení postrádající snadný přístup k entropii mohou používat pevně zakódované klíče k nasazování náhodných generátorů nebo nasazování náhodných generátorů ze snadno uhodnutelných jedinečných identifikátorů, jako je MAC adresa zařízení. Jednoduchá studie[který? ] demonstroval rozšířené používání slabých klíčů tím, že našel mnoho vestavěných systémů, jako jsou směrovače, které používají stejné klíče. Předpokládalo se, že počet nalezených slabých klíčů by byl mnohem vyšší, pokud by do entropie některých těchto systémů nebyly začleněny jednoduché a často útočníkem určitelné jednorázové jedinečné identifikátory.[17]

(De) centralizované systémy

A generátor skutečných náhodných čísel (TRNG) může být (de) centrální službou. Jedním příkladem centralizovaného systému, kde lze získat náhodné číslo, je služba náhodného majáku z Národní institut pro standardy a technologie. Platforma Cardano využívá účastníky jejich decentralizace důkaz o sázce protokol pro generování náhodných čísel.[18]

Jiné systémy

Existují některé softwarové balíčky, které člověku umožňují použít proces uživatelského prostoru ke shromažďování náhodných znaků, přesně to, co dělá / dev / random, například EGD, démon Entropy Gathering.[19]

Hardwarová entropie

Moderní CPU a hardware často obsahují integrované generátory, které mohou operačním systémům poskytovat vysoce kvalitní a vysokorychlostní entropii. Na systémech založených na Linuxové jádro, lze číst entropii generovanou z takového zařízení prostřednictvím / dev / hw_random.[20] Někdy však / dev / hw_random může být pomalý;[21][22]

Existují některé společnosti vyrábějící zařízení na generování entropie a některé z nich jsou dodávány s ovladači pro Linux.[23]

V systému Linux lze nainstalovat rng-tools balíček, který podporuje skutečné generátory náhodných čísel (TRNG) nalezené v procesorech podporujících RDRAND návod, Důvěryhodné moduly platformy a v některých Intel, AMD nebo PŘES čipové sady,[24] efektivně zvyšuje sebranou entropii do / dev / random a potenciálně vylepšuje kryptografický potenciál. To je zvláště užitečné na bezhlavé systémy které nemají žádné jiné zdroje entropie.

Praktické důsledky

Správci systému, zejména ti, kteří dohlížejí na internetové servery, musí zajistit, aby se procesy serveru nezastavily z důvodu vyčerpání entropie. Entropie zapnutá servery využití jádra Linuxu nebo jakéhokoli jiného procesu jádra nebo uživatelského prostoru, který generuje entropii z konzoly a úložného subsystému, je často méně než ideální kvůli nedostatku myši a klávesnice, takže servery musí generovat svou entropii z omezené sady zdroje, jako je časování IDE.

Velikost entropického bazénu v Linux je možné zobrazit prostřednictvím souboru / proc / sys / kernel / random / entropy_avail a obecně by měl být alespoň 2 000 bitů (z maxima 4096).[25][26] Entropie se často mění.

Správci odpovědní za systémy, které mají nízkou nebo nulovou entropii, by se neměli pokoušet používat / dev / urandom jako náhrada za / dev / random, protože to může způsobit, že připojení SSL / TLS bude mít šifrování nižší úrovně.[27]

Některé softwarové systémy mění své Diffie-Hellman často, a to může v některých případech pomoci serveru pokračovat v normálním fungování i se zúžením entropie.[28]

Na serverech s nízkou entropií se proces může jevit zablokovaný, když čeká, až se v / dev / random objeví náhodné znaky (v systémech založených na Linuxu). Například v systému byl známý problém Debian to způsobilo exim4 kvůli tomu v některých případech pověsit.[29]

Bezpečnostní

Zdroje entropie lze použít pro útoky načasování klávesnice.[30]

Entropie může ovlivnit kryptografie (TLS / SSL) a serveru: Pokud server nepoužívá správný zdroj náhodnosti, budou klíče generované serverem nezabezpečené. V některých případech sušenka (škodlivý útočník) některé dokáže uhodnout bity entropie z výstupu a generátor pseudonáhodných čísel (PRNG), a to se stane, když se do PRNG nevnese dostatek entropie.[31]

Potenciální zdroje

Mezi běžně používané zdroje entropie patří časování myši, klávesnice a IDE, ale existují i ​​jiné potenciální zdroje. Například by se dalo sbírat entropii z počítače mikrofon, nebo sestavením senzoru pro měření turbulence vzduchu uvnitř a disková jednotka.[32]

Pro deriváty Unix / BSD existuje řešení založené na USB, které využívá procesor ARM Cortex pro filtrování / zabezpečení bitového toku generovaného dvěma zdroji entropického generátoru v systému.[33]

Viz také

Reference

  1. ^ random (4) - Linuxová manuálová stránka (die.net)
  2. ^ Robotické tendence »Chybějící entropie
  3. ^ Databáze balíků Fedora - audio-entropyd[trvalý mrtvý odkaz ]
  4. ^ "hasged - jednoduchý entropický démon". Citováno 3. dubna 2011.
  5. ^ Entropie a náhodná zařízení | LinuxLink od TimeSys - váš vložený zdroj Linuxu
  6. ^ / dev / {, u} náhodný ovladač pro GNU / Hurd (ibofobi.dk)
  7. ^ A b Solaris / dev / random prostřednictvím emulace
  8. ^ „Solaris / dev / random“. Archivovány od originál dne 2008-05-11. Citováno 2007-10-17.
  9. ^ Rexx Entropy Gathering Daemon pro OS / 2
  10. ^ Alternativa skartování příkazového řádku GPL pro Windows
  11. ^ Zdroj entropie na platformách Windows s nainstalovaným CryptoAPI
  12. ^ Jak Windows GnuPG generuje náhodná čísla na keygen?
  13. ^ http://www.cs.berkeley.edu/~daw/rnd/cryptoapi-rand http://archives.seul.org/or/cvs/Mar-2004/msg00078.html
  14. ^ [1]
  15. ^ https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/uefi-entropy-gathering-protocol
  16. ^ https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
  17. ^ Constantin, Lucian. „Miliony vestavěných zařízení používají stejné pevně dané soukromé klíče SSH a TLS“. Síťový svět. Citováno 2018-11-05.
  18. ^ „Řešení pro škálovatelnou náhodnost“. iohk.io. 6. června 2017. Citováno 14. září 2020.
  19. ^ Zabezpečené programy JAK - Náhodná čísla
  20. ^ „Re: SSL / TLS entropy problem,“ - MARC
  21. ^ Re: / dev / hw_random
  22. ^ Re: / dev / hw_random
  23. ^ http://www.std.com/~reinhold/truenoise.html http://random.com.hr/products/random/hg324.html Archivováno 2008-05-13 na Wayback Machine
  24. ^ [2]
  25. ^ Re: [exim] žádná odpověď na STARTTLS
  26. ^ náhodná (4) Linuxová manuálová stránka, die.net
  27. ^ Problém s entropií SSL / TLS, aka také vypršení časového limitu (was: sasl ldap problem)
  28. ^ Josefsson, Simon; [TLS] Re: Krátké klíče Ephermal Diffie-Hellman (seznam adresátů ietf.org)
  29. ^ [gnutls-dev] gnutls_rsa_params_init visí. Je regenerace rsa-params jednou denně příliš častá?, lists.gnupg.org
  30. ^ Zalewski, Michal; Zdroj unixové entropie lze použít pro útoky načasování stisknutí klávesy, 2003
  31. ^ Re: vyčerpání entropie (was: SSL / TLS passive sniffing) Archivováno 17. 05. 2011 na Wayback Machine, 2005
  32. ^ Vytvořte si svůj vlastní kryptograficky bezpečný protokol server / klient - 4.8.3. Sbírání entropie
  33. ^ http://www.entropykey.co.uk Archivováno 22 července 2010, na Wayback Machine

externí odkazy