🛠 Canal sécurisé : OTAA, MIC et élément ATECC508

Arduino MKR WAN 1300 · avance · Schéma : IMG-mkr-wan-1300-avance-1-mkrwan-lien-securise.svg — lien sécurisé OTAA/AES avec élément ATECC508 en évidence

Objetivos

No hay TLS en esta tarjeta (no hay Wi-Fi, por lo tanto, no hay WiFiSSLClient). El equivalente de "canal seguro" es la seguridad de LoRaWAN: unión OTAA con derivación de claves, integridad MIC (AES-128) en cada trama y protección de las claves en el ecosistema MKR (elemento ATECC508 integrado). Este tutorial cubre las mejores prácticas de claves y la verificación del enlace.

Material

Código completo

#include <MKRWAN.h>

LoRaModem modem;

// En production : NE JAMAIS laisser les cles en clair dans le depot.
// Les stocker hors du code (zone config, element securise) et les regenerer.
String appEui = "0080000000000001";
String appKey = "GENEREE_PAR_TON_SERVEUR_32_HEX";

void setup {
  Serial.begin(115200);
  if (!modem.begin(EU868)) while (1) {}
  // OTAA (mode 1) : derive NwkSKey/AppKey par session, prefere a ABP (mode 0)
  if (!modem.joinOTAA(appEui, appKey)) {
    Serial.println("Join refuse : verifier AppEUI/AppKey et couverture");
    while (1) {}
  }
  modem.minPollInterval(60);
  modem.linkAdaptiveDataRate(true);  // ADR : monte la DR quand le lien est bon
}

void loop {
  modem.beginPacket;
  modem.print("secure");
  // uplink confirmee = ACK signe MIC : preuve de reception integre
  bool ok = modem.endPacket(true) > 0;
  Serial.print(ok ? "MIC OK " : "MIC ECHEC ");
  Serial.print("rssi="); Serial.print(modem.readRSSI);
  Serial.print(" snr="); Serial.println(modem.readSNR);
  delay(120000);
}

Verificación esperada

La unión OTAA crea una sesión nueva (las claves de sesión nunca viajan en claro); los uplinks confirmados reciben un ACK cuyo MIC valida la integridad. En el lado del servidor, la sesión cambia después de cada rejoin.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales