485 / 691MIX-H

Entropy Mixing

Míchání entropie

Entropy Mixing kombinuje vstupy pro generování tajných hodnot. Přínos závisí na jejich nepředvídatelnosti, vzájemných závislostech a konkrétním mechanismu; počet zdrojů ani délka hashe samy bezpečnost neurčují.

Míchání entropie je zpracování více vstupů do společného stavu nebo výstupu. Je třeba odlišit vložená data, doloženou entropii a následné deterministické rozvíjení. Dva názvy rozhraní nemusí znamenat dva nezávislé zdroje.

NIST SP 800-90B upozorňuje, že společnou entropii závislých zdrojů je obtížné odhadnout. Časy příchodu paketů a přístupu k disku mohou souviset. Jejich oddělené odhady proto nelze bez doloženého modelu jednoduše sečíst. [NIST SP 800-90B — Additional noise sources]

RFC 4086 používá XOR jako jednoduchý příklad míchání. Nezávislý rovnoměrný vstup zachová rovnoměrnost výsledku, ale kopie stejného vstupu dává X XOR X = 0. To je ukázka významu závislosti, nikoli návod na konstrukci peněženky. [RFC 4086 — Mixing and randomness requirements]

Silné míchání může soustředit dostupnou nejistotu; deterministický hash známých vstupů však zůstává předvídatelný. RFC 4086 rozlišuje míchání a rozvíjení. Délka výsledku ani přidání známé konstanty nedokazují stejné množství nové entropie. [RFC 4086 — Mixing and randomness requirements]

NIST SP 800-90B dovoluje připojit další šumové vstupy k primárnímu zdroji přes schválený conditioning, ale v tomto režimu jim nepřiznává další entropii. Jde o pravidlo daného hodnocení, nikoli tvrzení, že jiné zdroje nikdy nemohou pomoci. [NIST SP 800-90B — Additional noise sources]

V OpenSSL 3.5 přimíchává RAND_add() počet bajtů num; randomness je odhad entropie v bajtech mezi nulou a num. Délka bufferu sama tento odhad neospravedlňuje. Výchozí generátor se běžně inicializuje a obnovuje automaticky ze systémových zdrojů. [OpenSSL 3.5 — RAND_add and FIPS reseeding]

Dokumentace OpenSSL 3.5 uvádí, že ve FIPS režimu jsou aplikační data pouze dodatečným vstupem, nikoli důvěryhodným zdrojem entropie. Jejich přimíchání se nepočítá jako plný reseed. Samotné zavolání RAND_add() tedy takové obnovení nedokládá. [OpenSSL 3.5 — RAND_add and FIPS reseeding]

RFC 5869 rozlišuje HKDF-Extract a HKDF-Expand. První soustřeďuje entropii vstupu, druhý odvozuje požadovanou délku. Parametr info váže výsledek na aplikační kontext; není náhradou kvalitního počátečního materiálu ani důkazem nové entropie. [RFC 5869 — HKDF extraction, expansion and independence]

Kontrola má určit původ vstupů, závislosti, možnosti útočníka a konkrétní mechanismus. RFC 5869 výslovně řeší nezávislost a manipulaci solí. Pouhý seznam zdrojů ani test náhodného vzhledu nedokazuje, že při výpadku zdroje zůstane konstrukce bezpečná. [RFC 5869 — HKDF extraction, expansion and independence]

Pro nejúplnější obraz čtěte toto heslo společně s Cryptographic Entropy, CSPRNG, True Random Number Generator, Seed Generation. Opačným směrem na něj odkazují také Dice Roll Entropy, True Random Number Generator.

DOC · 001NIST SP 800-90B — Additional noise sourcesSpecifikace ↗DOC · 002RFC 4086 — Mixing and randomness requirementsSpecifikace ↗DOC · 003OpenSSL 3.5 — RAND_add and FIPS reseedingDokumentace ↗DOC · 004RFC 5869 — HKDF extraction, expansion and independenceSpecifikace ↗
Primární zdroje · Nejde o investiční doporučení