Model zabezpieczeń usługi Device Update
Usługa Device Update dla usługi IoT Hub oferuje bezpieczną metodę wdrażania aktualizacji oprogramowania układowego urządzenia, obrazów i aplikacji na urządzeniach IoT. Przepływ pracy zapewnia kompletny bezpieczny kanał z pełnym modelem łańcucha nadzoru, którego urządzenie może użyć do udowodnienia, że aktualizacja jest zaufana, niezmodyfikowana i celowa.
Każdy krok w przepływie pracy aktualizacji urządzeń jest chroniony za pomocą różnych funkcji i procesów zabezpieczeń w celu zapewnienia, że każdy krok w potoku wykonuje zabezpieczone przekazanie do następnego. Kod referencyjny agenta usługi Device Update identyfikuje i prawidłowo zarządza wszelkimi bezprawnymi żądaniami aktualizacji. Agent referencyjny sprawdza również każde pobieranie, aby upewnić się, że zawartość jest zaufana, niezmodyfikowana i celowa.
Podsumowanie
W miarę importowania aktualizacji do wystąpienia usługi Device Update usługa przekazuje i sprawdza pliki binarne aktualizacji, aby upewnić się, że nie zostały zmodyfikowane lub zamienione przez złośliwego użytkownika. Po zweryfikowaniu usługa Device Update generuje wewnętrzny manifest aktualizacji z skrótami plików z manifestu importu i innymi metadanymi. Ten manifest aktualizacji jest następnie podpisany przez usługę Device Update.
Po zaimportowaniu do usługi i zapisie na platformie Azure pliki binarne aktualizacji i skojarzone metadane klienta są automatycznie szyfrowane w spoczynku przez usługę Azure Storage. Usługa Device Update nie zapewnia automatycznego szyfrowania, ale umożliwia deweloperom szyfrowanie zawartości przed dotarciem do usługi Device Update.
Po wdrożeniu aktualizacji na urządzeniach z usługi Device Update na urządzeniu do urządzenia jest wysyłany podpisany komunikat za pośrednictwem chronionego kanału usługi IoT Hub. Podpis żądania jest weryfikowany przez agenta usługi Device Update urządzenia jako uwierzytelniony.
Wszelkie wynikowe pobieranie binarne jest zabezpieczone przez walidację podpisu manifestu aktualizacji. Manifest aktualizacji zawiera skróty plików binarnych, więc gdy manifest jest zaufany, agent usługi Device Update ufa skrótom i dopasuje je do plików binarnych. Po pobraniu i zweryfikowaniu pliku binarnego aktualizacji zostanie on przekazany do instalatora na urządzeniu.
Szczegóły implementacji
Aby zapewnić skalowanie usługi Device Update w dół do prostych urządzeń o niskiej wydajności, model zabezpieczeń używa nieprzetworzonych kluczy asymetrycznych i pierwotnych podpisów. Używają formatów opartych na formacie JSON, takich jak tokeny internetowe JSON i klucze internetowe JSON.
Zabezpieczanie zawartości aktualizacji za pośrednictwem manifestu aktualizacji
Manifest aktualizacji jest weryfikowany przy użyciu dwóch podpisów. Podpisy są tworzone przy użyciu struktury składającej się z kluczy podpisywania i kluczy głównych.
Agent usługi Device Update ma osadzone klucze publiczne, które są używane dla wszystkich urządzeń zgodnych z aktualizacją urządzeń. Te klucze publiczne są kluczami głównymi. Odpowiednie klucze prywatne są kontrolowane przez firmę Microsoft.
Firma Microsoft generuje również parę kluczy publicznych/prywatnych, która nie jest uwzględniona w agencie usługi Device Update ani nie jest przechowywana na urządzeniu. Ten klucz jest kluczem podpisywania.
Po zaimportowaniu aktualizacji do usługi Device Update dla usługi IoT Hub, a manifest aktualizacji jest generowany przez usługę, usługa podpisuje manifest przy użyciu klucza podpisywania i zawiera sam klucz podpisywania, który jest podpisany przez klucz główny. Po wysłaniu manifestu aktualizacji na urządzenie agent usługi Device Update otrzymuje następujące dane podpisu:
- Sama wartość podpisu.
- Algorytm używany do generowania #1.
- Informacje o kluczu publicznym klucza podpisywania używane do generowania pliku #1.
- Podpis klucza publicznego podpisywania w pliku #3.
- Identyfikator klucza publicznego klucza głównego używanego do generowania pliku #3.
- Algorytm używany do generowania #4.
Agent usługi Device Update używa powyższych informacji, aby sprawdzić, czy podpis klucza podpisywania publicznego jest podpisany przez klucz główny. Agent usługi Device Update sprawdza następnie, czy podpis manifestu aktualizacji jest podpisany przez klucz podpisywania. Jeśli wszystkie podpisy są poprawne, manifest aktualizacji jest zaufany przez agenta usługi Device Update. Ponieważ manifest aktualizacji zawiera skróty plików, które odpowiadają samym plikom aktualizacji, pliki aktualizacji mogą być również zaufane, jeśli skróty są zgodne.
Posiadanie kluczy głównych i podpisywania umożliwia firmie Microsoft okresowe wprowadzanie klucza podpisywania, co jest najlepszym rozwiązaniem w zakresie zabezpieczeń.
Podpis internetowy JSON (JWS)
Służy updateManifestSignature
do zapewnienia, że informacje zawarte w obiekcie updateManifest
nie zostały naruszone. Element updateManifestSignature
jest generowany przy użyciu sygnatury internetowej JSON z kluczami internetowymi JSON, co umożliwia weryfikację źródła. Podpis jest ciągiem zakodowanym w formacie Base64Url z trzema sekcjami oddzielonymi znakami ".". Zapoznaj się z metodami pomocnika jws_util.h, aby przeanalizować i zweryfikować klucze i tokeny JSON.
JSON Web Signature to powszechnie stosowany standard IETF do podpisywania zawartości przy użyciu struktur danych opartych na formacie JSON. Jest to sposób zapewnienia integralności danych przez zweryfikowanie podpisu danych. Więcej informacji można znaleźć w artykule JSON Web Signature (JWS) RFC 7515.
Token internetowy JSON
Tokeny internetowe JSON są otwartą, standardową metodą reprezentowania oświadczeń bezpiecznie między dwiema stronami.
Klucze główne
Każde urządzenie z aktualizacją urządzenia musi zawierać zestaw kluczy głównych. Te klucze są głównym elementem zaufania dla wszystkich podpisów usługi Device Update. Każdy podpis musi być w łańcuchu za pośrednictwem jednego z tych kluczy głównych, aby był uznawany za uzasadniony.
Zestaw kluczy głównych zmieni się wraz z upływem czasu, ponieważ jest on odpowiedni do okresowego obracania kluczy podpisywania na potrzeby zabezpieczeń. W związku z tym należy zaktualizować oprogramowanie agenta usługi Device Update przy użyciu najnowszego zestawu kluczy głównych w odstępach czasu określonych przez zespół ds. aktualizacji urządzeń. Kolejna planowana rotacja klucza głównego nastąpi w maju 2025 r.
Począwszy od wersji 1.1.0 agenta usługi Device Update, agent automatycznie sprawdzi wszelkie zmiany kluczy głównych przy każdym wdrożeniu aktualizacji tego urządzenia. Możliwe zmiany:
- Dostępny jest nowy klucz główny.
- Istniejący klucz główny jest wyłączony (skutecznie "odwołany"), co oznacza, że nie jest już ważny do ustanawiania zaufania.
Jeśli oba powyższe elementy mają wartość true, agent usługi Device Update automatycznie pobierze z usługi DU nowy pakiet klucza głównego. Ten pakiet zawiera kompletny zestaw wszystkich kluczy głównych, a także listę wyłączoną zawierającą informacje o tym, które klucze główne i/lub klucze podpisywania nie są już prawidłowe. Pakiet klucza głównego jest sam podpisany przy użyciu każdego klucza głównego, dzięki czemu zaufanie dla pakietu można ustanowić zarówno z oryginalnych kluczy głównych, które są częścią samego agenta DU, jak i wszystkich następnie pobranych kluczy głównych. Po zakończeniu procesu weryfikacji wszystkie nowe klucze główne są uznawane za zaufane w celu weryfikacji zaufania przy użyciu klucza podpisywania dla danego manifestu aktualizacji, podczas gdy wszystkie klucze główne lub klucze podpisywania wymienione na liście wyłączonej nie są już zaufane w tym celu.
Podpisy
Wszystkie podpisy są dołączone przez klucz podpisywania (publiczny) podpisany przez jeden z kluczy głównych. Podpis określa, który klucz główny został użyty do podpisania klucza podpisywania.
Agent usługi Device Update musi najpierw zweryfikować podpisy, sprawdzając, czy podpis klucza podpisywania (publicznego) jest prawidłowy, prawidłowy i podpisany przez jeden z zatwierdzonych kluczy głównych. Po pomyślnym zweryfikowaniu klucza podpisywania podpis może zostać zweryfikowany przy użyciu teraz zaufanego klucza publicznego podpisywania.
Klucze podpisywania są obracane znacznie szybciej niż klucze główne, dlatego oczekują komunikatów podpisanych przy użyciu różnych kluczy podpisywania.
Odwołanie klucza podpisywania jest zarządzane przez usługę Device Update, więc użytkownicy nie powinni próbować buforować kluczy podpisywania. Zawsze używaj klucza podpisywania towarzyszącego podpisowi.
Zabezpieczanie urządzenia
Ważne jest, aby upewnić się, że zasoby zabezpieczeń związane z aktualizacją urządzenia są prawidłowo zabezpieczone i chronione na urządzeniu. Zasoby, takie jak klucze główne, muszą być chronione przed modyfikacją. Istnieją różne sposoby ochrony kluczy głównych, takich jak używanie urządzeń zabezpieczeń (TPM, SGX, HSM, innych urządzeń zabezpieczeń) lub kodowanie ich na stałe w agencie usługi Device Update, jak to ma miejsce w implementacji referencyjnej. Ten ostatni wymaga, aby kod agenta usługi Device Update został podpisany cyfrowo, a obsługa integralności kodu systemu jest włączona w celu ochrony przed złośliwymi modyfikacjami kodu agenta.
Inne środki bezpieczeństwa mogą być uzasadnione, takie jak zapewnienie, że przekazanie składnika do składnika jest wykonywane w bezpieczny sposób. Na przykład zarejestrowanie określonego izolowanego konta w celu uruchomienia różnych składników i ograniczenie komunikacji opartej na sieci (na przykład wywołania interfejsu API REST) tylko do hosta lokalnego.
Następne kroki
Dowiedz się, jak usługa Device Update korzysta z kontroli dostępu opartej na rolach platformy Azure