Claus WireGuard a l’ESP32: per dispositiu o una de fixa?
Una clau compilada al firmware de l’ESP32 és una identitat de parell, no una contrasenya. Decidiu-ho amb tres condicions: possessió, protecció de la memòria flaix i reutilització a tota la flota.
L’esquetx posa la clau privada de WireGuard en un vector de caràcters, i el túnel funciona, per això la pregunta torna una i altra vegada. La decisió que heu de prendre de debò no és «és segur?», sinó «quina de tres condicions s’aplica a aquest desplegament». Són: qui pot sostenir el dispositiu físicament, què dona una lectura del flaix a la vostra peça, i si la flota comparteix una clau o en porta una cadascuna. Responeu-ho i el disseny se’n deriva, perquè cada condició canvia el cost d’una clau filtrada, no el fet que es pugui filtrar.
Què autoritza la clau
WireGuard autentica els parells amb la clau pública. El servidor assigna a cada clau pública de parell una adreça i una AllowedIPs llista, de manera que és la clau privada la que permet que un client enviï trànsit des d’aquella adreça.
La mateixa entrada decideix quins destins pot assolir el dispositiu, així que una clau filtrada exposa la xarxa darrere del túnel i també l’adreça del túnel.
Condició u: qui pot sostenir el dispositiu
Si la unitat viu en un armari tancat i ningú fora del vostre equip la toca, l’exposició és sobretot una qüestió de distribució del firmware. Si s’envia a clients, va dins un vehicle o torna en garantia, la possessió física és la credencial i el secret del binari és secundari. Qui té el dispositiu a la mà no necessita llegir la clau, perquè el firmware en marxa li obrirà el túnel. Per això la resposta del costat del servidor ha d’incloure la revocació i una vida útil limitada, no només una imatge protegida.
Decidiu aquesta condició abans que les altres dues, perquè fixa el pressupost de totes dues.
Condició dos: què dona una lectura del flaix
Qui pugui llegir la imatge del flaix recupera una clau desada com a literal, ja sigui per una connexió de depuració, un fitxer d’actualització, una còpia de seguretat o una unitat retornada. El xifratge del flaix encareix un bolcat directe, i la documentació de l’ESP-IDF descriu què cobreix la funció per a una peça i una configuració concretes. No fa que la clau sigui inextractable sota tots els models d’atac, i no fa res per al cas del dispositiu a la mà. Tracteu-lo com una capa que canvia el cost, no com la resposta.
Llegiu la documentació de la plataforma per al vostre xip i la vostra configuració exactes abans d’afirmar una propietat en una revisió de disseny.
Condició tres: reutilització a tota la flota
Una clau per a una sèrie de producció vol dir que cada unitat comparteix una identitat. El servidor no les pot distingir als registres, no pot revocar-ne una sense revocar-les totes, i no pot distingir un clon d’un original. Les claus per dispositiu arreglen les tres coses, a canvi d’un pas d’alta i d’un mapatge del número de sèrie a la clau pública. Aquest mapatge és l’actiu que converteix la revocació en un canvi d’una línia en lloc d’una regravació de tota la flota.
Si la flota són cinc unitats en un banc, compartir una clau pot ser un bon intercanvi. Si són cinc-centes al camp, no és cap intercanvi.
El patró d’alta que fa pràctiques les claus per dispositiu
Genereu el parell de claus al dispositiu en el primer arrencament, guardeu la meitat privada en un emmagatzematge no volàtil protegit i envieu només la clau pública a un servei d’alta que assigni una adreça i escrigui l’entrada de parell. Autentiqueu la resposta d’alta, o un atacant a la xarxa local podrà registrar la seva pròpia clau contra el vostre compte. No imprimiu mai la clau privada a la consola sèrie durant l’aprovisionament. Anoteu el número de sèrie del dispositiu al costat de la clau pública, perquè una unitat perduda correspongui exactament a una entrada de parell.
És un servei petit, i és la diferència entre una flota que podeu auditar i una flota que només podeu regravar.
Temps, punts finals i la decisió
L’exemple sincronitza el temps abans d’engegar el túnel, i això importa més enllà de TLS: les encaixades de WireGuard porten una marca de temps per a la protecció contra repeticions, així que un dispositiu que arrenqui amb el rellotge malament pot veure rebutjades les encaixades. El punt final és un nom d’amfitrió, cosa que posa el DNS al camí de confiança encara que la clau pública del servidor segueixi autenticant el parell. Una adreça equivocada malgasta intents i revela quan el dispositiu és en línia. Resoleu les dues coses abans de discutir sobre la clau.
Després decidiu: una clau compartida només mentre la possessió estigui controlada i la flota sigui petita; claus per dispositiu tan bon punt una de les dues coses deixi de ser certa.