Tady nekdo vzivote nevidel, jak se neco vyrabi ...
Milej zlatej, vazne si myslis, ze ti treba automobilka doda nastaveny a fungujici auto? Nikolivek, to dela az prodejce. Jenze u veci za 1/2M se ta prace jaksi ztrati v cene. Kdyby mel vyrobce kazdou jednu krabku i jen zapnout, tak by nestala 3 kila ale 3 litry.
Kolik % lidi je ochotno zaplatit 3k za krabku, ktera bude konfigurovatelna? (ty parodii od NICu ani nemluve). A proc by to meli delat? Aby jim pak kkti z Mozilly/googlu/... rekli, ze maj tu krabku vyhodit, protoze pouzitej algoritmus uz prej neni dost bezpecnej? lol
Ty miliardy lidi si proste koupej to nejlevnejsi co horko tezko zapojej a pokud jim to funguje, tak to menit nebudou. A ze by to mel resit provider? A proc proboha? O poskytne pripojeni a je mu jedno co si na ty svy lince zakaznik prenasi. Proc by mel vynakladat prozmenu svoje penize na to, aby resil neco, co mu nevadi?
Ke generovani klice potrebujete entropii. V PC se vyuziva drobny sum pro mereni casu toku dat od HDD, pohyb mysi, stisky klavesnice, a ruzna casova razitka udalosti., ktere je obtizne kontrolovat.
Co mate nartiklad na takove zasuvce ovladane pres Wifi? Sitove napeti, pokud se vubec meri, Okamzik bootu vhledem k pruchodu faze nulou (pokud se vyhodnocuje) a jinak NIC. Mala entropie v takto vygenerovanm klici zpusobi, ze hromada zarizeni si vygeneruje nezavisle na sobe stejny klic a jsme tam kde ted.
Přesně to jsem chtěl napsat... když je tam rádio, budu 10 vteřin poslouchat a budu mít tak krásnou entropii, že mi ji může i ženský mozek závidět. Maximálně by mi to mohl pokazit někdo, kdo bude stát s výkonným širokopásmovým vysílačem metr od routeru v době, kdy si ten klíč generuje. Rozhodně to bude lepší, než to tam mít staticky.
A co traffic na síti? Čas mezi paketama, data lítající po síti,.. Udělá se z toho nějaký pěkný dlouhý binární blob (otázka obvykle několika sekund), spočítá hash a je to...
Pro případ zapnutí několika krabiček na stejné síti současně třeba... sériový číslo FLASH/CPU/... jako sůl. Tam už výrobci čipů dávají aspoň kontinuální řadu, že je tam nějaký rozdíl.
Obecně nemůžeš. Řešili jsme to na deskách s SH-4. Na čisté desce byl k dispozici jenom JTAG, po něm by natažení firmware trvalo cca 2,5 hodiny (zápis FLASH na sběrnici pomocí boundary scanu). Takže v krocích:
1) Nanoboot skrz JTAG. Čas 3s, zápis do RAM Velikost < 1kB.
2) Nanoboot se oznámí na UARTu. Od testeru dostal image ubootu, který zapsal do FLASH a spustil. To trvalo asi 5s.
3) UBoot se podíval, jestli má konfiguraci. Když ji nenašel, provedl factory test a stáhl si z UARTu, co potřeboval (SN, MAC,...) Čas zase do 5s.
4) UBoot se připojil na TFTP a stáhnul finální image do FLASH. Podle velikosti do dvou minut. Spočitej si, jak dlouho by trvalo nahrávání po UARTu.
5) Start finálního image, ověření základních funkcí.
U Atmelu ARM9 to je zase jinak, bootloader v CPU a všechno je v SPI FLASH, takže tam vypaluješ jednoho brouka po SPI na 60MHz a klidně zvenku po test pointech s jádrem v RESETu...
Unikátní informace zvenčí bral během konfigurování ubootu, to je optimální čas pro nahrávání klíčů a certifikátů zvenku. Entropii na tohle nepotřebuješ. Klíč vygeneruješ na vhodným hardware a flashneš.
V praxi má stejně FLASH několik sekcí - firmware, data, bootloader a factory data. A kontrola se dělá nezávisle, ověření factory dat proti databázi tak nijak neovlivní podobu aplikace...
Dela se to uplne jednoduse, mas zhruba nasledujici varianty
1) nechas si vyrobit chip, na kterym je soft napalenej rovnou z vyroby natvrdo
2) naladujes vsechny chipy do nejaky masiny, ktera ti tam proste (jeste pred osazenim) napali soft
3) mas na desce nejakej pinout, na kterej se po osazeni pripojis a napalis to na uz hotovou desku
Poradi odpovida taky cena - cim pozdejs, tim vyssi.
Problem (s jakoukoli) odlisnosti mas predevsim v tom, ze pri aspon trochu normalnim postupu se dela verifikace - ovsem binarni pochopitelne, a vadny chipy/desky se rovnou vyhodej. Pokud bys tam tudiz napalil pokazdy neco jinyho, mas problem, protoze ten primitivni test ti nebude fungovat. Navic by to misto opakovanyho zapisu stale stejny matrice znamenalo pokazdy spocitat cosi ... a pokud se bavime o milionech kusech a potreby rozumny entropie, tak ses v riti.
Te vypalene adrese bych se v dnesni dobe divil;) Mozna nekde do flashe ale uz ne do PROM. Je vyrobne jednodussi ji nacist nebo generovat nekde ze S/N ktere uz se nachazi skutecne pevne napalene v chipu. Ale jinak Factory data muzou obsahovat i odlisnou mac, S/N, NSA spydata... Pred nahranim se nageneruje+prida crc a na boardu se jen checkne jestli to sedi. Doby kdy se opravdu vypalovaly adresy do prom jsou ty tam.
Ten primitivní test musí znát velikost flashky, aby nepřečetl z nenamapovaných adres nesmysly. Tak mu dáme velikost o 16 bajtů menší.
> Navic by to misto opakovanyho zapisu stale stejny matrice znamenalo pokazdy spocitat cosi
Na prehistorickém Pentiu III dokážu pomocí SHA2-based PRNG vygenerovat 200 tisíc seedů za sekundu.
Tady by mělo platit nejsem tak bohatý, abych kupoval levné věci...
Nějaký switch který není vystavenej ven je v pohodě, takže laciná krabička může bejt, ale router musí být bezpodmínečně zabezpečenej tak, aby zvnějšku nebyla šance. Člověk musí před pořízením zařízení myslet a když to nedokáže nebo se mu nechce, dobře mu tak!