Kľúče WireGuard na ESP32: pre každé zariadenie alebo jeden zabudovaný?
Kľúč skompilovaný do firmvéru ESP32 je identita partnera, nie heslo. Rozhodnite podľa troch podmienok: držanie zariadenia, ochrana flash a opakované použitie v celej flotile.
Náčrt ukladá súkromný kľúč WireGuardu do poľa znakov a tunel funguje, preto sa otázka stále vracia. Rozhodnutie, ktoré naozaj musíte urobiť, nie je „je to bezpečné“, ale „ktorá z troch podmienok platí pre toto nasadenie“. Sú to: kto môže zariadenie fyzicky držať, čo dá čítanie flash na vašej súčiastke a či flotila zdieľa jeden kľúč, alebo každá jednotka nesie vlastný. Odpovedzte na to a návrh vyplynie, pretože každá podmienka mení cenu uniknutého kľúča, nie fakt, že uniknúť môže.
Čo kľúč oprávňuje
WireGuard overuje partnerov verejným kľúčom. Server priraďuje verejnému kľúču každého partnera adresu a AllowedIPs zoznam, takže práve súkromný kľúč umožňuje klientovi odosielať prevádzku z tejto adresy.
Ten istý záznam určuje, ktoré ciele zariadenie dosiahne, takže uniknutý kľúč odhalí sieť za tunelom aj adresu tunela.
Podmienka prvá: kto môže zariadenie držať
Ak jednotka stojí v zamknutej skrini a nikto mimo vášho tímu sa jej nedotýka, je expozícia hlavne otázkou distribúcie firmvéru. Ak sa posiela zákazníkom, stojí vo vozidle alebo sa vracia v záruke, je fyzické držanie poverením a utajenie binárky je druhoradé. Kto drží zariadenie v ruke, nemusí kľúč čítať, pretože bežiaci firmvér mu tunel otvorí. Preto musí odpoveď na strane servera obsahovať odvolanie a obmedzenú životnosť, nielen chránený obraz.
Túto podmienku rozhodnite pred zvyšnými dvoma, pretože určuje rozpočet pre obe.
Podmienka druhá: čo dá čítanie flash
Kto dokáže prečítať obraz flash, získa späť kľúč uložený ako literál, či už cez ladiace spojenie, aktualizačný súbor, zálohu alebo vrátenú jednotku. Šifrovanie flash zvyšuje cenu priameho dumpu a dokumentácia ESP-IDF opisuje, čo funkcia pre danú súčiastku a konfiguráciu pokrýva. Nerobí kľúč nevyextrahovateľným pri každom modeli útoku a pre prípad zariadenia v ruke nerobí nič. Berte ho ako jednu vrstvu, ktorá mení cenu, nie ako odpoveď.
Prečítajte si dokumentáciu platformy pre svoj presný čip a konfiguráciu, skôr než v recenzii návrhu tvrdíte nejakú vlastnosť.
Podmienka tretia: opakované použitie v celej flotile
Jeden kľúč na výrobnú sériu znamená, že každá jednotka zdieľa jednu identitu. Server ich v protokoloch nerozlíši, nemôže odvolať jeden bez toho, aby odvolal všetky, a nerozlíši klon od originálu. Kľúče pre každé zariadenie riešia všetky tri, za cenu kroku registrácie a mapovania sériového čísla na verejný kľúč. Práve to mapovanie je aktívum, ktoré mení odvolanie na jednoriadkovú zmenu namiesto preflashovania celej flotily.
Ak je flotila päť jednotiek na stole, zdieľanie kľúča môže byť rozumná výmena. Ak je to päťsto v teréne, nie je to výmena vôbec.
Vzor registrácie, ktorý robí kľúče pre zariadenia praktickými
Vygenerujte pár kľúčov v zariadení pri prvom štarte, súkromnú polovicu držte v chránenom energeticky nezávislom úložisku a posielajte len verejný kľúč do registračnej služby, ktorá pridelí adresu a zapíše záznam partnera. Overujte odpoveď registrácie, inak si útočník v miestnej sieti zaregistruje vlastný kľúč na váš účet. Nikdy netlačte súkromný kľúč na sériovú konzolu pri sprístupňovaní. Zapíšte sériové číslo zariadenia vedľa verejného kľúča, aby stratená jednotka zodpovedala práve jednému záznamu partnera.
Je to malá služba a je to rozdiel medzi flotilou, ktorú môžete auditovať, a flotilou, ktorú môžete len preflashovať.
Čas, koncové body a rozhodnutie
Príklad synchronizuje čas pred spustením tunela a to je dôležité aj mimo TLS: handshake WireGuardu nesie časovú pečiatku na ochranu proti opakovaniu, takže zariadenie štartujúce s nesprávnymi hodinami môže mať handshaky odmietnuté. Koncový bod je názov hostiteľa, čo stavia DNS do cesty dôvery, aj keď verejný kľúč servera partnera stále overuje. Nesprávna adresa plytvá pokusmi a prezradí, kedy je zariadenie online. Vyriešte oboje, skôr než sa budete hádať o kľúči.
Potom rozhodnite: zdieľaný kľúč len kým je držanie pod kontrolou a flotila malá, kľúče pre zariadenia hneď, ako jedno z toho prestane platiť.