byly časy, kdy jsme měli monitoring na množství entropie a u serverů, které generovaly klíče nebo terminovaly šifrované kanály se to kontrolovalo, hlavně přestaly služby fungovat, když entropie klesla pod určitou úroveň. Dnes vše běží z VM strojů někde v kontejnerech, spousty stavů se jim fejkuje hypervizorem/supervizorem a vlastně nikdo neví jak moc dobře se ty náhodná čísla generují a z čeho.
Najednou na jednom AMD serveru běží 200 VM a každý si nějaká čísla generuje z toho málo co má k dispozici a ono to nějak funguje. Řekl bych, že v tomhle odvětví máme ještě nějaké dodělávky...
ano, entropie se z ničeho nevyrobí, to jsem chtěl říct. Monitorovat samozřejmě lze, ale už nepoznáš jak ten vstup je kvalitní a jak entropie je vlastně entropická, že.
Dnes ale snad na žádném systému na tohle nemáme žádnou kontrolu, najednou o tom admini neví a nějak to funguje na pozadí. To mě trochu zaráží.
Ještě moje malá chyba, od jádra asi 5.6 se /dev/random už neblokuje. Používá se "CPU Jitter RNG", což si můžete představit jako smyčku jen s pár instrukcemi a měří se čas, za jaký se provede na spekulativním CPU. Ukazuje se, že to dává celkem dobrou entropii.
Pro jádra před 5.6 šlo nainstalovat balík haveged, který dělal vlastně totéž.
https://github.com/jirka-h/haveged
18. 9. 2024, 12:11 editováno autorem komentáře
A pozdeji i to prestalo mit smysl, entropy_avail je fixne 256...
Nastesti uz novejsi verze Javy /dev/random nepouzivaji, na OS nespolehaji a kryptograficky bezpecny generatory cisel maji v sobe.
V dobe Java8 bylo caste, ze se neco na siti uprdnulo, popadaly tisice konexi do DB a kdyz se aplikace snazila ty konexe obnovit tak zustala zablokovana a cekala na generator nahodnych cisel.
...5.10.119 plus vse okolo... viz konkretni commit odkazany vyse ;-)
Ono je těžké tu entropii někde vzít, když v systému není. Snad jen cíleně přidat nějaký harwarový zdroj náhodných dat.
Intel se to pokusil vyřešit instrukcí RDRAND. Ta ale z mě nejasných důvodů nezískala důvěru části Linuxových vývojářů. Tomu nějak nerozumím - procesoru jako takovému věří, ale téhle jedné instrukci ne. Tak snad vymyslet nějaké jiné řešení, ale jaké, aby si důvěru získalo?
Pokud si pamatuji dobře, tak Intel tehdy celkem silně tlačil na to, aby rdrand byl JEDINÝ zdroj entropie. Což spoustě lidí smrdělo nějakými zadními vrátky*, a vyvolalo to silnou protireakci. Navíc tou dobou to byla ještě novinka, nebylo úplně jasné, jak spolehlivé to celé je...
* On ten CPU má relativně omezené možnosti, jak škodit, aniž by to bylo hned poznat, a aby to bylo prakticky zneužitelné, bez fyzického přístupu. Ale zrovna u zabudovaného black-box RNG, je ta zneužtelnost i provedení mnohem jednodušší. Místo skutečně náhodných dat to může začít poskytovat známou sekvenci s nízkou entropíí, a triggerem může být spousta věcí, včetně času. A bude to prakticky nezjistitelné.
Dneska se to resi specializovanym HW pripadne pro chude a zebrajici jako cmoudova sluzba. Kde vam dodavatel toho HW garantuje uroven entropie. Nekde je to i primo vyzadovano (vc seznamu overenych reseni) pro sluzby ktere musi mit vysoke zabezpeceni.
Je pak uplne jedno jestli je to virtual nebo ne. Toho HW se zepta po siti na nahodne cislo.
Tahle reseni typu "monitoring entropie" jsou zase typickym obchazenim spravneho reseni - tzv. pojd na mne z boku.