Die Geräteauthentifizierung ist eine kritische Sicherheitsanforderung für das Internet der Dinge (IoT). Im Gegensatz zum klassischen Web, wo eine Authentifizierung der Nutzer meist nicht zwingend erforderlich ist, sind IoT-Geräte tatsächlich mit physischer Ausrüstung verbunden, deren Betrieb durch Kommunikation verändert werden kann. Dies stellt ein großes Risiko für die tatsächliche Sicherheit der Ausrüstung und folglich auch für das menschliche Umfeld dar. Wenn beispielsweise ein Brandmelder böswillig abgeschaltet wird, wird ein hypothetisches Feuer nicht so schnell entdeckt, wie es sollte, und ist schwerer zu bekämpfen. Dies erfordert eine gegenseitige Authentifizierung von Gerät und Server. Im Wesentlichen gibt es zwei Wege, diese bereitzustellen: entweder durch die Verwendung von Pre-Shared Keys (PSK) oder durch Zertifikate. In diesem Blogbeitrag konzentrieren wir uns auf Enrollment over Secure Transport (EST), einen robusten und skalierbaren Mechanismus für das Management von Gerätezertifikaten.
EST ist ein Zertifikatsmanagement-Protokoll, das es Benutzern ermöglicht, Zertifikate von Zertifizierungsstellen (Certificate Authority - CA) abzurufen, sie auf einem Client zu registrieren (Enrollment) und bei Bedarf zu erneuern. In der Public-Key-Infrastruktur (PKI) kann der EST-Server als Registrierungsstelle (Registration Authority - RA) betrachtet werden, die Zertifikatsregistrierungsanfragen (Certificate Signing Requests - CSRs) empfängt und an eine CA weiterleitet, wobei die CA selbst im EST-Server eingebettet oder ein externer Dienst sein kann.
Neben den drei Grundfunktionen kann der EST-Server optional auch Folgendes implementieren: vollständiges Enrollment über CMS (CMC), serverseitige Schlüsselgenerierung und Auflistung von CSR-Attributen. Ursprünglich wurde das „Enrollment over Secure Transport“-Protokoll für Clients entwickelt, die HTTP über TLS (HTTPS) nutzen, es kann jedoch auch mit CoAP implementiert werden, um diese Funktionalitäten für ressourcenbeschränkte Geräte bereitzustellen.
Der EST-Server stellt Funktionen über URI-definierte HTTP-Endpunkte mit dem Präfix .well-known/est bereit. Client und Server kommunizieren über einen sicheren Kanal (d. h. gegenseitig authentifiziert und verschlüsselt).
Das Abrufen von CA-Zertifikaten erfolgt durch Senden einer GET-Anfrage an /cacerts. Die bereitgestellten CA-Zertifikate werden vom Client verwendet, um Signaturen von Objekten zu verifizieren, die von der CA zurückgegeben werden.
Aus Client-Perspektive ist die wichtigste Funktion des EST-Servers das Client-Enrollment. Durch Ausführen eines POST auf den Endpunkt /simpleenroll fordert der Client ein Zertifikat an, indem er den Certificate Signing Request (CSR) bereitstellt. Es kann erneuert/neu verschlüsselt (rekeyed) werden, indem eine ähnliche POST-Anfrage an den Endpunkt /simplereenroll gesendet wird.
Ein vom Client bereitgestellter CSR kann basierend auf der CA-Richtlinie das Vorhandensein spezifischer Attribute erfordern. Daher implementieren einige EST-Server den Endpunkt /csrattrs, der die von der CA geforderten Attribute zurückgibt.
Der EST-Server kann auch eine Funktion zur serverseitigen Schlüsselgenerierung bereitstellen. Der Client fordert ein Paar aus privatem Schlüssel und Zertifikat vom Server an, indem er einen POST an den Endpunkt /serverkeygen sendet. Dies ist nützlich, wenn dem Client die Ressourcen zur Erzeugung eines Schlüsselpaares fehlen. Es muss jedoch beachtet werden, dass dies aus Sicht der Gerätesicherheit nicht die ideale Methode ist, da ein privater Schlüssel geleakt werden kann, wenn der EST-Server kompromittiert wird.
Da viele ressourcenarme IoT-Geräte CoAP anstelle von HTTP verwenden, entstand der Bedarf, „Enrollment over Secure Transport“ auch für diese Art der Kommunikation zu implementieren. Diese Implementierung konzentriert sich hauptsächlich auf die Reduzierung der Datenübertragungsmenge, was zu Energieeinsparungen führt, da das Funkmodul für einen kürzeren Zeitraum aktiv ist. Dies sind die Hauptunterschiede von EST über CoAP:
DTLS wird anstelle von TLS verwendet.
Der Antwortinhalt liegt im Binärformat vor.
URIs sind verkürzt, z. B. /cacerts --> /crts.
Ressourcenintensive Funktionen – vollständige CMC-Anfragen werden für CoAP nicht unterstützt, da clientseitige Berechnungen zu schwerwiegend und die übertragenen Daten zu groß wären.
Jede Funktion erfordert, dass der Client über ein Zertifikat authentifiziert ist.
Der Server kann mit verzögerten Antworten unter Verwendung des leeren ACK-Codes 0.00 antworten, bevor er das Zertifikat an den Client sendet.
Die Coiote IoT-Gerätemanagement-Plattform (DM) fungiert hier als HTTPS-CoAPS-Registrar, nicht als reiner CoAP-Server. Ein Registrar ist ein Vermittler zwischen dem CoAP-Client und dem eigentlichen HTTP-EST-Server. Er verarbeitet eingehende CoAP-Anfragen, übersetzt sie in HTTP und wickelt die Kommunikation mit einem externen EST-HTTP-Server ab.
Die Hauptanwendung des „Enrollment over Secure Transport“-Protokolls in LwM2M ist ein Sicherheitsmodus namens Certificate Mode with EST. Dieser wird während der Bootstrap-Phase auf IoT-Geräten konfiguriert. Bei der Verwendung von EST wird ein privater Schlüssel auf dem Gerät generiert, sodass er dieses niemals verlässt. Zusätzlich kann das Zertifikat vom IoT-Gerät periodisch aktualisiert werden – diese Funktionen erhöhen die Sicherheit.
Ein typisches Szenario betrifft das Gerät, das die LwM2M-Bootstrap-Anfrage an den Bootstrap-Server sendet. Wenn während des Bootstraps der EST-Zertifikatsmodus aktiviert ist, sendet das Gerät eine CoAP-Anfrage an den Endpunkt /sen (Simple Enroll), um ein Zertifikat zu erhalten, das dann verwendet wird, um sich im Zertifikatsmodus mit dem Management-Server zu verbinden. Wenn das Zertifikat in Kürze abläuft, kann das Gerät den Endpunkt /sren (Simple Reenroll) verwenden, um sein Zertifikat zu erneuern. Das Diagramm unten zeigt ein Beispielszenario, in dem das Gerät eine Bootstrap-Anfrage an das Coiote IoT Device Management stellt und nach dem Bootstrap den EST-Endpunkt verwendet, um das Zertifikat abzurufen, das dann zur Registrierung auf dem Management-Server verwendet wird.
Mit der wachsenden Anzahl von IoT-Geräten steigt auch die Bedeutung von Gerätesicherheit und Geräteauthentifizierung. Je mehr Geräte es gibt, desto schwieriger ist es, sie sicher zu halten. Enrollment over Secure Transport (EST) ist ein großartiger Mechanismus, der den Umgang mit Gerätezertifikaten für groß angelegte Implementierungen im Alltag vereinfacht. Durch die Bereitstellung voller Unterstützung für EST macht die Coiote IoT-DM-Plattform das Management von Zertifikaten auf Geräten für Operation-Teams sicherer, schneller und einfacher.