Device Update-Sicherheitsmodell
Device Update for IoT Hub bietet eine sichere Methode zum Bereitstellen von Updates für Gerätefirmware, Images und Anwendungen auf Ihren IoT-Geräten. Der Workflow bietet einen sicheren End-to-End-Kanal mit einem vollständigen Chain-of-Custody-Modell, mit dem ein Gerät nachweisen kann, dass ein Update vertrauenswürdig, unverändert und beabsichtigt ist.
Jeder Schritt im Device Update-Workflow wird durch verschiedene Sicherheitsfeatures und -prozesse geschützt, um sicherzustellen, dass jeder Schritt in der Pipeline eine abgesicherte Übergabe an den nächsten Schritt vornimmt. Der Referenzcode des Geräteaktualisierungs-Agenten identifiziert und verwaltet alle unzulässigen Aktualisierungsanforderungen. Der Referenzagent überprüft auch jeden Download, um sicherzustellen, dass der Inhalt vertrauenswürdig, unverändert und beabsichtigt ist.
Zusammenfassung
Da Updates in eine Device Update-Instanz importiert werden, lädt der Dienst die Updatebinärdateien hoch und überprüft sie, um sicherzustellen, dass sie nicht von einem böswilligen Benutzer geändert oder ausgetauscht wurden. Nach der Überprüfung generiert der Device Update-Dienst ein internes Updatemanifest mit Dateihashes aus dem Importmanifest und anderen Metadaten. Dieses Updatemanifest wird dann vom Device Update-Dienst signiert.
Nachdem sie in den Dienst importiert und in Azure gespeichert wurden, werden die aktualisierten Binärdateien und die zugehörigen Kundenmetadaten im Ruhezustand automatisch vom Azure Storage-Dienst verschlüsselt. Der Geräteaktualisierungsdienst stellt nicht automatisch eine zusätzliche Verschlüsselung bereit, ermöglicht es Entwicklern jedoch, Inhalte selbst zu verschlüsseln, bevor die Inhalte den Geräteaktualisierungsdienst erreichen.
Wenn ein Update vom Device Update-Dienst auf Geräten bereitgestellt wird, wird eine signierte Nachricht über den geschützten IoT Hub-Kanal an das Gerät gesendet. Die Signatur der Anforderung wird vom Device Update-Agent des Geräts als authentisch bestätigt.
Jeder sich ergebende binäre Download wird durch Validierung der Signatur des Updatemanifests gesichert. Das Updatemanifest enthält die Binärdateihashes. Sobald das Manifest vertrauenswürdig ist, vertraut der Device Update-Agent den Hashwerten und gleicht sie mit den Binärdateien ab. Nachdem die Update-Binärdatei heruntergeladen und verifiziert wurde, wird sie an das Installationsprogramm auf dem Gerät übergeben.
Details zur Implementierung
Um sicherzustellen, dass der Device Update-Dienst auf einfache Geräte mit geringer Leistung herunterskaliert werden kann, verwendet das Sicherheitsmodell asymmetrische Rohschlüssel und Rohsignaturen. Diese verwenden JSON-basierte Formate wie JSON Web Token und JSON Web Keys.
Sichern des Updateinhalts über das Updatemanifest
Das Updatemanifest wird mithilfe von zwei Signaturen überprüft. Die Signaturen werden mithilfe einer Struktur erstellt, die aus Signaturschlüsseln und Stammschlüsseln besteht.
Der Device Update-Agent verfügt über eingebettete öffentliche Schlüssel, die für alle Device Update-kompatiblen Geräte verwendet werden. Diese öffentlichen Schlüssel sind die Root-Schlüssel. Die entsprechenden privaten Schlüssel werden von Microsoft gesteuert.
Microsoft generiert auch ein öffentliches/privates Schlüsselpaar, das nicht im Geräteaktualisierungs-Agent enthalten oder auf dem Gerät gespeichert ist. Dieser Schlüssel ist der Signaturschlüssel.
Wenn ein Update in Device Update for IoT Hub importiert und das Updatemanifest vom Dienst generiert wird, signiert der Dienst das Manifest mit dem Signaturschlüssel und schließt den Signaturschlüssel selbst ein, der von einem Stammschlüssel signiert wird. Wenn das Update-Manifest an das Gerät gesendet wird, erhält der Device Update-Agent die folgenden Signaturdaten:
- Den Signaturwert selbst.
- Den Algorithmus, der zum Erstellen von Nr. 1 verwendet wird.
- Die Informationen zum öffentlichen Schlüssel des Signaturschlüssels, der zum Generieren von Nr. 1 verwendet wird.
- Die Signatur des öffentlichen Signaturschlüssels in Nr. 3.
- Die ID des öffentlichen Schlüssels des Stammschlüssels, der zum Generieren von Nr. 3 verwendet wird.
- Den Algorithmus, der zum Generieren von Nr. 4 verwendet wird.
Der Geräteaktualisierungs-Agent verwendet die oben definierten Informationen, um zu überprüfen, ob die Signatur des öffentlichen Signaturschlüssels vom Stammschlüssel signiert ist. Der Geräteupdate-Agent überprüft dann, ob die Signatur des Updatemanifests mit dem Signaturschlüssel signiert ist. Wenn alle Signaturen korrekt sind, vertraut der Geräteupdate-Agent dem Update-Manifest. Da das Updatemanifest die Dateihashes enthält, die den Updatedateien selbst entsprechen, können die Updatedateien auch als vertrauenswürdig eingestuft werden, wenn die Hashwerte übereinstimmen.
Durch die Verwendung von Stamm- und Signaturschlüsseln kann Microsoft den Signaturschlüssel regelmäßig rotiert: eine bewährte Sicherheitsmaßnahme.
JSON Web Signature (JWS)
Der updateManifestSignature
wird verwendet, um sicherzustellen, dass die darin enthaltenen Informationen updateManifest
nicht manipuliert wurden. updateManifestSignature
wird mithilfe einer JSON Web Signature mit JSON Web Keys generiert und ermöglicht damit Quellüberprüfung. Die Signatur ist eine Base64Url-codierte Zeichenfolge mit drei Abschnitten, die durch „.“ getrennt sind. Informationen zum Analysieren und Überprüfen von JSON-Schlüsseln und -Token finden Sie unter den Hilfsmethoden „jws_util.h“.
Die JSON WebSignature ist ein weit verbreiteter vorgeschlagener IETF-Standard zum Signieren von Inhalten mithilfe von JSON-basierten Datenstrukturen. Es ist eine Möglichkeit, die Integrität von Daten sicherzustellen, indem die Signatur der Daten überprüft wird. Weitere Informationen finden Sie in RFC 7515 zu JSON Web Signature (JWS).
JSON Web Token
JSON-Web-Tokens sind eine offene, branchenübliche Methode zur sicheren Darstellung von Ansprüchen zwischen zwei Parteien.
Stammschlüssel
Jedes Device Update-Gerät muss einen Satz von Stammschlüsseln enthalten. Diese Schlüssel sind bilden den Vertrauensstamm für alle Signaturen von Device Update. Jede Signatur muss mit einem dieser Stammschlüssel verkettet werden, damit sie als legitim eingestuft wird.
Der Satz von Stammschlüsseln ändert sich im Laufe der Zeit, da Signaturschlüssel aus Sicherheitsgründen regelmäßig rotiert werden müssen. Daher muss die Device Update Agent-Software in vom Device Update-Team festgelegten Intervallen mit den neuesten Stammschlüsseln aktualisiert werden. Die nächste geplante Drehung des Stammschlüssels erfolgt im Mai 2025.
Ab Version 1.1.0 des Geräteupdate-Agents überprüft der Agent bei jeder Bereitstellung eines Updates auf diesem Gerät automatisch auf Änderungen an Stammschlüsseln. Mögliche Änderungen:
- Ein neuer Stammschlüssel ist verfügbar.
- Ein vorhandener Stammschlüssel ist deaktiviert (effektiv "widerrufen"), was bedeutet, dass er nicht mehr gültig ist, um eine Vertrauensstellung herzustellen.
Wenn eine oder beide der oben genannten Punkte zutreffen, lädt der Geräteupdate-Agent automatisch ein neues Stammschlüsselpaket vom DU-Dienst herunter. Dieses Paket enthält den vollständigen Satz aller Stammschlüssel sowie eine deaktivierte Liste mit Informationen darüber, welche Stammschlüssel und/oder Signaturschlüssel nicht mehr gültig sind. Das Stammschlüsselpaket ist selbst mit jedem Stammschlüssel signiert, sodass die Vertrauensstellung für das Paket sowohl aus den ursprünglichen Stammschlüsseln, die Teil des DU-Agents selbst sind, als auch alle anschließend heruntergeladenen Stammschlüssel hergestellt werden kann. Sobald der Überprüfungsprozess abgeschlossen ist, werden alle neuen Stammschlüssel als vertrauenswürdig angesehen, um die Vertrauensstellung mit dem Signaturschlüssel für ein bestimmtes Updatemanifest zu überprüfen, während stammschlüssel oder Signaturschlüssel, die in der deaktivierten Liste aufgeführt sind, für diesen Zweck nicht mehr vertrauenswürdig sind.
Signaturen
Alle Signaturen werden von einem signierenden (öffentlichen) Schlüssel begleitet, der von einem der Root-Schlüssel signiert wird. Die Signatur gibt an, welcher Stammschlüssel zum Signieren des Signaturschlüssels verwendet wurde.
Ein Device Update-Agent muss Signaturen validieren, indem er zuerst überprüft, ob die Signatur des Signaturschlüssels (öffentlichen Schlüssels) ordnungsgemäß, gültig und von einem der genehmigten Stammschlüssel signiert ist. Nachdem der Signaturschlüssel erfolgreich überprüft wurde, kann die Signatur selbst mithilfe des jetzt vertrauenswürdigen öffentlichen Signaturschlüssels überprüft werden.
Signaturschlüssel werden in einem viel kürzeren Intervall als Stammschlüssel rotiert, sodass Nachrichten zu erwarten sind, die von verschiedenen unterschiedlichen Signaturschlüsseln signiert wurden.
Der Widerruf eines Signaturschlüssels wird vom Geräteaktualisierungsdienst verwaltet, daher sollten Benutzer nicht versuchen, Signaturschlüssel zwischenzuspeichern. Verwenden Sie immer den Signaturschlüssel, der eine Signatur begleitet.
Sicherung des Geräts
Es ist wichtig sicherzustellen, dass Sicherheitsressourcen im Zusammenhang mit Geräteaktualisierungen auf Ihrem Gerät ordnungsgemäß gesichert und geschützt sind. Ressourcen wie Stammschlüssel müssen vor Änderungen geschützt werden. Es gibt verschiedene Möglichkeiten, die Stammschlüssel zu schützen, z. B. die Verwendung von Sicherheitsgeräten (TPM, SGX, HSM, andere Sicherheitsgeräte) oder ihre Hartcodierung im Device Update-Agent, wie es heute in der Referenzimplementierung erfolgt. Letzteres erfordert, dass der Geräteaktualisierungs-Agentencode digital signiert ist und die Codeintegritätsunterstützung des Systems aktiviert ist, um vor böswilliger Änderung des Agentencodes zu schützen.
Andere Sicherheitsmaßnahmen können gerechtfertigt sein, wie z. B. das Sicherstellen, dass die Übergabe von Komponente zu Komponente auf sichere Weise durchgeführt wird. Beispielsweise das Registrieren eines bestimmten isolierten Kontos zum Ausführen der verschiedenen Komponenten und das Beschränken der netzwerkbasierten Kommunikation (z. B. REST-API-Aufrufe) auf localhost.
Nächste Schritte
Erfahren Sie, wie Device Update die rollenbasierte Zugriffssteuerung von Azure verwendet