Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. Proces ten zapewnia bezpieczny kanał komunikacji od początku do końca oraz model pełnej ewidencji pochodzenia, dzięki czemu urządzenie może dowieść, że aktualizacja pochodzi z zaufanego źródła, nie została zmodyfikowana i jest zamierzona.
Każdy etap przepływu pracy usługi Device Update jest chroniony za pomocą różnych mechanizmów i procesów zabezpieczających, aby zapewnić, że każdy etap bezpiecznie przekazuje dane do kolejnego. 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
Podczas importowania aktualizacji do instancji usługi Device Update usługa przesyła 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 zapisaniu w usłudze Azure usługa Azure Storage automatycznie szyfruje przechowywane pliki binarne aktualizacji oraz powiązane metadane klienta. Usługa Device Update nie zapewnia automatycznego szyfrowania, ale umożliwia deweloperom szyfrowanie zawartości przed dotarciem do usługi Device Update.
Gdy aktualizacja jest wdrażana na urządzenia za pośrednictwem usługi Device Update, do urządzenia wysyłany jest podpisany komunikat przez chroniony kanał usługi IoT Hub. Agent usługi Device Update weryfikuje podpis, aby określić, czy jest on autentyczny.
Każdy pobrany w ten sposób plik binarny jest zabezpieczony dzięki weryfikacji 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 Device Update zawiera wbudowane klucze publiczne używane przez wszystkie urządzenia zgodne z usługą Device Update. 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 używanego do podpisywania, użytego do wygenerowania #1.
- Podpis publicznego klucza podpisywania w punkcie nr 3.
- Identyfikator klucza publicznego klucza głównego używanego do generowania #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 odpowiadające samym plikom aktualizacji, same pliki aktualizacji można również uznać za godne zaufania, jeśli te skróty są zgodne.
Posiadanie kluczy głównych i kluczy podpisywania umożliwia firmie Microsoft okresową rotację klucza podpisywania, co stanowi najlepszą praktykę w zakresie bezpieczeństwa.
Podpis internetowy JSON (JWS)
updateManifestSignature służy do zapewnienia, że informacje zawarte w elemencie 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.
JSON Web Token
Tokeny sieciowe JSON to otwarty standard branżowy służący do bezpiecznego przekazywania deklaracji między dwiema stronami.
Klucze główne
Każde urządzenie Device Update 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ć powiązany w łańcuchu zaufania z jednym z tych kluczy głównych, aby został uznany za prawidłowy.
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ń. Aby uzyskać wskazówki dotyczące przygotowania do rotacji głównych kluczy, zobacz Jak przygotować się do rotacji klucza głównego usługi Device Update for IoT Hub.
Począwszy od wersji 1.1.0, implementacja referencyjna agenta aktualizacji urządzeń automatycznie sprawdza wszelkie zmiany kluczy głównych przy każdym wdrożeniu aktualizacji na urządzeniu. 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 jeden z tych warunków lub oba są spełnione, agent Device Update automatycznie pobiera z usługi DU nowy pakiet klucza głównego. Ten pakiet zawiera kompletny zestaw wszystkich kluczy głównych oraz listę wycofanych, zawierającą informacje o tym, które klucze główne i/lub klucze podpisywania nie są już ważne. Pakiet kluczy głównych jest podpisany każdym kluczem głównym, dzięki czemu można ustanowić zaufanie do pakietu zarówno na podstawie oryginalnych kluczy głównych, które są częścią samego agenta DU, jak i wszelkich kluczy głównych pobranych później. 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
Do wszystkich podpisów dołączany jest klucz do 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ą wymieniane częściej niż klucze główne, dlatego należy się spodziewać komunikatów podpisanych różnymi kluczami 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ć konieczne, na przykład zapewnienie, że przekazywanie między komponentami odbywa się 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