Freigeben über


Nachweis des symmetrischen Schlüssels

In diesem Artikel wird der Identitätsnachweisprozess bei Verwendung symmetrischer Schlüssel mit dem Gerätebereitstellungsdienst beschrieben. Der symmetrische Schlüsselnachweis ist ein einfacher Ansatz zum Authentifizieren eines Geräts mit einer Device Provisioning Service-Instanz. Diese Nachweismethode stellt eine "Hello world"-Erfahrung für Entwickler dar, die neu in der Gerätebereitstellung sind oder keine strengen Sicherheitsanforderungen haben. Der Gerätenachweis mit einem TPM oder einem X.509-Zertifikat ist sicherer und sollte für strengere Sicherheitsanforderungen verwendet werden.

Symmetrische Schlüsselregistrierungen bieten auch eine Möglichkeit für Ältere Geräte mit eingeschränkter Sicherheitsfunktionalität, um über Azure IoT in die Cloud zu bootstrapieren.

Symmetrische Schlüsselerstellung

Standardmäßig erstellt der Gerätebereitstellungsdienst neue symmetrische Schlüssel mit einer Länge von 64 Bytes, wenn neue Registrierungen mit den automatisch aktivierten Option "Symmetrische Schlüssel generieren " erstellt werden.

Screenshot einer neuen individuellen Registrierung mit ausgewählter Option

Sie können auch eigene symmetrische Schlüssel für Registrierungen bereitstellen, indem Sie diese Option deaktivieren. Symmetrische Schlüssel müssen im Base64-Format vorliegen und eine Schlüssellänge zwischen 16 Bytes und 64 Bytes aufweisen.

Detaillierter Nachweisprozess

Der symmetrische Schlüsselnachweis mit dem Gerätebereitstellungsdienst wird mit denselben Sicherheitstoken ausgeführt, die von IoT-Hubs unterstützt werden, um Geräte zu identifizieren. Diese Sicherheitstoken sind SAS-Token (Shared Access Signature).

SAS-Token verfügen über eine Hashsignatur , die mit dem symmetrischen Schlüssel erstellt wird. Der Gerätebereitstellungsdienst erstellt die Signatur neu, um zu überprüfen, ob ein sicherheitstoken, das während des Nachweises angezeigt wird, authentifiziert ist.

SAS-Token weisen das folgende Formular auf:

SharedAccessSignature sig={signature}&se={expiry}&skn={policyName}&sr={URL-encoded-resourceURI}

Hier sind die Komponenten der einzelnen Token:

Wert Description
{signature} Eine HMAC-SHA256 Signaturzeichenfolge. Bei einzelnen Registrierungen wird diese Signatur mithilfe des symmetrischen Schlüssels (primär oder sekundär) erstellt, um den Hash auszuführen. Bei Registrierungsgruppen wird ein vom Registrierungsgruppenschlüssel abgeleiteter Schlüssel verwendet, um den Hash auszuführen. Der Hash wird für eine Nachricht des Formulars ausgeführt: URL-encoded-resourceURI + "\n" + expiry. Wichtig: Der Schlüssel muss von base64 decodiert werden, bevor er zum Ausführen der HMAC-SHA256 Berechnung verwendet wird. Außerdem muss das Signaturergebnis URL-codiert sein.
{resourceURI} URI des Registrierungsendpunkts, auf den mit diesem Token zugegriffen werden kann, beginnend mit der Bereichs-ID für die Device Provisioning Service-Instanz. Beispiel: {Scope ID}/registrations/{Registration ID}
{expiry} UTF8-Zeichenfolgen für die Anzahl der Sekunden seit der Epoche 00:00:00 UTC am 1. Januar 1970.
{URL-encoded-resourceURI} URL-Codierung des Ressourcen-URI (beides in Kleinbuchstaben)
{policyName} Der Name der Shared Access Policy, auf die dieses Token verweist. Der Beim Bereitstellen mit symmetrischem Schlüsselnachweis verwendete Richtlinienname ist die Registrierung.

Codebeispiele zum Erstellen eines SAS-Tokens finden Sie unter SAS-Tokenstruktur.

Einzelne Registrierungen mit symmetrischen Schlüsseln

Wenn ein Gerät mit einer einzelnen Registrierung nachweist, verwendet das Gerät den symmetrischen Schlüssel, der im einzelnen Registrierungseintrag definiert ist, um die Hashsignatur für das SAS-Token zu erstellen.

Gruppieren von Registrierungen mit symmetrischen Schlüsseln

Im Gegensatz zu einer einzelnen Registrierung wird der symmetrische Schlüssel einer Registrierungsgruppe nicht direkt von Geräten verwendet, wenn sie bereitgestellt werden. Stattdessen verwenden Geräte, die über eine Registrierungsgruppe bereitgestellt werden, einen abgeleiteten Geräteschlüssel. Der abgeleitete Geräteschlüssel ist ein Hash der Registrierungs-ID des Geräts und wird mithilfe des symmetrischen Schlüssels der Registrierungsgruppe berechnet. Das Gerät kann dann den abgeleiteten Geräteschlüssel verwenden, um das SAS-Token zu signieren, das zum Registrieren bei DPS verwendet wird. Da das Gerät beim Registrieren seine Registrierungs-ID sendet, kann DPS den symmetrischen Registrierungsgruppenschlüssel verwenden, um den abgeleiteten Geräteschlüssel des Geräts neu zu generieren und die Signatur im SAS-Token zu überprüfen.

Zunächst wird eine eindeutige Registrierungs-ID für jedes Gerät definiert, das über eine Registrierungsgruppe authentifiziert wird. Die Registrierungs-ID ist eine Zeichenfolge ohne Groß-/Kleinschreibung (bis zu 128 Zeichen lang) von alphanumerischen Zeichen sowie gültige Sonderzeichen: - . _ :. Das letzte Zeichen muss alphanumerisch oder ein Bindestrich ('-') sein. Die Registrierungs-ID sollte etwas Eindeutiges sein, das das Gerät identifiziert. Beispielsweise ist eine MAC-Adresse oder Seriennummer verfügbar, um ein Gerät eindeutig zu identifizieren. In diesem Fall kann eine Registrierungs-ID aus der MAC-Adresse und der Seriennummer bestehen, die dem folgenden Beispiel ähnelt:

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Sobald eine Registrierungs-ID für das Gerät definiert ist, wird der symmetrische Schlüssel für die Registrierungsgruppe verwendet, um einen HMAC-SHA256-Hash der Registrierungs-ID zu berechnen, um einen abgeleiteten Geräteschlüssel zu erzeugen. Einige Beispielansätze zum Berechnen des abgeleiteten Geräteschlüssels werden auf den folgenden Tabs dargestellt.

Die IoT-Erweiterung für die Azure CLI stellt den compute-device-key Befehl zum Generieren abgeleiteter Geräteschlüssel bereit. Dieser Befehl kann von Windows-basierten oder Linux-Systemen in PowerShell oder einer Bash-Shell verwendet werden.

Ersetzen Sie den Wert des Arguments --key durch den Primärschlüssel aus Ihrer Registrierungsgruppe.

Ersetzen Sie den Wert des --registration-id Arguments durch Ihre Registrierungs-ID.

az iot dps enrollment-group compute-device-key --key 8isrFI1sGsIlvvFSSFRiMfCNzv21fjbE/+ah/lSh3lF8e2YG1Te7w1KpZhJFFXJrqYKi9yegxkqIChbqOS9Egw== --registration-id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Beispielergebnis:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Der resultierende Geräteschlüssel wird dann verwendet, um ein SAS-Token zu generieren, das für den Nachweis verwendet werden soll. Jedes Gerät in einer Registrierungsgruppe muss die Bestätigung mit einem Sicherheitstoken ausführen, das aus einem eindeutigen abgeleiteten Schlüssel generiert wurde. Der symmetrische Registrierungsgruppenschlüssel kann nicht direkt für den Nachweis verwendet werden.

Installieren des abgeleiteten Geräteschlüssels

Im Idealfall werden Geräteschlüssel abgeleitet und in der Fabrik installiert. Diese Methode garantiert, dass der Gruppenschlüssel niemals in einer Software enthalten ist, die auf dem Gerät bereitgestellt wird. Wenn einem Gerät eine MAC-Adresse oder Seriennummer zugewiesen wird, kann der Schlüssel abgeleitet und in das Gerät eingefügt werden, der Hersteller entscheidet jedoch, ihn zu speichern.

Betrachten Sie das folgende Diagramm, das eine Tabelle mit Geräteschlüsseln zeigt, die in einer Factory generiert werden, indem Sie jede Geräteregistrierungs-ID mit dem Gruppenregistrierungsschlüssel (K) hashen.

Diagramm, in dem Geräteschlüssel angezeigt werden, die in einer Factory zugewiesen werden.

Die Registrierungs-ID und der abgeleitete Geräteschlüssel, der auf der Factory installiert ist, stellt die Identität der einzelnen Geräte dar. Der Geräteschlüssel wird nie an einen anderen Speicherort kopiert, und der Gruppenschlüssel wird nie auf einem Gerät gespeichert.

Wenn die Geräteschlüssel nicht in der Factory installiert sind, sollte ein Hardwaresicherheitsmodul (HARDWARE Security Module , HSM) verwendet werden, um die Geräteidentität sicher zu speichern.

Nächste Schritte

Nachdem Sie nun ein Verständnis für den symmetrischen Schlüsselnachweis haben, lesen Sie die folgenden Artikel, um mehr zu erfahren: