Něco mi to silně připomíná. HW bez zdroje entropie, jediná měnící se hodnota, kterou vidí programátor, je tak počet sekund od bootu. Navíc zákazník měl požadavky na náhodnost dat, do kterých se promítalo asi tak (jenom) 1000 vygenerovaných hodnot. Náhodnost se iniciovala až při prvním použití, takže aspoň nějaká náhodnost tam byla, a proto občas neprošel test náhodnosti (při strojových testech běžel tento test až po několika minutách po bootu). Naštěstí to nebylo nic s šifrováním.
Tak tohle je naprosto klasický problém, a i popis toho, jak přemýšlel HW inženýr poměrně sedí. Od jisté doby přidávám do obvodového návrhu dva obyčejné tranzistory, a za pár korun se tím vytvoří pořádný generátor na bázi lavinového průrazu. Místa na PCB to v SMD moc nezabere, a ušetří to značné problémy s generováním náhodných čísel. Při čtení poznámky o warningu ohledně asynchronní logiky mi to připomělo stejný warning, který na mě ohledně asynchronní logiky vyhodilo ISE při pokusu implementovat vícero LFSR na generování náhody uvnitř do FPGA. Jo, a opravdu to moc dobře nefungovalo, a ovlivňovalo vedle položené obvody. Ani když jsem to posunul floorplanem kousek vedle to nebylo úplně ideální.
Daj si najst napriklad generator bieleho sumu.
Inak existuju aj specialne sumove diody (Vyber toho najhorsievo diodoveho odpadu)
dobre su napriklad Ruske usmernovacky.
http://cs.wikipedia.org/wiki/%C5%A0umov%C3%BD_gener%C3%A1tor Tie schemicky co tam su staci doplnit niecim co z toho spravy LVTTL vystup.
Schéma s "jenom dvěma SMD tranzistory" by mě taky zajímalo, takhle zběžně jsem našel akorát zapojení, co potřebují 18V napájení, což věci trochu komplikuje:
http://robseward.com/itp/adv_tech/random_generator/diagram.gif
Ano, je to tento typ zapojení. Je pravda, že potřebuje trochu větší napětí, což je jasné z principu funkce. Pro praktické provedení se někde vhodné napětí "ukradne" od měničů pulsních zdrojů nebo měničů I/O obvodů, jako právě v případě na obrázku, kde se vhodně využívá zdroj od MAX232. Pokud takové napájení k dispozici není, zbytečně by to prodražovalo desku a použije se jiné řešení (šum přechodu diody, nebo cokoliv od A/D převodů - mikrofon, vzorkování basebandu atd., nebo i jenom úrovně signálů z RF modulů pro dodání alespoň nějaké entropie).
Konkrétní řešení mívá konkrétní možnosti - používám většinou tohle, protože potřebné napětí vždy z nějakého pulsního zdroje lze odvodit.
Zajímavé.
Mohl by někdo říct jestli by to prošlo v "čistě digitálním" dizajnu?
Narážím na příhodu, kterou taky napsal Marsh - nějaký výrobce PCI karet musel kvůli ISO auditu dokonca zamknout multimetr do skříně, protože neměl nálepku od kalibrace: http://lists.randombit.net/pipermail/cryptography/2012-February/002446.html
Dále například u některých Cisco/Linksys routerů jsem si všimnul, že pravidelně re-generují certifikát (a myslím i klíče). Pak už je entropie víc (pokud si to ukladají kdesi do NVRAM). To je takové čistě SW řešení, které vypadá, že funguje - nepovedlo se mi je faktorizovat. Nevím zda je to záměrná featura (někdo na tu entropii myslel) nebo důsledek bugu (což by bylo o to vtipnější).
Dnes vyšla vynikající studie sumarizující různé crypto a bezpečnostní protokoly - http://ritter.vg/p/2012-TLS-Survey.pdf (IETF and the future of security protocols - Black Hat EU).
To je otázka, co si má člověk představit pod čistě digitálním designem. V odkazované diskusi je zmíněna jakási karta do serveru, zamknutý multimetr a rčení, že vlastně při digitálním návrhu člověk nepřijde do kontaktu s analogem.
To je podle mě blbost jak vrata.
I když budu dělat kartu do PCIe, stejně budu muset na té kartě mít minimálně jeden až dva zdroje pro různá napětí Vcore použitých součástek (1.2V, 1.8V, 2.5V atd., která nejsou dostupná na PCIe fingeru). Už v tomhle momentě tam nemám žádný digitál, ale potřebuju minimálně multimetr, abych si ověřil že ty zdroje fungují správně. Vždycky bude i při použití jen čisté logiky přítomno dost signálů analogové povahy a jiných napěťových úrovní.
> To je otázka, co si má člověk představit pod čistě digitálním designem.
To právě taky nevím, ale tipoval bych že to bude mít něco s nějakými "design guidelines". Do procesů s vývojem HW v "industriální škále" moc nevidím. Něco jsem pochytil při programování nástrojů které se na to používají (překladače HDL jazyků a nějaké simulátory; ale nejvyšší level bylo když jsem zpětně psal nějaké VHDL kusy, co šéf běžně před releasem zapomínal "add-nout" do repozitáře ;-) takže pořád daleko od "HW inženýra").
Nějak si matně pamatuji, že se podle toho třeba lišily různé dialekty Verilogu (Verilog-A/D/AMS).
Pokial bopuzijes "lepsie" suciastky da sa to riesit aj z mensim napetim.
1.) Ak pouzijes komparator namiesto tej baterie inventorou. Moze byt napajanie sumoveho clanku nizsie (Tu je to z dovodu vysokeho rozkmytu. Ktory musi byt vyssi ako je sirka pasma neurcitosti http://www.interfacebus.com/voltage_LV_threshold.html)
2.) Pouzijes vyssie zosilnenie.
I v embedded zarizenich muze bezet operacni system ala openWrt(na to staci v ocesane verzi 2MB ROM/8MB RAM a 120MHz procesor, dneska veci za par dolaru). To generovani klicu se muze nechat az na prvni prihlaseni operatora (pres SSH na konsoli, pripadne pres webclienta). Do te doby by to byla jen mrtva krabicka, ktera ceka na iniciaci. Sice opruz, ale za tu bezpecnost to stoji.
Tak je pregeneruji po prvnim prihlaseni uzivatele. Pekne wizard-styl jako z windows. Next, next, next, hejbejte mysi dokud progress bar nedojede na konec, kliknout tlacitko. To jde s pomovi trochy html a javascriptu udelat docela pekne.
Jde to i pres SSH - po prvnim prihlaseni admina se muze spustit programek, ktery po vas bude chtit, abyste busili do klavesnice dokud nerekne 'DOST' a pak vas nucene odhlasi a pregeneruje klice.
Rozdíl mezi prodejní cenou a výrobní cenou = profit. Jednočip navíc je setsakramentsky drahá sranda na to, aby jen generoval náhodná čísla. Jsou i jednodušší řešení externího HW RNG, ale zase jsou prostě dražší než ho tam a) nedat vůbec, b) zkusit to implementovat v rámci SoC, ASIC nebo FPGA, protože to ve výrobě nic nestojí. Proto se vybírá za b.
To je divný, jednoduchej jednočip stojí při kusovce pro koncáka 30 korun, při odběru v milionech kusů to bude pod třetinou (spíš ještě méně). To se mi nezdá setsakramentsky... (a když už tam jednou bude dá se to využít na fičury typu online teploměr, watchdog a pod.).
PS: Varianta b se jak vidno neosvědčila.
Trochu záleží na definici největší socky.
Lidí, pro které je router magická krabička do netu a nějaký generátor absolutně neřeší, je vetšina. A na většině se obvykle vydělá nevíc. Co by sis koupil, kdyby se dva výrobky kromě ceny lišily jen v několika pro tebe neznámých cizích slovech?
Troufnu si tvrdit, že lidé, kteří aspoň trochu rozumí kryptogafii, nejsou cílová skupina pro běžné síťové krabičky.
... většina zákazníků?
Poptávka určuje nabídku. Naopak to funguje hodně nespolehlivě.
Jak by se vůbec dal kvalitní náhodný generátor schovat pod nějaký srozumitelný marketingový výraz? Jako entropie se dá marketingově prodat skoro cokoliv. Dáš do papírů výraz HW generátor entropie. Konkurence si toho všimne a napíše "32 bitový generátor entropie" protože přece čtou to číslo z 32b čítače. Další tam napíšou 20000bitů entropie, protože tam někde používají Mersene Twister a nějaký markeťák si přečte wikipedii. Stačí se kouknout, jak se značí třeba výkon na reproduktorech. Nejde o to, co to číslo znamená. Hlavně musí být velké.
Naprosto souhlasím. Jakýkoliv HW navíc nebo asynchronní design komplikuje verifikaci a testování návrhu a tudíž snižuje spolehlivost a nepřináší řešení problémů. Naopak by to zavádělo k chybné implementaci algoritmu generování náhodných čísel, kterýá by se spoléhal právě jen na tento 1 zdroj entropie. Na zařízení s jakýmkoliv RF modulem a uživatelsko intrerakcí je k dispozici dostatek kvalitních zdrojů entropie i bez specializovaného HW.
... Nejlevnější jsou za čtyři stovky, desetikorunu si klidně připlatím ...
Ano, lebo mate povedomie, ale stado BFU vidi rozdiel +10 korun, pridanu hodnotu nedokaze posudit.
... Mimochodem můj první AP stál před lety přes tři tisíce a vsadím se že je taky ošizený... za cenu ušetřené desetikoruny ..
HW RNG pred par rokmi nestal 10 korun, ale trochu viac (laicky odhad radovo stovky korun). Ak nebol pred X rokmi porovnatelny dopyt/ponuka, technologia, ... tak nemozte brat do uvahy dnesne ceny.
suhlas, to bola prva vec, ktora ma napadla (kedysi davno som sa uz s tymto problemom stretol), v kazdom mikrokontroleri sa najde kus flash, kde sa da pri zastcit kus individualnej nasady pre generator + kus volnej ram, kde sa uz da za prevadzky poskladat dalsi kus 'nahody' - mac adresy zariadeni, cas, doba prihlasenia atd. Problem je len v tom, kravatak samozrejme zorganizuje vyrobu v cine a tam by individualne flashovanie stalo o 0.1 centa navyse (ak by sa mu to vobec podarilo tym kitajcom vysvetlit, o co vobec ide), co by nasledne sposobilo, ze by si nemohol kupit kazdy druhy rok novu velku kravu za 5 melonov zo spotrebou 20L/100km.
Tento nazor celkom nezdielam, po naprogramovani resp. pri vlastnej kontrole integrity pri starte staci spocitat pri verifikacii kontrolnu sumu len po urcitu hranicu (ak neberiem do uvahy, ze po naprogramovani sa da skontrolovat obraz vo flash voci originalu, ktory v tom okamziku este mam k dispozicii).
HW riesenie je VZDY drahsie ako implentacia v SW - plac na plosnom spoji, spolahlivost - pribudne zopar suciastok a niekolko letovanych spojov, procesor a mikrofon daco stoja, mikrofon asi nebude v SMD atd. - zo skusenosti mozem potvrdit, ze sa akakolvek zmena/rozsirenie v HW prejavi minimalne v trojnasobku jej ceny vo finalnom vyrobku.