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 złośliwy użytkownik ich nie zmodyfikował. Po zweryfikowaniu usługa Device Update generuje wewnętrzny manifest aktualizacji z skrótami plików z manifestu importu i innymi metadanymi. Usługa Device Update podpisuje ten manifest aktualizacji.
Po zaimportowaniu do usługi i zapisie na platformie Azure usługa Azure Storage automatycznie szyfruje pliki binarne aktualizacji i skojarzone metadane klienta magazynowane. 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. Agent usługi Device Update weryfikuje podpis, aby określić, czy jest on autentyczny.
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 zawiera osadzone klucze publiczne, które są używane dla wszystkich urządzeń zgodnych z aktualizacją urządzeń. Te klucze publiczne są kluczami głównymi. Firma Microsoft kontroluje odpowiednie klucze prywatne.
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.
Gdy aktualizacja zostanie zaimportowana do usługi Device Update dla usługi IoT Hub, a usługa generuje manifest aktualizacji, 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 tych informacji do sprawdzania, 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, agent aktualizacji urządzenia ufa manifestowi aktualizacji. 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 są modyfikowane. 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 oprogramowanie agenta usługi Device Update musi być aktualizowane przy użyciu najnowszego zestawu kluczy głównych w odstępach czasu określonych przez zespół ds. aktualizacji urządzeń. Kolejna planowana rotacja kluczy głównych nastąpi w sierpniu 2025 r.
Począwszy od wersji 1.1.0 agenta usługi Device Update, agent automatycznie sprawdza 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 wartość lub obie są prawdziwe, agent usługi Device Update automatycznie pobiera z usługi DU nowy pakiet klucza głównego. Ten pakiet zawiera kompletny zestaw wszystkich kluczy głównych, a wyłączona lista zawierająca 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ą uważane za zaufane w celu zweryfikowania zaufania przy użyciu klucza podpisywania dla danego manifestu aktualizacji, podczas gdy wszystkie klucze główne lub klucze podpisywania wymienione na liście wyłączonych nie są już zaufane w tym celu.
Podpisy
Klucz podpisywania (publiczny) podpisany przez jeden z kluczy głównych towarzyszy wszystkim podpisom. 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 w szybszym tempie niż klucze główne, dlatego oczekują komunikatów podpisanych przy użyciu różnych kluczy podpisywania.
Usługa Device Update zarządza odwołaniem kluczy podpisywania w razie potrzeby, 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 cyfrowego podpisywania kodu agenta usługi Device Update i włączenia obsługi integralności kodu systemu 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