Sdílet prostřednictvím


Model zabezpečení služby Device Update

Device Update for 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 vazeb, který zařízení může použít k prokázání, že aktualizace je důvěryhodná, neupravená a úmyslná.

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

Souhrn

Při importu aktualizací do instance služby Device Update služba nahraje a zkontroluje binární soubory aktualizace, aby se ujistila, že nebyly změněny nebo prohozeny uživatelem se zlými úmysly. Po ověření služba Device Update vygeneruje interní manifest aktualizace s hodnotami hash souborů z manifestu importu a dalších metadat. Tento manifest aktualizace je pak podepsán službou Device Update.

Po importu do služby a uložení v Azure se binární soubory aktualizace a přidružená metadata zákazníka automaticky šifrují v neaktivním stavu službou Azure Storage. Služba Device Update neposkytuje automaticky další šifrování, ale umožňuje vývojářům šifrovat obsah sami předtím, než se obsah dostane do služby Device Update.

Když se do zařízení nasadí aktualizace ze služby Device Update, odešle se do zařízení přes chráněný kanál IoT Hub podepsaná zpráva. Podpis žádosti se ověří agentem aktualizace zařízení jako autentický.

Všechny výsledné binární soubory ke stažení jsou zabezpečeny ověřením podpisu manifestu aktualizace. Manifest aktualizace obsahuje hodnoty hash binárních souborů, takže jakmile je manifest důvěryhodný, agent aktualizace zařízení důvěřuje hodnotám hash a porovná 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 o implementaci

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

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

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

Agent aktualizace zařízení má 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. Odpovídající privátní klíče řídí Microsoft.

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

Když se aktualizace importuje 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. Při odeslání manifestu aktualizace do zařízení obdrží agent aktualizace zařízení následující podpisová data:

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

Agent aktualizace zařízení používá výše definované informace k ověření, že podpis veřejného podpisového klíče je podepsaný kořenovým klíčem. Agent aktualizace zařízení pak ověří, že podpis manifestu aktualizace je podepsaný podpisem podpisového klíče. Pokud jsou všechny podpisy správné, je manifest aktualizace důvěryhodný agentem aktualizace zařízení. Vzhledem k tomu, že manifest aktualizace obsahuje hodnoty hash souborů, které odpovídají samotným souborům aktualizace, mohou být soubory aktualizací také důvěryhodné, pokud se hodnoty hash shodují.

Kořenové a podpisové klíče umožňují Microsoftu pravidelně vypisovat podpisový klíč, který je osvědčeným postupem zabezpečení.

Webový podpis JSON (JWS)

Slouží updateManifestSignature k zajištění toho, aby s informacemi obsaženými v updateManifest souboru nedošlo k manipulaci. Vytvoří se updateManifestSignature 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 vymezenými znakem ".". Parsování a ověřování klíčů JSON a tokenů najdete v pomocných metodách jws_util.h .

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

Webový token JSON

Webové tokeny JSON jsou otevřenou standardní metodou 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. Jakýkoli 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 bude v průběhu času měnit, protože je vhodné pravidelně obměňovat podpisové klíče z bezpečnostních důvodů. V důsledku toho bude potřeba aktualizovat software agenta Device Update nejnovější sadou kořenových klíčů v intervalech určených týmem device Update.

Podpisy

Všechny podpisy jsou doprovázeny podpisovým (veřejným) klíčem podepsaným jedním z kořenových klíčů. Podpis identifikuje, který kořenový klíč byl použit k podepsání podpisového klíče.

Agent aktualizace zařízení 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íčů. Po úspěšném ověření podpisového klíče může být samotný podpis ověřen pomocí nyní důvěryhodného podpisového veřejného klíče.

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

Odvolání podpisového klíče spravuje služba Device Update, 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 prostředky zabezpečení související se službou Device Update byly na vašem zařízení správně zabezpečené a chráněné. Prostředky, jako jsou kořenové klíče, musí být chráněny před úpravami. Kořenové klíče můžete chránit různými způsoby, například pomocí bezpečnostních zařízení (TPM, SGX, HSM a dalších bezpečnostních zařízení) nebo jejich pevným kódováním v agentovi aktualizace zařízení, jak to dnes děláme v referenční implementaci. Druhá možnost vyžaduje, aby kód agenta aktualizace zařízení byl digitálně podepsaný a aby byla povolená podpora integrity kódu systému, která chrání před škodlivými úpravami kódu agenta.

Další bezpečnostní opatření mohou být oprávněná, například zajistit, aby předávání mezi komponentou bylo prováděno bezpečným způsobem. Například registrace konkrétního izolovaného účtu pro spouš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