Zaświadczanie klucza symetrycznego

W tym artykule opisano proces zaświadczania tożsamości podczas korzystania z kluczy symetrycznych w usłudze Device Provisioning Service. Zaświadczanie klucza symetrycznego to proste podejście do uwierzytelniania urządzenia przy użyciu wystąpienia usługi Device Provisioning Service. Ta metoda zaświadczania reprezentuje środowisko "Hello world" dla deweloperów, którzy są nowi w aprowizacji urządzeń lub nie mają rygorystycznych wymagań dotyczących zabezpieczeń. Zaświadczania urządzeń przy użyciu modułu TPM lub certyfikatu X.509 są bezpieczniejsze i powinny być używane do bardziej rygorystycznych wymagań dotyczących zabezpieczeń.

Rejestracje kluczy symetrycznych zapewniają również możliwość uruchamiania starszych urządzeń z ograniczoną funkcjonalnością zabezpieczeń w chmurze za pośrednictwem usługi Azure IoT.

Tworzenie klucza symetrycznego

Domyślnie usługa Device Provisioning Service tworzy nowe klucze symetryczne o długości 64 bajtów po utworzeniu nowych rejestracji z włączoną opcją Wygeneruj klucze symetryczne automatycznie .

Screenshot that shows a new individual enrollment with the autogenerate keys option selected.

Możesz również podać własne klucze symetryczne dla rejestracji, wyłączając tę opcję. Klucze symetryczne muszą mieć format Base 64 i mieć długość klucza z zakresu od 16 bajtów do 64 bajtów.

Szczegółowy proces zaświadczania

Zaświadczanie klucza symetrycznego za pomocą usługi Device Provisioning Service jest wykonywane przy użyciu tych samych tokenów zabezpieczających obsługiwanych przez centra IoT w celu identyfikowania urządzeń. Te tokeny zabezpieczające to tokeny sygnatury dostępu współdzielonego (SAS).

Tokeny sygnatury dostępu współdzielonego mają sygnaturę skrótu utworzoną przy użyciu klucza symetrycznego. Usługa Device Provisioning Ponownie utworzy podpis, aby sprawdzić, czy token zabezpieczający prezentowany podczas zaświadczania jest autentyczny.

Tokeny SAS mają następującą formę:

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

Oto składniki każdego tokenu:

Wartość Opis
{signature} Ciąg podpisu HMAC-SHA256. W przypadku rejestracji indywidualnych ten podpis jest generowany przy użyciu klucza symetrycznego (podstawowego lub pomocniczego) do wykonania skrótu. W przypadku grup rejestracji klucz pochodzący z klucza grupy rejestracji jest używany do wykonywania skrótu. Skrót jest wykonywany na komunikacie formularza: URL-encoded-resourceURI + "\n" + expiry. Ważne: klucz musi być zdekodowany z base64 przed użyciem do wykonywania obliczeń HMAC-SHA256. Ponadto wynik podpisu musi być zakodowany pod adresem URL.
{resourceURI} Identyfikator URI punktu końcowego rejestracji, do którego można uzyskać dostęp za pomocą tego tokenu, począwszy od identyfikatora zakresu dla wystąpienia usługi Device Provisioning Service. Na przykład {Scope ID}/registrations/{Registration ID}
{wygaśnięcie} Ciągi UTF8 dla liczby sekund od epoki 00:00:00 UTC 1 stycznia 1970 r.
{Identyfikator URL zakodowany zasób} Kodowanie adresów URL małych liter identyfikatora URI zasobu małego liter
{policyName} Nazwa zasad dostępu współdzielonego, do których odwołuje się ten token. Nazwa zasad używana podczas aprowizacji za pomocą zaświadczania klucza symetrycznego to rejestracja.

Przykłady kodu tworzące token SAS można znaleźć w temacie Tokeny SAS.

Rejestracje indywidualne z kluczami symetrycznymi

Gdy urządzenie zaświadcza o indywidualnej rejestracji, urządzenie używa klucza symetrycznego zdefiniowanego we wpisie rejestracji indywidualnej w celu utworzenia sygnatury skrótu dla tokenu SAS.

Rejestracje grup z kluczami symetrycznymi

W przeciwieństwie do rejestracji indywidualnej klucz symetryczny grupy rejestracji nie jest używany bezpośrednio przez urządzenia podczas aprowizacji. Zamiast tego urządzenia aprowizowania za pośrednictwem grupy rejestracji korzystają z pochodnego klucza urządzenia. Klucz pochodny urządzenia jest skrótem identyfikatora rejestracji urządzenia i jest obliczany przy użyciu klucza symetrycznego grupy rejestracji. Urządzenie może następnie użyć jego pochodnego klucza urządzenia do podpisania tokenu SAS używanego do rejestracji w usłudze DPS. Ponieważ urządzenie wysyła identyfikator rejestracji podczas rejestrowania, usługa DPS może użyć klucza symetrycznego grupy rejestracji w celu ponownego wygenerowania klucza urządzenia pochodnego urządzenia i zweryfikowania podpisu w tokenie SYGNATURY dostępu współdzielonego.

Najpierw unikatowy identyfikator rejestracji jest definiowany dla każdego urządzenia uwierzytelniającego się za pośrednictwem grupy rejestracji. Identyfikator rejestracji jest ciągiem bez uwzględniania wielkości liter (do 128 znaków) znaków alfanumerycznych oraz prawidłowymi znakami specjalnymi: - . _ :. Ostatni znak musi być alfanumeryczny lub kreskowy ('-'). Identyfikator rejestracji powinien być unikatowym identyfikatorem identyfikującym urządzenie. Na przykład adres MAC lub numer seryjny dostępny w celu unikatowego zidentyfikowania urządzenia. W takim przypadku identyfikator rejestracji może składać się z adresu MAC i numeru seryjnego podobnego do następującego:

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

Po zdefiniowaniu identyfikatora rejestracji dla urządzenia klucz symetryczny dla grupy rejestracji jest używany do obliczania skrótu HMAC-SHA256 identyfikatora rejestracji w celu wygenerowania klucza pochodnego urządzenia. Niektóre przykładowe podejścia do przetwarzania pochodnego klucza urządzenia są podane na poniższych kartach.

Rozszerzenie IoT dla interfejsu wiersza polecenia platformy Azure udostępnia compute-device-key polecenie do generowania pochodnych kluczy urządzeń. To polecenie może być używane z systemów Windows lub Linux, w programie PowerShell lub powłoce Bash.

Zastąp wartość --key argumentu kluczempodstawowym z grupy rejestracji.

Zastąp wartość argumentu --registration-id identyfikatorem rejestracji.

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

Przykładowy wynik:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Wynikowy klucz urządzenia jest następnie używany do generowania tokenu SYGNATURy dostępu współdzielonego do zaświadczania. Każde urządzenie w grupie rejestracji jest wymagane do zaświadczania przy użyciu tokenu zabezpieczającego wygenerowanego na podstawie unikatowego klucza pochodnego. Klucz symetryczny grupy rejestracji nie może być używany bezpośrednio do zaświadczania.

Instalowanie pochodnego klucza urządzenia

W idealnym przypadku klucze urządzeń są tworzone i instalowane w fabryce. Ta metoda gwarantuje, że klucz grupy nigdy nie jest uwzględniony w żadnym oprogramowaniu wdrożonym na urządzeniu. Gdy urządzenie ma przypisany adres MAC lub numer seryjny, klucz można uzyskać i wprowadzić do urządzenia, jednak producent zdecyduje się go przechowywać.

Rozważmy poniższy diagram przedstawiający tabelę kluczy urządzeń wygenerowaną w fabryce przez utworzenie skrótu każdego identyfikatora rejestracji urządzenia przy użyciu klucza rejestracji grupy (K).

Diagram that shows device keys being assigned at a factory.

Tożsamość każdego urządzenia jest reprezentowana przez identyfikator rejestracji i pochodny klucz urządzenia zainstalowany w fabryce. Klucz urządzenia nigdy nie jest kopiowany do innej lokalizacji, a klucz grupy nigdy nie jest przechowywany na urządzeniu.

Jeśli klucze urządzeń nie są zainstalowane w fabryce, sprzętowy moduł zabezpieczeń HSM powinien być używany do bezpiecznego przechowywania tożsamości urządzenia.

Następne kroki

Teraz, gdy masz już wiedzę na temat zaświadczania klucza symetrycznego, zapoznaj się z następującymi artykułami, aby dowiedzieć się więcej: