Malá poznámka: většina počítačů dnes už má hardwarový generátor náhodných dat přímo v procesoru (RDRAND, PadLock). Problém je, že jsou uzavřené, takže není jasné, jestli je náhodou nemůže třeba NSA manipulovat. Taylor Hornby už ukázal, jak lze kompromitovat linuxový /dev/random, pokud by RDRAND dodával specifické hodnoty.
> Parádna vec samozrejme ARM procesorom neverím, pretože sú veľmi rozšírené a neveria im ani Rusi ani Číňania.
Nj, ale existují vůbec nějaké procesory, kterým lze věřit?
> Veľmi ma zaujíma tá ochrana proti prepísaniu.
Nezkoumal jsem to, ale vypadá to, že je to obecný mikrokontrolér, zápis do flash paměti si řeší interně softwarově a prostě ti ho nedovolí.
> USB kľúče na ktorých dokážem zakázať WRITE - hardvérovo - by sa teda naozaj zišli.
Ano, je škoda, že už se tam ten přepínač nedává. Před 10 lety to bylo docela běžné. Ty flash čipy uvnitř ale read/write pin mají furt a většinou to není BGA, takže ten jeden drátek se tam připájet dá (asi chcete nějaký flashdisk, který je fyzicky co největší, protože tam je šance, že to nebude kvůli úspoře místa vedeno pod čipem nebo nedejbože vnitřní vrstvou čtyřvrstvé desky a tím pádem to nebude taková pakárna).
To Jenda
>Nj, ale existují vůbec nějaké procesory, kterým lze věřit?
áno existujú platforma loongson, elbrus a sú tu ďaľšie s ktorými sa určite do budúcna pohrám, len je problém sa k nim dostať, ale ja to vyriešim. Chce to čas, peniaze a občas pomoc od odborníka alebo od komunity - čím je riešenie jedinečnejšie a originálnejšie tým je lepšie pre teba.
>Nezkoumal jsem to, ale vypadá to, že je to obecný mikrokontrolér, zápis do flash paměti si řeší interně softwarově a prostě ti ho nedovolí.
na toto sa musím pozrieť - možno ARM nahradím niečím iným mne na miniaturizácii nezáleží, takže je to skvelý začiatok ako tento open source nápad rozvinúť. Posledné roky tento problém so zápisom riešim s DVD-RAM a CD-čkami, na ktorých zálohujem svoje dáta a bootujem live systémy. Nevravím, že sa nedá na DVD mechanikách upraviť firmware - ale dá sa to lepšie kontrolovať čo ide do počítača a aké dáta ho opúšťajú. Len sa modlím , aby tieto technológie "CD-čka,DVD-RAM" výrobcovia neopustili - predsa optické pamäťové riešenia sú spoľahlivejšie ako nejaké nano kondenzátori vo flashkách, ktoré sa môžu poškodiť. Stačí ich nechať položené dlhšie "cca mesiace" vedľa mobilu, ktorý si tam vedľa USB kľúčov odkladáte a môžu sa narušiť dáta na USB-čkach a to používam výhradne tie drahšie prémiové.
> Ano, je škoda, že už se tam ten přepínač nedává. Před 10 lety to bylo docela běžné. Ty flash čipy uvnitř ale read/write pin mají furt a většinou to není BGA, takže ten jeden drátek se tam připájet dá (asi chcete nějaký flashdisk, který je fyzicky co největší, protože tam je šance, že to nebude kvůli úspoře místa vedeno pod čipem nebo nedejbože vnitřní vrstvou čtyřvrstvé desky a tím pádem to nebude taková pakárna).
No ja som našiel USB-čka kde je ten prepínač jeden sa volá KANGURU je veľmi drahý. A druhý sa volá NETAC U335 na aliexprese od 10-35 USD free shipping. Najviac ma však trápia NAND FLASH MEMORY CHIP-i, ktoré ak majú veľkú kapacitu nad 4GB tak sú BGA - pre mňa je to veľký problém TSOP sú lepšie, ale majú kapacitu. Tak či onak moje USB FLASH drive bude veľké ;-) a možno bude potrebovať extra 5V ;-) Ale vždy lepšie ako používať HDD cez USB - tie HDD, ktoré môžu mať kompromitovaný firmware.
> áno existujú platforma loongson, elbrus a sú tu ďaľšie s ktorými sa určite do budúcna pohrám
Proč bych měl věřit, že jedna NSA tam backdoory dává a jiná ne?
> Najviac ma však trápia NAND FLASH MEMORY CHIP-i, ktoré ak majú veľkú kapacitu nad 4GB tak sú BGA
Viděl jsem v nějakém Kingstonu 16GB nožičkový.
Řadič bývá nožičkový, takže by to šlo kdyžtak tapnout i na něm, pokud najdeš datasheet nebo to nějak odsniffuješ.
> tie HDD, ktoré môžu mať kompromitovaný firmware
Proč by mi mělo vadit, že má HDD kompromitovaný firmware (OK, asi na live distro, kde nemůžeš mít celý disk šifrovaný, to vadí, ale jinak ne), a proč by ho flashdisk mít kompromitovaný nemohl?
> Nevravím, že sa nedá na DVD mechanikách upraviť firmware
A jaký na to máš vlastně use-case? Zálohy máš snad šifrované, takže ti kompromitovaný storage nemůže vadit, a pokud bootuješ na cizím počítači a nechceš si zavšivit bootovací médium, tak po použití prostě zkontroluj, že se nezměnilo, ne?
Jj, nejvíce důvěryhodný bude procesor sletovaný z jednotlivých tranzistorů.
http://www.megaprocessor.com/
Nahodnost cisel se da jednoduse testovat. Akorat nemuzu nikde najit srovnani ChaosKey s nejakym jinym nahodnym generatorem. Na strankach projektu neni o tomhle vubec nic.
Vicemene mi vrta hlavou, jestli tenhle nahodny generator je opravdu o tolik lepsi nez bezne dostupne softwarove? Ma to vubec smysl resit externi hw generator?
Přesně právě proto to vadí. Ideální random number generátor bude mít normální rozložení hodnot, tzn každé číslo bude vracet se stejnou pravděpodobností. CRC sice nějak to rozložení změní ale není tam zaručená vlastnost krypto hashů, že malá změna vstupu vede na velkou změnu výstupu. Proto očekávám že výsledek nebude normalizovaný resp bude v něm poznat vstup. A protože vstupní hodnoty jsou nerovnoměrné, resp nejčastější hodnota je ve středu tak to půjde i zlomit - je to jako kostka kde 3 a 4 padá nejčastěji. Lepší by bylo použit nějakou secure PRF místo crc
Pokud výstup HW generátoru přimícháváte do poolu kernelového /dev/random, vůbec nepotřebujete, aby generátor měl rovnoměrné (což je mimochodem něco jiného než normální) rozdělení. V zásadě potřebujete pouze dostatečně konzervativní odhad entropie tohoto rozdělení, abyste věděl, "kolik náhodnosti dodává". To by fungovalo i bez "narovnávání rozdělení" CRCem. Tu "secure PRF" už /dev/random obsahuje.
záleží čo s tým CRC ďalej robia a ako ho využívajú, stačí sa pohrať najlepšie s assemblerom, aby to bolo rýchle a dá sa dopracovať k dobrým výsledkom - najviac mi však imponuje tá hláška od autorov projektu - že chaoskey je lepšie si postaviť sám a mal by byť vylepšovaný. Takže to CRC bol ich nápad - tento projekt by si zaslúžil oveľa väčšiu pozornosť, dúfam že sa do toho Open source komunita obuje a budú to rozvíjať.
Jen bych upřesnil, že ta determiničnost je právě to, co je ten zásadní problém. Proč? Používáte 4096 bitové šifrování? Kolik možností musíte zkusite na brute force útok? Dobře, a teď vám řeknu, že na vygenerování klíče byl použit deterministický generátor náhodných čísel. Běžel 5 minut a generoval 10000 náhodných čísel za sekundu. To je 300 sekund * 10000 = 3000000, 3 miliony. Nevím, které z nich je to správné. Ale můžu je zkusit všechny.
Proto jsou deterministické generátory tak špatný nápad pro kryptografii. Nemusím zkoušet 2^4096 možných kombinací. Když se použije špatný generátor, tak stačí třebas jen 2^24. A pokud se ještě použije špatně, tak to je klidně i jen pár tisíc čísel.
V běžném provozu je potřeba daleko víc náhodnosti než pár set bitů jednou ročně na vygenerování hlavního klíče (toho klíče, o kterém uživatel ví, chrání si ho a zálohuje). Jsou potřeba různé jednorázové klíče a jednorázové náhodné hodnoty, bez kterých by dané protokoly nebyly dost zabezpečené.
Co myslite tym 'jednoduse'. Ide to iba velmi komplikovane. Tu mate napriklad sadu testov ktore to robia:
http://www.phy.duke.edu/~rgb/General/dieharder.php
Externy HW generator je o 2 rady lepsi nez to co vam lezia z procesora.
Ano bavime se o "nahodnych cislech" - to je dost prazdny pojem. A muzeme se hadat jestli s toho lezou cisla zla nebo zeleno-ruzova.
Dulezite je k cemu se ta nahodna cisla maji pouzit. Pokud je chcete pouzit k vytvoreni sifrovaciho klice, tak PRNG nechcete v zadnem pripade, nekdo by totiz mohl zjistit cim byl naseedovan, obzvlast pokud by to byl nejaky "systemovy" PRNG a utocnik mel k dispozici treba pokracovani sekvence nahodnych cisel po vygenerovani toho klice (nebo jeste lepe kdyby mel par bajtu vytazenych z toho PRNG pred zacatkem generovani toho klice). Pokud ale chcete metodou monte-carlo merit pravdepodobnost nejakeho jevu, tak na to staci i nejaky hloupy PRNG, ktery ani neni kryptograficky bezpecny.
> Pokud je chcete pouzit k vytvoreni sifrovaciho klice, tak PRNG nechcete v zadnem pripade
O to bych se přel, a PRNG se velmi často k výrobě klíčů používá. Nebo si myslíš, že třeba mailserver s TLS má na každý handshake 256 bitů entropie pro výrobu session klíče?
> nekdo by totiz mohl zjistit cim byl naseedovan
Zde vidím problém pokud udělám třeba perfect forward secrecy a časem mě někdo vyhackuje. Proto se to občas (~minuta) přeseedovává.
> obzvlast pokud by to byl nejaky "systemovy" PRNG a utocnik mel k dispozici treba pokracovani sekvence nahodnych cisel po vygenerovani toho klice (nebo jeste lepe kdyby mel par bajtu vytazenych z toho PRNG pred zacatkem generovani toho klice)
Ne, proti tomuhle by měl být CSPRNG odolný. Pokud na to máš útok, tak jsi právě objevil třeba known-plaintext attack na AES v CTR módu.
"O to bych se přel,..."
Tady jsem nemel na mysli sifrovaci klice pro symetricke sifry, ale sifrovaci klice pouzite napriklad v certifikatu s platnosti 10 let.
"proti tomuhle by měl být CSPRNG odolný"
Odolný bude v obecném případě: tedy neznám nic o jeho stavu, byl dobre naseedovan, potom se z jeho vystupu o jeho stavu nic nedozvim. Nicmene ne vsechny pripady jsou obecne, nekdy se muze stat, ze za nejakych okolnosti, napriklad vinou spatne implementace (ta se stava prekvapive casto), muzete mnozinu moznych vnitrnich stavu v nejakem jednom konkretnim okamziku nejak omezit, prave na zaklade znalosti okolnich podminek. Potom nemusi byt nerealne provest simulaci vsech moznych stavu (z te omezene mnoziny) a zjistit, ktery odpovida pozorovanemu vystupu.
"pokud na to mas utok..."
Zadny utok nemam, ale to neznamena, ze tam neni dira, v pripade bezpecnosti je treba byt opatrny, a overit vsechny predpoklady (matematicke, ale i technicke), ktere sifra (resp. jeji spravna implementace) vyzaduje. Jinak ti nezbyde nez (stejne jako mne) verit autorum softwaru, ze toto udelali. (Coz napriklad u openssl zjevne neni stoprocentni, jak nedavna historie ukazala.)
To K
jednoznačne áno má to zmysel najmä pri routeroch a sieťových komponentách, ktoré majú obmedzený zdroj entropie najmä ak sú tesne po reštarte a musia zvládať VPN, IPSEC a podobné veci, tam to zmysel má. A má to zmysel aj na počítači je to ako adidas čím víc pásikú tým viac adidas ;-) čím viac entropie tým lepšie.
S tým lavínovým generátorom treba trocha opatrne, tá krabička by mala byť minimálne kovová/tienená a mala by tam byť aj kontrola/meranie teploty (prechod BE Q1). Voľne bežiaci lavínový generátor (tento prípad) sa dá synchronizovať na externý signál/zdroj napr. kapacitnou väzbou.
Nič nové pod slnkom. Už vyše roka vlastním USB TRNG generátor FST-01 (keď sa použije s NeuG kódom)
http://www.seeedstudio.com/wiki/FST-01
hardvér na ktorom to beží je veľmi podobný
Na rozdiel od toho popisovaného v článku v tom Tvojom čínskom zrejme nie je žiaden nezávislý 'zdroj' entropie - aspoň som ho v schéme nenašiel (F103 nemá na palube žiaden nezávislý HW random generátor) a celé je to potom záležitosť SW, takže z hľadiska bezpečnosti teoreticky trocha problém.
To "zrejme" v tvojej reakcii je klucove slovo. FST-01 samozrejme funguje ako true RNG
NeuG is an implementatio of True Random Number Generator, based on the sampling noise of ADCs (A/D converters).
It runs on STM32F103, and it outputs random bits at the rate of more than 80 kB/sec (kB = 1000-byte).
Hmmm ... radu STM32Fxxx tak trochu poznam ... podla tej schemy je jedinym zdrojom entropie sum pri prevode teploty z vlastneho (inak dost mizerneho) senzora na palube mcu (reklamne nezmysly z toho linku ako pouzitie sumu z napajania vynechavam). Rozhodne to nie je nic, co by sa chovalo nedeterministicky, staci zobrat fen ... a pri znamych trikoch ako napr. cele to zmrazit dostanes pri opakovaniom resete rovnake sekvencie, pretoze prevodnik bude podteceny a ziade sum sa negeneruje .... to sa uz aj obycajna zenerka ako zdroj sumu chova lepsie.
Softwarové riešenie, ktoré zabezpečí mix z rôznych zdrojov TRNG vhodné najmä do VPS:
https://www.vanheusden.com/entropybroker/
Zajímalo by mě, jestli někdo zná aplikaci, ve které by běžný /dev/(u)random přístup nestačil. (tj. systém získává entropii odkud se dá, třeba jenom pár bitů za sekundu, ale to stačí, protože tím seeduje CSPRNG třeba na bázi SHA2 nebo AES a to pak může vygenerovat libovolně mnoho pseudonáhodných dat softwarově a doufá se, že když někdo crackne SHA2 nebo AES, tak budou větší problémy jinde než v PRNG)
Tak to je hlavne tim, ze se pouziva /dev/random s tim jeho vestenim urovne entropie z kristalove koule.
Pravdepodobne neexistuje realna aplikace, kde by dostatecnou bezpecnost nezajistil nejaky celkem libovolny CSPRNG, ktery se jednou poradne zaseeduje (coz se u tech virtualu a jinych veci instalovanych kopirovanim stejneho image rootfs furt dokola pomerne casto nedeje, coz je daleko vetsi problem) a pak se do nej pridava nejaka entropie kdyz je k dispozici (kde ta entropie vlastne ani nemusi byt nijak extremne nahodna ani neodhadnutelna, takze se nabizi spousta zdroju).
"dostatecnou bezpecnost"
To je prave ten problem, autori nevi co je pro uzivatele dostatecna bezpecnost. A pokud to nenastavi konzervativne, tak budou po internetu lyncovani ze prvni "spatne" pouziti, kdy uzivatel mel jiny pohled na "dostatecnou bezpecnost", nez autori. V idealnim svete bude uzivatel znaly problematiky kryptografie a autor aplikace mu da na zacatku vybrat, takze si uzivatel bude moct zvolit zpusob vyhovujici jeho predstave o "dostatecne" bezpecnosti...
Par let zpatky jsem experimentoval s RNG z geigeru, kousku smolince a zvukovky. Zpracovani signalu a vybeleni bylo naprosto jednoduche: pokud doba od posledniho pulzu byla kratsi nez mezi poslednim a predposlednim tak 0, jinak 1. Teoreticky naprosto bezpecne, prakticky si dovedu predstavit HW utok (strilet jednotlive castice), a prakticky naprosto neuveritelne pomale.
tak chce to aktivnější smolinec, nebo citlivější detektor :)
Američani mají použitelné zdroje v detektoru kouře: http://etoan.com/random-number-generation/index.html
Proč zrovna Američani? Americium-241 jako zdroj záření je ve všech ionizačních detektorech kouře prodávaných i u nás. Je to asi nejdostupnější radioaktivní zdroj záření pro běžné lidi :-) Nicméně je to alfa zářič, takže na detekci potřebuješ Geiger-Müllerovu trubici se slídovým okénkem.
Tak starý dobrý český vojenský intenzimetr IT-65 stojí v Armatexu jen 690,- a přitom slídové okénko má - používá kvalitní GM trubici Philips 18504 s čelním slídovým okénkem (a je to přesnější přístroj než některé moderní digitální dozimetry s cenou přes 10000,-). Když se sonda s odkrytou beta clonou přiloží k americiu-241 z detektoru kouře, ve sluchátku to chrastí jak za osudné noci v Černobylu ;-)
Tak oprava - ještě pár let zpátky ionizační detektory byly opravdu ty nejlevnější a nerozšířenější detektory kouře, za cenu pod 200,-. Co jsem ovšem koukal teď, tak skoro všechno co se prodává jsou už jen optické detektory kouře (založené na rozptylu světla) :-( Pořád se dají sehnat ionizační detektory, ale je jich zdá se dost málo a jsou drahé :-/ Alespoň tedy po chvilce googlení se mi to tak zdá...
Oprava č. 2 - tak jsem špatně googlil, ionizační detektory se stále sehnat dají za ještě celkem rozumných 310,- např. zde: senzor kouře (ionizační) AL41
JA som raz čítal článok o zariadení, ktorý generoval šum na základe nejakého snímača svetla či tak najak - len sa k tomu už teraz neviem dopátrať. Ale aj tak ja si myslím, že najlepší generátoch náhodných čísel má POKERSTARS - tí používajú rádioaktívne cézium - dokonca o tom informujú užívateľov tohoto poker sites - zakladateľ PokerStarsu je kanaďan a bývalý zamestnanec IBM a tiež používajú pre svoj klientský program aj open source a odporúčajú nezačať heslo s číslom ale znakom. Proste tam tí musia mať fakt namakaný RAndom Generator. Tie tranzistory, ktoré generujú šum sú fajn, ale ja by som tam ešte pridal nejaký zdroj entropie a potom to testoval, či sa nerobia nejaké zhluky dát či je to pekne rovnomerne rozložené. Napríklad taký snímač intenzity svetla, ktorý by sa dal v serverovni nasmerovať na led diody, alebo veľmi pesný teplomer - hoci v serverovni sú konštantné teploty, alebo nejakú anténu ktorá zachytáva rádiový šum na nejakých nižších frekvenciách, kde sa neprenášajú dáta. Možností je dosť. Naozaj super projekt.
Ak ta to fakt zaujima ja som nasiel zaujimave informacie na:
http://www.bitbabbler.org
Na dsl.sk som našiel zaujímavý článok o tom ako sa dajú hacknúť monitori cez HDMI a cez USB. Tu je článok na dsl.sk
http://www.dsl.sk/article.php?article=18701
Anglicky zase tu:
https://www.defcon.org/html/defcon-24/dc-24-speakers.html#Cui
takže ako na ChaosKey beží ARM - hmm neviem, neviem každopádne tento projekt s pomerne jednoduchým riešením môže naštartovať a motivovať aj iných