WireGuard-nycklar på ESP32: per enhet eller en inbyggd?
En nyckel som kompileras in i ESP32-firmware är en peer-identitet, inte ett lösenord. Avgör med tre villkor: fysiskt innehav, flashskydd och återanvändning i hela flottan.
Skissen lägger WireGuards privata nyckel i en teckenarray, och tunneln fungerar, och därför dyker frågan upp igen. Beslutet du faktiskt måste fatta är inte «är detta säkert» utan «vilket av tre villkor gäller för den här utrullningen». De är: vem som fysiskt kan hålla enheten, vad en flash-läsning ger på din del, och om flottan delar en nyckel eller bär en var. Svara på det och designen följer, eftersom varje villkor ändrar kostnaden för en läckt nyckel, inte det faktum att den kan läcka.
Vad nyckeln auktoriserar
WireGuard autentiserar peers med en offentlig nyckel. Servern kopplar varje peers offentliga nyckel till en adress och en AllowedIPs-lista, så det är den privata nyckeln som låter en klient skicka trafik från den adressen.
Samma post avgör vilka destinationer enheten kan nå, så en läckt nyckel exponerar nätet bakom tunneln såväl som tunneladressen.
Villkor ett: vem kan hålla enheten
Om enheten står i ett låst skåp och ingen utanför ditt team rör den, är exponeringen mest en fråga om firmware-distribution. Om den skickas till kunder, står i ett fordon eller kommer tillbaka på garantin, är fysiskt innehav legitimationen och binärens hemlighållande sekundärt. Den som håller enheten behöver inte läsa nyckeln, eftersom firmwaren som körs öppnar tunneln åt dem. Därför måste svaret på serversidan innehålla återkallelse och en begränsad livstid, inte bara en skyddad avbild.
Avgör detta villkor före de andra två, eftersom det sätter budgeten för båda.
Villkor två: vad en flash-läsning ger
Den som kan läsa flash-avbilden får tillbaka en nyckel lagrad som literal, vare sig via en debug-anslutning, en uppdateringsfil, en säkerhetskopia eller en returnerad enhet. Flashkryptering höjer kostnaden för en direkt dump, och ESP-IDF-dokumentationen beskriver vad funktionen täcker för en given del och konfiguration. Det gör inte nyckeln outdragbar under alla attackmodeller, och det gör ingenting för fallet där enheten är i handen. Behandla det som ett lager som ändrar kostnaden, inte som svaret.
Läs plattformsdokumentationen för din exakta krets och konfiguration innan du hävdar en egenskap i en designgranskning.
Villkor tre: återanvändning i hela flottan
En nyckel för en produktionsserie innebär att varje enhet delar en identitet. Servern kan inte skilja dem i loggarna, kan inte återkalla en utan att återkalla alla, och kan inte skilja en klon från ett original. Nycklar per enhet löser alla tre, till priset av ett registreringssteg och en mappning från serienummer till offentlig nyckel. Den mappningen är tillgången som gör återkallelse till en ändring på en rad i stället för en flottomfattande omflashning.
Är flottan fem enheter på en bänk kan en delad nyckel vara en rimlig byteshandel. Är den fem hundra i fält är det inte någon byteshandel alls.
Registreringsmönstret som gör nycklar per enhet praktiska
Generera nyckelparet på enheten vid första start, håll den privata halvan i skyddat icke-flyktigt minne, och skicka bara den offentliga nyckeln till en registreringstjänst som tilldelar en adress och skriver peer-posten. Autentisera registreringssvaret, annars kan en angripare på det lokala nätet registrera sin egen nyckel på ditt konto. Skriv aldrig ut den privata nyckeln till seriekonsolen under etableringen. Anteckna enhetens serienummer bredvid den offentliga nyckeln, så att en förlorad enhet motsvarar exakt en peer-post.
Det är en liten tjänst, och det är skillnaden mellan en flotta du kan granska och en flotta du bara kan flasha om.
Tid, ändpunkter och beslutet
Exemplet synkroniserar tiden innan tunneln startas, och det spelar roll bortom TLS: WireGuards handskakningar bär en tidsstämpel för replay-skydd, så en enhet som startar med fel klocka kan få avvisade handskakningar. Ändpunkten är ett värdnamn, vilket sätter DNS i förtroendekedjan även om serverns offentliga nyckel fortfarande autentiserar peeren. En fel adress slösar försök och avslöjar när enheten är online. Hantera båda innan du bråkar om nyckeln.
Bestäm sedan: en delad nyckel bara så länge innehavet är kontrollerat och flottan är liten, nycklar per enhet så snart något av det inte längre stämmer.