El boceto guarda la clave privada de WireGuard en un vector de caracteres, y el túnel funciona, por eso la pregunta vuelve una y otra vez. La decisión que de verdad debe tomar no es «¿es esto seguro?» sino «¿cuál de tres condiciones se aplica a este despliegue?». Son: quién puede sostener el dispositivo físicamente, qué entrega una lectura de la flash en su pieza, y si la flota comparte una clave o cada unidad lleva la suya. Responda eso y el diseño se sigue, porque cada condición cambia el costo de una clave filtrada, no el hecho de que pueda filtrarse.

Qué autoriza la clave

WireGuard autentica a los pares con la clave pública. El servidor asigna a cada clave pública de par una dirección y una AllowedIPs lista, así que es la clave privada la que permite a un cliente enviar tráfico desde esa dirección.

La misma entrada decide qué destinos puede alcanzar el dispositivo, así que una clave filtrada expone la red detrás del túnel además de la dirección del túnel.

Condición uno: quién puede sostener el dispositivo

Si la unidad vive en un armario cerrado y nadie fuera de su equipo la toca, la exposición es sobre todo una cuestión de distribución del firmware. Si se envía a clientes, va en un vehículo o vuelve en garantía, la posesión física es la credencial y el secreto del binario es secundario. Quien tiene el dispositivo en la mano no necesita leer la clave, porque el firmware en ejecución le abrirá el túnel. Por eso la respuesta del lado del servidor debe incluir revocación y una vida útil acotada, no solo una imagen protegida.

Decida esta condición antes que las otras dos, porque fija el presupuesto de ambas.

Condición dos: qué entrega una lectura de la flash

Cualquiera que pueda leer la imagen de la flash recupera una clave guardada como literal, ya sea por una conexión de depuración, un archivo de actualización, una copia de seguridad o una unidad devuelta. El cifrado de la flash encarece un volcado directo, y la documentación de ESP-IDF describe qué cubre la función para una pieza y una configuración dadas. No vuelve la clave inextractable bajo todos los modelos de ataque, y no hace nada para el caso del dispositivo en la mano. Trátelo como una capa que cambia el costo, no como la respuesta.

Lea la documentación de la plataforma para su chip y su configuración exactos antes de afirmar una propiedad en una revisión de diseño.

Condición tres: reutilización en toda la flota

Una clave para una serie de producción significa que cada unidad comparte una identidad. El servidor no puede distinguirlas en los registros, no puede revocar una sin revocar todas, y no puede distinguir un clon de un original. Las claves por dispositivo arreglan las tres cosas, a cambio de un paso de alta y un mapeo del número de serie a la clave pública. Ese mapeo es el activo que convierte la revocación en un cambio de una línea en lugar de un reflasheo de toda la flota.

Si la flota son cinco unidades en un banco, compartir una clave puede ser un intercambio razonable. Si son quinientas en campo, no es ningún intercambio.

El patrón de alta que hace prácticas las claves por dispositivo

Genere el par de claves en el dispositivo en el primer arranque, guarde la mitad privada en almacenamiento no volátil protegido y envíe solo la clave pública a un servicio de alta que asigne una dirección y escriba la entrada de par. Autentique la respuesta de alta, o un atacante en la red local podrá registrar su propia clave contra su cuenta. Nunca imprima la clave privada en la consola serie durante el aprovisionamiento. Anote el número de serie del dispositivo junto a la clave pública, para que una unidad perdida corresponda exactamente a una entrada de par.

Es un servicio pequeño, y es la diferencia entre una flota que puede auditar y una flota que solo puede reflashear.

Tiempo, extremos y la decisión

El ejemplo sincroniza el tiempo antes de iniciar el túnel, y eso importa más allá de TLS: los apretones de manos de WireGuard llevan una marca de tiempo para la protección contra repetición, así que un dispositivo que arranca con el reloj mal puede ver apretones rechazados. El extremo es un nombre de host, lo que pone el DNS en la ruta de confianza aunque la clave pública del servidor siga autenticando al par. Una dirección equivocada desperdicia intentos y revela cuándo está en línea el dispositivo. Resuelva ambas cosas antes de discutir sobre la clave.

Luego decida: una clave compartida solo mientras la posesión esté controlada y la flota sea pequeña, claves por dispositivo en cuanto una de las dos deje de ser cierta.

Artículos relacionados