478 / 736H

Cryptographic Entropy

Kryptografická entropie: co dělá tajemství neuhodnutelným

Dlouhý a složitý zápis ještě nemusí být bezpečný. U peněženky záleží hlavně na tom, jak její tajemství vzniklo a co o něm může vědět někdo jiný.

Entropie v kryptografii popisuje nejistotu, která útočníkovi zbývá při hádání tajné hodnoty. Pro bitcoinovou peněženku je důležitá už při vzniku základu jejích klíčů. Nejde o to, zda znaky vypadají složitě: podstatné je, z kolika skutečně možných výsledků se vybíralo, jak byly pravděpodobné a co z tohoto procesu útočník zná.

Představte si, že někdo vytvoří tajemství z data a času založení peněženky. Výsledek může po zakódování vypadat jako dlouhá změť znaků. Pokud ale útočník zná přibližný čas i postup, může zkoušet jen malý okruh možností. Délka zápisu mu práci nutně nezkomplikuje. RFC 4086 právě proto odlišuje nepředvídatelnost od pouhého zdání náhodnosti. Entropii neposoudíte pohledem na jeden klíč; potřebujete vědět, jak vznikl. [3]

Bit je základní jednotka zápisu dat a má hodnotu 0 nebo 1. Počet bitů ale sám neříká, kolik nejistoty zůstává útočníkovi. Když peněženka vytváří Seed Phrase podle BIP39, nejprve potřebuje náhodný vstup. Teprve potom ho převede na slova. U 12 slov jde o 128 bitů vstupu a 4 bity kontrolního součtu; u 24 slov o 256 bitů vstupu a 8 kontrolních bitů. Kontrolní součet pomáhá odhalit některé chyby v zápisu, ale nepřidává entropii: vypočítá se z existujícího vstupu. Ani delší seznam slov proto nenapraví špatně vytvořenou náhodnost. Důležitý je způsob vzniku zálohy, ne jen počet slov. [4]

Peněženka nemusí pro každý nový bajt, tedy skupinu 8 bitů, provádět nové fyzikální měření. Může použít kryptografický generátor zvaný DRBG: algoritmus, který z tajného počátečního stavu vytváří další hodnoty. Při správném návrhu a použití je pro toho, kdo stav nezná, obtížné výstupy předpovědět. Algoritmus je přitom deterministický: stejný úplný stav a stejné vstupy dají stejné pokračování. Vyrobením více bajtů tak automaticky nevzniká více nové fyzikální entropie. Záleží na kvalitě počátečního vstupu i ochraně vnitřního stavu. [2]

Hashovací funkce vypočítá z dat otisk pevné délky, který může působit náhodně. Pokud ale někdo zná vstup, může vypočítat stejný výsledek. Zcela známé vstupy se tak tajemstvím nestanou. Odborný pojem conditioning označuje zpracování, které může omezit nerovnoměrnost a soustředit již dostupnou nejistotu. Nejde o výrobu tajemství z ničeho. Ani u několika zdrojů nelze jejich entropii automaticky sčítat: mohou spolu souviset a přinášet tutéž informaci. [1] [3]

Elektronický zdroj šumu se může porouchat nebo změnit chování s okolními podmínkami. Proto NIST SP 800-90B požaduje při spuštění i za provozu kontroly nezpracovaného šumu, tedy ještě před jeho úpravou. Tyto kontroly hledají známky poruch; nejsou důkazem, že je každý výstup bezpečný. Vývojář musí znát zdroj, jeho omezení a možné závislosti. Při zjištěném selhání se chyba hlásí aplikaci, která data používá. Při trvalé poruše musí zdroj přestat vydávat výstup. Samotná přítomnost čipu označeného jako generátor náhodnosti nestačí. [1]

Pokud útočník získá vnitřní stav DRBG, může podle jeho konstrukce předvídat další výstupy. K obnovení nepředvídatelnosti je potřeba dostatečný nový vstup, který útočník nezná; doplnění takové entropie se nazývá reseed. Pouhé další počítání nebo přidání známého času tuto ochranu nezaručuje. A pozor na rozdíl mezi opravou generátoru a bezpečím starých prostředků: obnova generátoru nezneplatní už uniklý klíč. [2]

Statistický test může ukázat například podezřelé opakování. Nezjistí ale s jistotou, zda útočník zná tajný vstup nebo způsob, jak výstup předpovědět. Na toto omezení výslovně upozorňuje NIST SP 800-22. Testy jsou užitečná část kontroly, nikoli náhrada rozboru celého generátoru. Soubor plný zdánlivě náhodných čísel tedy není sám o sobě důkazem, že je peněženka bezpečná. [5]

Začátečník nemusí počítat entropii své peněženky ručně. Užitečnější je hledat doložený postup jejího vytváření: odkud bere náhodnost, jak ji zpracovává, jak reaguje na chyby a jak chrání tajné údaje. NIST SP 800-90C řeší právě spojení zdrojů entropie a DRBG do celého generátoru. Odkaz na standard či známý čip však ještě nedokazuje, že ho konkrétní verze peněženky používá správně. Rozhodující jsou doložené vlastnosti skutečné implementace. [1] [6]

Pro nejúplnější obraz čtěte toto heslo společně s Entropy Bit, CSPRNG, Dice Roll Entropy, Private Key. Opačným směrem na něj odkazují také BIP85, Dice Roll Entropy, Entropy Bit, Brute Force Search Space.

DOC · 001NIST SP 800-90B — Entropy source design and health testsSpecifikace DOC · 002NIST SP 800-90A Rev. 1 — Deterministic generation and reseedingSpecifikace DOC · 003RFC 4086 — Unpredictability and source limitationsSpecifikace DOC · 004BIP39 — Entropy, checksum and mnemonic encodingSpecifikace DOC · 005NIST SP 800-22 Rev. 1a — Limits of statistical testingDokumentace DOC · 006NIST SP 800-90C — Complete random bit generator constructionsSpecifikace
Revidováno: Primární zdroje · Nejde o investiční doporučení