Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
RNG = SHA1(NSA_KEY || čítač)
, kde by důkaz že výsledek není náhodný by vyžadoval umět (rychle) najít kolizi v SHA1. To nikdo neumí (doufám). Téhle vlastnosti se krásně říká kleptografie.
Pokud si říkáte: "jak by mohla instrukce vědět co má vrátit," pak jste nedávali pozor. Procesor pochopitelně ví, co je v paměti. Jednotlivé instrukce můžou být dost složité, rozkládat se na desítky operací v mikrokódu, využívat mnohé jednotky procesoru, prostě jedna instrukce může být sama o sobě dost složitý program.
Následující část je naprostá spekulace (oproti té předchozí, která je obyčejná spekulace).
Jen pro zábavu jsem se zamyslel, jak by se nejjednodušeji dal současný RNG v linuxu rozbít, aby si toho nikdo nevšiml. Nápad využívá toho, že RDRAND je definovaný jako inline funkce, a XOR následuje hned potom. Napadlo mě následující: RDRAND při svém vyvolání zkontroluje, jestli je v cache dword 0xCAFEBABE (touhle hodnotou vyplňuje garbage collector v Javě nepoužívanou paměť). Pokud tam není, pak se chová přesně podle dokumentace. Pokud tam je, pak projde pipeline a vymění XOR následující po RDRAND za MOV RAX, <hodnota z kleptogenerátoru>
. Pokud v pipeline žádný XOR není, pak se chová podle dokumentace.
Tohle má tu kouzelnou vlastnost, že se slabina projeví jen pokud z /dev/random čte Javovský program, a neprojeví se při testech náhodnosti, protože tam se obvykle nejdřív nasbírají data a pak se na nich dělají výpočty, a navíc se obvykle nepoužívá XOR. Takže chyba nejde debugovat.
Ve skutečnosti dost pochybuju, že by to NSA / Intel udělali zrovna takhle, protože i drobná změna kódu by tenhle backdoor rozbila. Jde spíš o myšlenkový experiment, který měl dokázat, že backdoor nepotřebuje složitý program na to aby fungoval. Navíc by těžko dosáhli těch 800 MB/s, pokud by měli pořád dokola procházet cache.
Nabízí se pochopitelně otázka, proč se obtěžovat s RNG, když se dá udělat zajímavější backdoor někde jinde. Odpověď je bohužel jednoduchá: protože náhodnost nejde rozumně testovat. Jakýkoli backdoor v RNG má velkou šanci, že si ho nikdo nevšimne. Vzpomeňte se na Debian a chybu v OpenSSL. Tam byla entropie generátoru redukována na směšných 16 bitů, a nikdo si toho nevšiml 2 roky. Navíc kdo říká, že backdoorů není víc, že.
Tiskni
Sdílej:
vmlinuz nordrand
Navíc, v současnosti silně propagované šifry založené na eliptických křivkách (které mimochodem propaguje NIST, ve kterém má NSA velké slovo) naprosto nutně vyžadují kvalitní generátor náhodných čísel.Ne, nevyžadují. Pokud nemáš problém s deterministickou signaturou (RFC 6979), tak nepotřebuješ dokonce vůbec žádnou náhodu. Ve zkratce, ta hodnota, co musí být normálně náhodná, se nastaví na SHA(message || key) (actually, it's HMAC). Pro stejnou zprávu ti to vždycky vyplivne stejný podpis, což ti může vadit nebo se ti naopak může hodit (záleží od aplikace), pro jinou zprávu to vyplivne jinou hodnotu.
Stačí aby útočník dostal jen pár bitů informace o výsledku RNG a šifra je prolomená.Koukám na to PDF (strana 125) a chtěl bych vidět to odvození pro jiná známá m. Btw. tohle mě potěšilo:
#define EXTRACT_SIZE 10 if (!memcmp(tmp, r->last_data, EXTRACT_SIZE)) panic("Hardware RNG duplicated output!\n");mám tedy 2^-80 šanci, že mi to celé crashne? :)
mám tedy 2^-80 šanci, že mi to celé crashne? :)Nojo, v pripade povoleneho FIPS 200 (zdravim NIST) je to tak - takze moc bych se nesmal, protoze to je fakt. Ale imho lepsi crash nez dvakrat po sobe stejna hodnota
big brother, pardon, google, nebo neco jinyho? Protoze tam me fulltext hledani 'repeat' nenaslo akorat 'repeatable'
Ono ale když se budou pořád dokola opakovat dvě stejná čísla, tak to není o moc lepší…
Ja to nevymyslel a take se mi to zda jako blbost (tohle si ma aplikace resit sama a nema to byt na jaderne urovni, natoz ve vanilceA čemu to tam vadí, když je to ve výchozí konfiguraci stejně vypnuté?).
Jak už tu někde padlo: náhoda se dost blbě testuje. Záměrně špatný generátor je prakticky neodhalitelný1 a tohle je asi jen taková ochrana proti případu, že by někdo z blbosti napsal return 1;
.
[1] dá se otestovat offline, jestli poskytuje dostatečnou entropii, ale za běhu to asi z výkonnostních důvodů nikdo dělat nebude – navíc: u jak velkých kusů by se ta entropie měla měřit?
...asi jen taková ochrana proti případu, že by někdo z blbosti napsal return 1;
Nejak mi ta navratova hodnota nedochazi (obrana jadra sama pred sebou na takto trivialni urovni se mi opravdu nezda jako spravne pochopeni). Mas nejaky priklad?
Mas nejaky priklad?
bit <= '1';(VHDL, kdyby to někdo nepoznal)
A uplny kontext by nebyl? I pres trivialni test-bench random generatoru neprojde takovehle uklepnuti se ve VHDL/Verilogu (tim zabranim preklepu HW navrhare).Nevím, třeba je tam HW bug (vyrostl tam fous křemíku), kdy to uzemní gate jednoho tranzistoru a prostě to občas neupdatne ten registr.
A prosim bez pohadek o semi-intelligent, self-reconfigurable FPGA...Hej!
Nevím, třeba je tam HW bug (vyrostl tam fous křemíku), kdy to uzemní gate jednoho tranzistoru a prostě to občas neupdatne ten registr.Ok, pak bych tyto kontroly musel provadet uplne za kazdou instrukci! A co takhle kontroly toho kontrolniho kodu?! Juj, to je vlastne dalsi kod, ten bych mel pro jistotu take kontrolovat... Pouceni: Ultra-spolehlive systemy vypadaji jinak a vanilla Linux do teto kategorie nespada.
Nevím, mně přijde bug, že RNG vrací konstantu, docela uvěřitelný… V procesoru asi ne, ale když to bude připojené jako periferie…Mne zase moc ne
obrana jadra sama pred sebou na takto trivialni urovni se mi opravdu nezda jako spravne pochopeniV budoucnu může být HW generátorů více a bude k tomu nějaký driver interface a podle mě se prostě může stát, že to třeba při špatné inicializaci prostě vyčte samé nuly.
dá se otestovat offline, jestli poskytuje dostatečnou entropiiFakt? Jak? Poskytuje
SHA(_NSAKEY || counter)
dostatečnou entropii? Odhalíš to?
Záleží, co je counter
, odkud kam jeho hodnota roste, zda se někam ukládá, zda se resetuje. Po čase1 bys měl začít dostávat stejné hodnoty – jinak by to míjelo i záměr útočníka.
[1] nebo na různých CPU stejného typu. Případně by to mohli mít vázané na sériové číslo procesoru a museli by evidovat, kdo si jaký koupil – což si zase lidi, kteří dělají něco nebezpečného, dost možná ošetří (např. nekoupí počítač přes Net na svoje jméno) i z jiných důvodů (aby neprosákla jejich identita, kdyby nějaký program někam bonzoval ID procesoru).
Záleží, co je counter, odkud kam jeho hodnota roste, zda se někam ukládá, zda se resetuje.Je 128bitový, takže ho v tomto vesmíru nejspíš nepřetečeš.
nebo na různých CPU stejného typu. Případně by to mohli mít vázané na sériové číslo procesoru a museli by evidovat, kdo si jaký koupilTeoreticky ti pak stačí bruteforce přes sto milionů prodaných procesorů, což je zvládnutelné.
tohle si ma aplikace resit samaJak to má dělat? Tohle mixuje do poolu, aplikace se k tomu nikdy nedostane.
já chci prostě vytáhnout číslo z /dev/random.Ty si chces vytahnout cislo, ktere je umyslne omezene (tedy napr. podminkou, ze dve po sobe jdouci cisla nejsou stejna)? Nu, nyni se asi kazdy, kdo dela treba simulace apod. obraci v hrobe
Ty si chces vytahnout cislo, ktere je umyslne omezene (tedy napr. podminkou, ze dve po sobe jdouci cisla nejsou stejna)?Výstup /dev/random už takto omezený není, protože je až daleko po mixování! Teď řešíme tahání z HW RNG. Tímto omezením nepatrně snížíš entropii toho, co z něj taháš, takže místo 80 bitů entropie tam přileješ pokaždé 79,9999. Jediné, co se mi nelíbí, je, že jádro na vadném HW RNG udělá panic(). Podle mě by mělo vyhodit notice nebo warning.
Btw je uplne bezna praxe si stavet vlastni generatory nahodnych cisel (neni to nic sloziteho, pokud mas na vstupu vysoce nahodny generator s co nejvice rovnomernym rozlozenim pravdepodobnosti - tuto ulohu by imho mel plnit prave /dev/random).Myslíš PRNG nebo co? Protože jinak mě nenapadá, k čemu by mi to bylo…
Tímto omezením nepatrně snížíš entropii toho, co z něj taháš, takže místo 80 bitů entropie tam přileješ pokaždé 79,9999.Ano, ale uz tohle mi prijde jako prilis ovlivnujici (proste odriznu nektere potencialni vystupy nasledneho mixovani nebo jim alespon divne zmenim pravdepodobnost vyskytu oproti tomu, jak to HW navrhari zamysleli).
Jediné, co se mi nelíbí, je, že jádro na vadném HW RNG udělá panic(). Podle mě by mělo vyhodit notice nebo warning.Nu, tady uz "je mi to jedno". Proste padla hodnota nesplnila muj pozadavek a pote me uz nezajima co se bude dit dal (respektive zavisi to na jinych faktorech - vetsinou netechnickych
Myslíš PRNG nebo co? Protože jinak mě nenapadá, k čemu by mi to bylo…Ano, tady jsem uz mel na mysli PRNG.
proste odriznu nektere potencialni vystupy nasledneho mixovani nebo jim alespon divne zmenim pravdepodobnost vyskytu oproti tomu, jak to HW navrhari zamysleliNutno podotknout, že tohle padne jenom v 2**-80. A výrobci HW RNG neměli zamýšlet, že tam pošlou stejná čísla častěji, protože pak už to jaksi není RNG :).
Nu, tady uz "je mi to jedno". Proste padla hodnota nesplnila muj pozadavek a pote me uz nezajima co se bude dit dal (respektive zavisi to na jinych faktorech - vetsinou netechnickychMě by štvalo, že mi někde umře server jenom proto, že chcípnul RNG (což může a nemusí být vážná závada - pokud to třeba není vytížený HTTPS server, tak mě to tak netrápí).). Napr. v pripade FIPS 200 bych volil ten panic(), protoze to je poruseni "vyssiho" narizeni naroku na HW.
protože pak už to jaksi není RNG :)Ale to my prave nevime
Mě by štvalo, že mi někde umře server jenom proto, že chcípnul RNG (což může a nemusí být vážná závada - pokud to třeba není vytížený HTTPS server, tak mě to tak netrápí).Nesmis mit servery v USA
0xCAFEBABE - touhle hodnotou vyplňuje garbage collector v Javě nepoužívanou paměťCože?
Nic proti, ale tohle už je prostě paranoia. Procesor nemůže vědět, jaký kód zpracovává – vidí sice instrukce, ale nemá a nemůže mít ponětí o „big picture“, o sémantice těch instrukcí. Strojový kód linuxového RNG se každou chvíli mění – kvůli změnám v kódu samotném, kvůli různým .configům i kvůli změnám v kompilátoru – takže se prakticky nedá detekovat. CPU nemůže tušit, ve kterém registru či kde v cache/RAM se nachází vygenerovaná náhodná čísla. A kdyby tohle věděl, vůbec nemusí útočit pomocí ovlivňování RDRAND, ale může ty hodnoty přepsat přímo. Jak to kdo zjistí?
Nevylučuji, že je RDRAND cinklý či prostě jenom nekvalitní, ale ne takhle.
Ivy Bridge začalo být vyráběno roku 2011 a to nezahrnuji to, že od zmrazení designu do zahájení produkce taky muselo uběhnout pár měsíců. Do RHEL 6 byla podpora přidána až v půlce roku 2012. Nechcete mi tvrdit, že Intel má křišťálovou kouli a umí detekovat přítomnost kódu, který ještě nebyl napsán?
Nechcete mi tvrdit, že Intel má křišťálovou kouli a umí detekovat přítomnost kódu, který ještě nebyl napsán?1. jak je psany dole, detekovat konkretni kod neni potreba 2. intel nepotrebuje kristalovou kouli, protoze sam dodal ten patch ktery to pouziva...
Linux-LibreTeda to je docela drsné i na moje poměry.
Nabízí se pochopitelně otázka, proč se obtěžovat s RNG, když se dá udělat zajímavější backdoor někde jinde. Odpověď je bohužel jednoduchá: protože náhodnost nejde rozumně testovat. Jakýkoli backdoor v RNG má velkou šanci, že si ho nikdo nevšimne. Vzpomeňte se na Debian a chybu v OpenSSL. Tam byla entropie generátoru redukována na směšných 16 bitů, a nikdo si toho nevšiml 2 roky. Navíc kdo říká, že backdoorů není víc, že.Ale nemelo by to (mira entropie, tedy skutecna nahodnost generovanych dat) byt zjistitelna treba pomoci komprese? Neni snad pravda, ze skutecne nahodna data jsou nekomprimovatelna?
Takhle offline by to jít testovat mělo1 – postavit řadu počítačů s různými procesory a různými distribucemi/jádry/knihovnami a generovat gigabajty náhodných dat a zkoumat jejich entropii.
[1] dělá to už někdo? bylo by to opravdu vhodné
/dev/random
a čtení z něj. Ale raději bych to neměl říkat moc nahlas, nebo brzy někdo vašeho ražení začne prosazovat, aby se při instalaci Linuxu randomizovala čísla syscallů Pokud by hypoteticky Intel chtěl přidávat backdoor do procesoru, má hromadu způsobů, jak to udělat bez nutnosti protlačit patch do jádra. Například není nijak těžké modifikovat instrukce používané na volání syscallů, aby detekovaly otevření /dev/random a čtení z něj.to by se dalo snadno odhalit protoze by ti v systemu neubyvala entropie...
Svatej Tučňáku, to je tedy paranoia. ... Na současném řešení s XORováním mi nepřijde nic zásadně špatně.proste jeste nemas ten spravnej security mindset
to by se dalo snadno odhalit protoze by ti v systemu neubyvala entropie...Neubývala, protože bych to ošvindloval až při návratu ze syscallu.
proste jeste nemas ten spravnej security mindsetÚhybný manévr, kterým zakrýváte nedostatek (či přesně řečeno absenci) argumentů. Zkuste být konkrétní a popsat jakýkoliv realistický útok, který by s XORem šel provést a bez něj nikoliv.
Neubývala, protože bych to ošvindloval až při návratu ze syscallu.Jako ze bys prepsal buffer co to vraci? To by se dalo snadno odhalit pridanim jednoho radku do random.c, ktery pred navratem ten buffer vynuluje, pripadne tam nahraje nejakou znamou, nenahodnou hodnotu...
Zkuste být konkrétní a popsat jakýkoliv realistický útok, který by s XORem šel provést a bez něj nikoliv.Jak uz jsem psal v tom prispevku na ktery jsem odkazoval a ktery se me nechce prekladat do cestiny: 1. reseni s xorem je velice jednoduche. Pravdepodobne mnohem jednoduzsi nez cokoli jinyho co bys dokazal vymyslet 2. narozdil od jinych reseni je to naprosto neodhalitelne...
Jako ze bys prepsal buffer co to vraci? To by se dalo snadno odhalit pridanim jednoho radku do random.c, ktery pred navratem ten buffer vynuluje, pripadne tam nahraje nejakou znamou, nenahodnou hodnotu...Ano, dalo by se to odhalit, pokud by ovšem někoho napadlo to odhalovat. Ale to je u řešení s XORem dost podobné: Vaše představa o neodhalitelnosti je naprostá iluze, stačilo by porovnat chování generátoru s jiným ekvivalentním, který používá trochu jinou posloupnost instrukcí.
Ale to je u řešení s XORem dost podobné: Vaše představa o neodhalitelnosti je naprostá iluze, stačilo by porovnat chování generátoru s jiným ekvivalentním, který používá trochu jinou posloupnost instrukcí.Opravdu? I když je to implementované tak, aby vylezlo SHA(NSAKEY || counter++ || serial number)?
SHA(NSAKEY || counter++ || serial number)Neznamenalo by to, že by RNRAND dávala v této situaci vždy stejnou sekvenci vůči historii volání po powerupu? P.S. Ale nevím kdy by se měl ten counter inkrementovat.
Napriklad hashovat vstup z nejaky zasumneny web kamery...Pozor na integrovaný JPEG kodér, jehož funkcí je naopak šum a entropii odstraňovat ;).
P.S. Docela by mě zajímalo zda v prostředí bez neutrin (asi?) by se některé izotopy staly stabilními.On někdo ukázal, že se izotopy rozpadají (jen) díky neutrinům?
Ne, ale prý různé izotopy reagují různou rychlostí a Země se okolo Slunce pohybuje extra blízko s malými výkyvy.Já zatím viděl jenom jeden nějaký malý experiment, kde tohle pozorovali. Už to někdo ověřil?