Mga susi ng WireGuard sa ESP32: bawat aparato o isang nakapaloob?
Ang susi na na-compile sa firmware ng ESP32 ay pagkakakilanlan ng peer, hindi password. Magpasya sa tatlong kondisyon: pagmamay-ari, proteksyon ng flash at muling paggamit sa buong fleet.
Inilalagay ng sketch ang pribadong susi ng WireGuard sa isang array ng karakter, at gumagana ang tunnel, kaya paulit-ulit ang tanong. Ang desisyong talagang kailangan mong gawin ay hindi «ligtas ba ito» kundi «alin sa tatlong kondisyon ang naaangkop sa deployment na ito». Ito ang mga iyon: sino ang makakahawak nang pisikal sa aparato, ano ang ibinibigay ng pagbasa ng flash sa iyong piyesa, at kung ang fleet ay nagbabahagi ng isang susi o bawat isa ay may sarili. Sagutin ang mga iyon at susunod ang disenyo, dahil binabago ng bawat kondisyon ang gastos ng tumagas na susi, hindi ang katotohanang maaari itong tumagas.
Ano ang pinapayagan ng susi
Ina-authenticate ng WireGuard ang mga peer gamit ang pampublikong susi. Itinatakda ng server ang pampublikong susi ng bawat peer sa isang address at isang AllowedIPs listahan, kaya ang pribadong susi ang nagpapahintulot sa kliyente na magpadala ng trapiko mula sa address na iyon.
Ipinapasya rin ng parehong entry kung aling mga destinasyon ang maabot ng aparato, kaya ang tumagas na susi ay naglalantad ng network sa likod ng tunnel at pati ng address ng tunnel.
Unang kondisyon: sino ang makakahawak sa aparato
Kung ang unit ay nasa nakakandadong aparador at walang tao sa labas ng iyong koponan ang humahawak dito, ang pagkahantad ay pangunahing usapin ng distribusyon ng firmware. Kung ipinapadala ito sa mga customer, nasa sasakyan o bumabalik sa warranty, ang pisikal na pagmamay-ari ang kredensyal at ang pagiging lihim ng binary ay pangalawa. Ang taong may hawak ng aparato ay hindi kailangang basahin ang susi, dahil bubuksan ng tumatakbong firmware ang tunnel para sa kanya. Kaya ang sagot sa panig ng server ay dapat may revocation at limitadong tagal, hindi lamang protektadong imahe.
Pagpasyahan ang kondisyong ito bago ang dalawa pa, dahil ito ang nagtatakda ng badyet para sa pareho.
Ikalawang kondisyon: ano ang ibinibigay ng pagbasa ng flash
Kahit sino ang makabasa ng imahe ng flash ay nakakabawi ng susing nakaimbak bilang literal, sa pamamagitan man ng debug connection, update file, backup o ibinalik na unit. Ang encryption ng flash ay nagpapataas ng gastos ng direktang dump, at inilalarawan ng dokumentasyon ng ESP-IDF kung ano ang saklaw ng feature para sa isang partikular na piyesa at configuration. Hindi nito ginagawang hindi makuha ang susi sa lahat ng modelo ng pag-atake, at wala itong ginagawa para sa kaso ng aparatong nasa kamay. Ituring itong isang patong na nagbabago ng gastos, hindi ang sagot.
Basahin ang dokumentasyon ng platform para sa iyong eksaktong chip at configuration bago mag-claim ng property sa isang design review.
Ikatlong kondisyon: muling paggamit sa buong fleet
Isang susi para sa isang production run ay nangangahulugang bawat unit ay nagbabahagi ng isang pagkakakilanlan. Hindi sila kayang paghiwalayin ng server sa mga log, hindi kayang bawiin ang isa nang hindi binabawi lahat, at hindi kayang paghiwalayin ang clone sa orihinal. Ang mga susi kada aparato ay nag-aayos sa tatlo, sa halaga ng isang hakbang ng enrollment at ng pagmamapa mula sa serial number patungo sa pampublikong susi. Ang mapping na iyon ang asset na nagpapalit ng revocation tungo sa isang linyang pagbabago sa halip na muling pag-flash ng buong fleet.
Kung ang fleet ay limang unit sa isang bangko, ang pagbabahagi ng susi ay maaaring makatwirang palitan. Kung ito ay limang daan sa field, hindi ito palitan.
Ang pattern ng enrollment na nagpapaging praktikal sa mga susi kada aparato
Bumuo ng key pair sa aparato sa unang boot, itago ang pribadong kalahati sa protektadong non-volatile storage, at ipadala lamang ang pampublikong susi sa isang enrollment service na naglalaan ng address at nagsusulat ng peer entry. I-authenticate ang tugon ng enrollment, kung hindi ay makakapagrehistro ang attacker sa lokal na network ng sariling susi sa iyong account. Huwag kailanman i-print ang pribadong susi sa serial console habang nagpo-provision. Itala ang serial number ng aparato sa tabi ng pampublikong susi, upang ang nawawalang unit ay tumugma nang eksakto sa isang peer entry.
Iyon ay isang maliit na serbisyo, at iyon ang pagkakaiba ng fleet na maaari mong i-audit at ng fleet na maaari mo lamang i-reflash.
Oras, mga endpoint at ang desisyon
Sini-synchronize ng halimbawa ang oras bago simulan ang tunnel, at mahalaga iyon lampas sa TLS: ang mga handshake ng WireGuard ay may dalang timestamp para sa proteksyon sa replay, kaya ang aparatong nag-boot na may maling orasan ay maaaring makatanggap ng tinanggihang handshake. Ang endpoint ay hostname, na naglalagay ng DNS sa landas ng pagtitiwala kahit na ina-authenticate pa rin ng pampublikong susi ng server ang peer. Ang maling address ay nagsasayang ng pagtatangka at nagbubunyag kung kailan online ang aparato. Ayusin ang dalawa bago makipagtalo tungkol sa susi.
Pagkatapos ay magpasya: isang pinagsasaluhang susi lamang habang kontrolado ang pagmamay-ari at maliit ang fleet, mga susi kada aparato sa sandaling ang isa sa dalawa ay hindi na totoo.