WireGuard raktai ESP32: kiekvienam įrenginiui ar vienas įdiegtas?
Į ESP32 programinę aparatinę įrangą įkompiliuotas raktas yra lygiaverčio tapatybė, o ne slaptažodis. Spręskite pagal tris sąlygas: valdymas, flash apsauga ir pakartotinis naudojimas visame parke.
Eskizas įrašo WireGuard privatųjį raktą į simbolių masyvą, ir tunelis veikia, todėl šis klausimas kyla vėl ir vėl. Sprendimas, kurį tikrai turite priimti, yra ne „ar tai saugu“, o „kuri iš trijų sąlygų galioja šiam diegimui“. Jos yra: kas gali fiziškai laikyti įrenginį, ką duoda flash skaitymas jūsų komponente, ir ar parkas dalijasi vienu raktu, ar kiekvienas neša savąjį. Atsakykite į tai, ir dizainas seks, nes kiekviena sąlyga keičia nutekėjusio rakto kainą, o ne faktą, kad jis gali nutekėti.
Ką raktas įgalioja
WireGuard autentifikuoja lygiaverčius viešuoju raktu. Serveris priskiria kiekvieno lygiaverčio viešąjį raktą adresui ir AllowedIPs sąrašui, todėl būtent privatusis raktas leidžia klientui siųsti srautą iš to adreso.
Tas pats įrašas nustato, kuriuos tikslus įrenginys gali pasiekti, todėl nutekėjęs raktas atskleidžia tiek tinklą už tunelio, tiek tunelio adresą.
Pirma sąlyga: kas gali laikyti įrenginį
Jei įrenginys stovi užrakintoje spintoje ir niekas už jūsų komandos ribų jo neliečia, rizika daugiausia yra programinės įrangos platinimo klausimas. Jei jis siunčiamas klientams, stovi transporto priemonėje ar grįžta pagal garantiją, fizinis valdymas yra įgaliojimas, o dvejetainio failo slaptumas yra antraeilis. Kas laiko įrenginį rankoje, neturi skaityti rakto, nes veikianti programinė įranga atvers jam tunelį. Todėl serverio pusės atsakyme turi būti atšaukimas ir ribotas galiojimo laikas, o ne tik apsaugotas atvaizdas.
Nuspręskite šią sąlygą prieš kitas dvi, nes ji nustato biudžetą abiem.
Antra sąlyga: ką duoda flash skaitymas
Kas gali perskaityti flash atvaizdą, tas atkuria pažodžiui saugomą raktą – ar per derinimo jungtį, ar atnaujinimo failą, ar atsarginę kopiją, ar grąžintą įrenginį. Flash šifravimas padidina tiesioginio išvedimo kainą, o ESP-IDF dokumentacija aprašo, ką funkcija apima tam tikram komponentui ir konfigūracijai. Ji nepadaro rakto neišgaunamo pagal visus atakos modelius ir nieko neduoda, kai įrenginys yra rankoje. Traktuokite tai kaip vieną sluoksnį, kuris keičia kainą, o ne kaip atsakymą.
Perskaitykite platformos dokumentaciją savo tiksliam lustui ir konfigūracijai, prieš teigdami savybę dizaino apžvalgoje.
Trečia sąlyga: pakartotinis naudojimas visame parke
Vienas raktas gamybos serijai reiškia, kad kiekvienas įrenginys dalijasi viena tapatybe. Serveris negali jų atskirti žurnaluose, negali atšaukti vieno neatšaukęs visų, ir negali atskirti klono nuo originalo. Raktai kiekvienam įrenginiui išsprendžia visus tris, už registracijos žingsnio ir serijos numerio susiejimo su viešuoju raktu kainą. Tas susiejimas yra turtas, kuris atšaukimą paverčia vienos eilutės pakeitimu, o ne viso parko perrašymu.
Jei parkas yra penki įrenginiai ant stalo, bendras raktas gali būti pagrįstas mainas. Jei tai penki šimtai lauke, tai visai ne mainas.
Registracijos modelis, kuris daro raktus kiekvienam įrenginiui praktiškus
Sugeneruokite raktų porą įrenginyje per pirmąjį paleidimą, laikykite privačią pusę apsaugotoje nelakioje atmintyje ir siųskite tik viešąjį raktą registracijos tarnybai, kuri priskiria adresą ir įrašo lygiaverčio įrašą. Autentifikuokite registracijos atsakymą, kitaip vietinio tinklo užpuolikas gali užregistruoti savo raktą jūsų paskyroje. Niekada nespausdinkite privataus rakto serijinėje konsolėje diegimo metu. Užrašykite įrenginio serijos numerį šalia viešojo rakto, kad pamestas įrenginys atitiktų tiksliai vieną lygiaverčio įrašą.
Tai maža paslauga, ir tai yra skirtumas tarp parko, kurį galite audituoti, ir parko, kurį galite tik perrašyti.
Laikas, galiniai taškai ir sprendimas
Pavyzdys sinchronizuoja laiką prieš paleidžiant tunelį, ir tai svarbu ne tik TLS: WireGuard rankos paspaudimai neša laiko žymą apsaugai nuo pakartojimo, todėl įrenginys, paleistas su neteisingu laikrodžiu, gali sulaukti atmestų rankos paspaudimų. Galinis taškas yra pagrindinio kompiuterio vardas, o tai įtraukia DNS į pasitikėjimo kelią, nors serverio viešasis raktas vis dar autentifikuoja lygiavertį. Neteisingas adresas švaisto bandymus ir atskleidžia, kada įrenginys yra prisijungęs. Sutvarkykite abu, prieš ginčydamiesi dėl rakto.
Tada nuspręskite: bendras raktas tik tol, kol valdymas kontroliuojamas ir parkas mažas, raktai kiekvienam įrenginiui, kai tik viena iš šių sąlygų nustoja galioti.