Sdílet prostřednictvím


Model zabezpečení služby Device Update

Aktualizace zařízení pro IoT Hub nabízí zabezpečenou metodu nasazení aktualizací firmwaru zařízení, imagí a aplikací do zařízení IoT. Pracovní postup poskytuje ucelený zabezpečený kanál s modelem úplného řetězu opatrovnictví, pomocí kterého může zařízení prokázat, že aktualizace je důvěryhodná, neupravená a úmyslná.

Každý krok pracovního postupu služby Device Update je chráněný různými funkcemi zabezpečení a procesy, aby se zajistilo, že každý krok v kanálu provede zabezpečené předání dalšímu kroku. Referenční kód agenta Device Update identifikuje a správně spravuje všechny nelegitimní žádosti o aktualizaci. Referenční agent také zkontroluje každé stahování, aby se zajistilo, že je obsah důvěryhodný, nezměněný a úmyslný.

Shrnutí

Při importu aktualizací do instance služby Device Update služba nahraje a zkontroluje binární soubory aktualizace, aby se ujistila, že je uživatel se zlými úmysly nezměnil. Po ověření služba Device Update vygeneruje interní manifest aktualizace s hodnotami hash souborů z manifestu importu a dalšími metadaty. Služba Device Update podepíše tento manifest aktualizace.

Po importu do služby a uložení v Azure služba Azure Storage automaticky šifruje binární soubory aktualizace a přidružená metadata zákazníků v klidovém stavu. Služba Device Update automaticky neposkytuje další šifrování, ale umožňuje vývojářům šifrovat obsah sami, než obsah dosáhne služby Device Update.

Při nasazení aktualizace do zařízení ze služby Device Update se do zařízení odešle podepsaná zpráva přes chráněný kanál IoT Hubu. Agent Device Update ověří podpis a určí, jestli je ověřený.

Jakékoli výsledné binární stahování je zabezpečeno prostřednictvím ověření podpisu manifestu aktualizace. Manifest aktualizace obsahuje hodnoty hash binárního souboru, takže jakmile je manifest důvěryhodný, agent Device Update důvěřuje hodnotám hash a porovnává je s binárními soubory. Jakmile se binární soubor aktualizace stáhne a ověří, předá se instalačnímu programu na zařízení.

Podrobnosti implementace

Aby se zajistilo, že se služba Device Update škáluje na jednoduchá zařízení s nízkým výkonem, model zabezpečení používá nezpracované asymetrické klíče a nezpracované podpisy. Používají formáty založené na JSON, jako jsou webové tokeny JSON a webové klíče JSON.

Zabezpečení obsahu aktualizace prostřednictvím manifestu aktualizace

Manifest aktualizace se ověřuje pomocí dvou podpisů. Podpisy se vytvářejí pomocí struktury skládající se z podpisových klíčů a kořenových klíčů.

Agent Device Update obsahuje vložené veřejné klíče, které se používají pro všechna zařízení kompatibilní se službou Device Update. Tyto veřejné klíče jsou kořenové klíče. Microsoft řídí odpovídající privátní klíče.

Microsoft také vygeneruje pár veřejného nebo privátního klíče, který není součástí agenta Device Update nebo uložený na zařízení. Tento klíč je podpisový klíč.

Při importu aktualizace do služby Device Update pro IoT Hub a služba vygeneruje manifest aktualizace, služba podepíše manifest pomocí podpisového klíče a zahrne samotný podpisový klíč, který je podepsaný kořenovým klíčem. Když se do zařízení odešle manifest aktualizace, agent aktualizace zařízení obdrží následující podpisová data:

  1. Samotná hodnota podpisu.
  2. Algoritmus použitý ke generování kódu č. 1.
  3. Informace o veřejném klíči podpisového klíče použitého k vygenerování kódu č. 1.
  4. Podpis veřejného podpisového klíče v #3.
  5. ID veřejného klíče kořenového klíče použitého k vygenerování kódu č. 3.
  6. Algoritmus použitý ke generování kódu č. 4.

Agent Device Update pomocí těchto informací ověří, že podpis veřejného podpisového klíče je podepsaný kořenovým klíčem. Agent Device Update pak ověří, že podpis manifestu aktualizace je podepsaný podpisem podpisového klíče. Pokud jsou všechny podpisy správné, agent device Update důvěřuje manifestu aktualizace. Vzhledem k tomu, že manifest aktualizace obsahuje hodnoty hash souborů, které odpovídají samotným aktualizačním souborům, mohou být aktualizační soubory také důvěryhodné, pokud se hodnoty hash shodují.

Použití kořenových a podpisových klíčů umožňuje Microsoftu pravidelně zavádět podpisový klíč, osvědčený postup zabezpečení.

Webový podpis JSON (JWS)

Slouží updateManifestSignature k zajištění toho, aby se informace obsažené v dokumentu updateManifest nezměnily. Vytvoří updateManifestSignature se pomocí webového podpisu JSON s webovými klíči JSON, což umožňuje ověření zdroje. Podpis je řetězec s kódováním Base64Url se třemi oddíly označenými znakem ".". Projděte si pomocné metody jws_util.h pro analýzu a ověření klíčů a tokenů JSON.

Webový podpis JSON je široce používaný navrhovaný standard IETF pro podepisování obsahu pomocí datových struktur založených na JSON. Je to způsob, jak zajistit integritu dat ověřením podpisu dat. Další informace najdete v dokumentu RFC 7515 JSON Web Signature (JWS).

Webový token JSON

Webové tokeny JSON představují otevřenou standardní metodu pro bezpečné reprezentaci deklarací identity mezi dvěma stranami.

Kořenové klíče

Každé zařízení device Update musí obsahovat sadu kořenových klíčů. Tyto klíče jsou kořenem důvěryhodnosti pro všechny podpisy služby Device Update. Každý podpis musí být zřetězený prostřednictvím jednoho z těchto kořenových klíčů, aby byl považován za legitimní.

Sada kořenových klíčů se v průběhu času změní, protože je vhodné pravidelně obměňovat podpisové klíče pro účely zabezpečení. V důsledku toho musí být software agenta Device Update aktualizován nejnovější sadou kořenových klíčů v intervalech určených týmem Device Update. V srpnu 2025 proběhne další plánovaná obměně kořenového klíče.

Od verze 1.1.0 agenta aktualizace zařízení agent automaticky zkontroluje všechny změny kořenových klíčů pokaždé, když dojde k nasazení aktualizace na toto zařízení. Možné změny:

  • K dispozici je nový kořenový klíč.
  • Existující kořenový klíč je zakázaný (efektivně odvolaný), což znamená, že už není platný pro navázání vztahu důvěryhodnosti.

Pokud je pravda, agent Device Update automaticky stáhne ze služby DU nový balíček kořenového klíče. Tento balíček obsahuje úplnou sadu všech kořenových klíčů a zakázaný seznam obsahující informace o tom, které kořenové klíče a/nebo podpisové klíče už nejsou platné. Balíček kořenového klíče je podepsaný jednotlivými kořenovými klíči, takže vztah důvěryhodnosti balíčku je možné navázat jak z původních kořenových klíčů, které jsou součástí samotného agenta DU, tak ze všech následně stažených kořenových klíčů. Po dokončení procesu ověřování se všechny nové kořenové klíče považují za důvěryhodné, aby ověřily důvěryhodnost s podpisovým klíčem pro daný manifest aktualizace, zatímco všechny kořenové klíče nebo podpisové klíče uvedené v seznamu zakázaných klíčů už nejsou pro tento účel důvěryhodné.

Podpisy

Podpisový (veřejný) klíč podepsaný jedním z kořenových klíčů doprovází všechny podpisy. Podpis identifikuje, který kořenový klíč se použil k podepsání podpisového klíče.

Agent služby Device Update musí ověřit podpisy tím, že nejprve ověří, že podpis podpisového (veřejného) klíče je správný, platný a podepsaný jedním ze schválených kořenových klíčů. Jakmile se podpisový klíč úspěšně ověří, podpis samotný se může ověřit pomocí nyní důvěryhodného veřejného klíče pro podpis.

Podpisové klíče se obměňují rychleji než kořenové klíče, takže můžete očekávat zprávy podepsané různými podpisovými klíči.

Služba Device Update v případě potřeby spravuje odvolání podpisových klíčů, takže by se uživatelé neměli pokoušet ukládat podpisové klíče do mezipaměti. Vždy používejte podpisový klíč, který doprovází podpis.

Zabezpečení zařízení

Je důležité zajistit, aby byly prostředky zabezpečení související se službou Device Update správně zabezpečené a chráněné na vašem zařízení. Prostředky, jako jsou kořenové klíče, musí být chráněny před úpravami. Existují různé způsoby, jak chránit kořenové klíče, například pomocí zařízení zabezpečení (TPM, SGX, HSM, jiných bezpečnostních zařízení) nebo pevně zakódovat v agentovi Device Update, jak je to dnes v referenční implementaci. Druhá verze vyžaduje digitální podepisování kódu agenta Device Update a povolení podpory integrity kódu systému pro ochranu před škodlivými úpravami kódu agenta.

Další bezpečnostní opatření mohou být zajištěna, jako je například zajištění, aby se předání ze komponenty do komponenty provádělo zabezpečeným způsobem. Například registrace konkrétního izolovaného účtu pro spuštění různých komponent a omezení síťové komunikace (například volání rozhraní REST API) pouze na místního hostitele.

Další kroky

Informace o tom, jak služba Device Update používá řízení přístupu na základě role v Azure