Freigeben über


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

Wenn Updates in eine Geräteupdateinstanz importiert werden, lädt der Dienst die Update-Binärdateien hoch und überprüft sie, um sicherzustellen, dass ein böswilliger Benutzer sie nicht geändert hat. Nach der Überprüfung generiert der Device Update-Dienst ein internes Updatemanifest mit Dateihashes aus dem Importmanifest und anderen Metadaten. Der Geräte-Updatedienst signiert dieses Updatemanifest.

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. Der Geräteupdate-Agent überprüft die Signatur, um festzustellen, ob er authentifiziert ist.

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. Sobald die Update-Binärdatei heruntergeladen und überprüft 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 Geräteupdate-Agent enthält eingebettete öffentliche Schlüssel, die für alle Geräteupdatekompatiblen Geräte verwendet werden. Diese öffentlichen Schlüssel sind die Root-Schlüssel. Microsoft steuert die entsprechenden privaten Schlüssel.

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 für IoT Hub importiert wird und der Dienst das Updatemanifest generiert, signiert der Dienst das Manifest mithilfe des Signaturschlüssels 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:

  1. Den Signaturwert selbst.
  2. Den Algorithmus, der zum Erstellen von Nr. 1 verwendet wird.
  3. Die Informationen zum öffentlichen Schlüssel des Signaturschlüssels, der zum Generieren von Nr. 1 verwendet wird.
  4. Die Signatur des öffentlichen Signaturschlüssels in Nr. 3.
  5. Die ID des öffentlichen Schlüssels des Stammschlüssels, der zum Generieren von Nr. 3 verwendet wird.
  6. Den Algorithmus, der zum Generieren von Nr. 4 verwendet wird.

Der Geräteupdate-Agent verwendet diese 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 Updatemanifest. 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)

Dies updateManifestSignature wird verwendet, um sicherzustellen, dass die darin updateManifest enthaltenen Informationen nicht geändert werden. 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 Geräteupdate-Agent-Software mit dem neuesten Satz von Stammschlüsseln in Intervallen aktualisiert werden, die vom Geräteupdateteam angegeben werden. Die nächste geplante Drehung des Stammschlüssels erfolgt im August 2025.

Ab Version 1.1.0 des Geräteupdate-Agents sucht der Agent bei jeder Bereitstellung eines Updates auf diesem Gerät automatisch nach Ä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 beides wahr ist, lädt der Geräteupdate-Agent automatisch ein neues Stammschlüsselpaketvom DU-Dienst herunter. Dieses Paket enthält den vollständigen Satz aller Stammschlüssel und eine deaktivierte Liste mit Informationen dazu, 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 alle in der deaktivierten Liste aufgeführten Stammschlüssel oder Signaturschlüssel zu diesem 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 Geräteupdatedienst verwaltet bei Bedarf den Widerruf von Signaturschlüsseln, sodass Benutzer nicht versuchen sollten, 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 die digitale Signierung des Geräteupdate-Agent-Codes und die Aktivierung der Codeintegritätsunterstützung des Systems’, um vor böswilliger Änderung des Agent-Codes 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