Share via


Apparaatupdate-beveiligingsmodel

Device Update voor IoT Hub biedt een veilige methode voor het implementeren van updates voor apparaatfirmware, installatiekopieën en toepassingen op uw IoT-apparaten. De werkstroom biedt een end-to-end beveiligd kanaal met een volledig bewakingsmodel dat een apparaat kan gebruiken om te bewijzen dat een update vertrouwd, ongewijzigd en opzettelijk is.

Elke stap in de werkstroom Apparaatupdate wordt beveiligd via verschillende beveiligingsfuncties en -processen om ervoor te zorgen dat elke stap in de pijplijn een beveiligde overdracht naar de volgende uitvoert. De referentiecode van de Device Update-agent identificeert en beheert alle niet-gemachtigde updateaanvragen. De referentieagent controleert ook elke download om ervoor te zorgen dat de inhoud wordt vertrouwd, ongewijzigd en opzettelijk is.

Samenvatting

Wanneer updates worden geïmporteerd in een device update-exemplaar, uploadt en controleert de service de binaire updatebestanden om ervoor te zorgen dat ze niet zijn gewijzigd of gewisseld door een kwaadwillende gebruiker. Na verificatie genereert de Device Update-service een intern updatemanifest met bestands-hashes uit het importmanifest en andere metagegevens. Dit updatemanifest wordt vervolgens ondertekend door de Device Update-service.

Nadat ze zijn geïmporteerd in de service en zijn opgeslagen in Azure, worden de binaire bestanden en de bijbehorende metagegevens van de klant automatisch versleuteld door de Azure Storage-service. De Device Update-service biedt niet automatisch extra versleuteling, maar biedt ontwikkelaars wel de mogelijkheid om inhoud zelf te versleutelen voordat de inhoud de Device Update-service bereikt.

Wanneer een update wordt geïmplementeerd op apparaten van de Device Update-service, wordt een ondertekend bericht verzonden via het beveiligde IoT Hub-kanaal naar het apparaat. De handtekening van de aanvraag wordt gevalideerd door de Device Update-agent van het apparaat als authentiek.

Elke resulterende binaire download wordt beveiligd via validatie van de handtekening van het updatemanifest. Het updatemanifest bevat de binaire bestands-hashes, dus zodra het manifest wordt vertrouwd, vertrouwt de Device Update-agent de hashes en komt deze overeen met de binaire bestanden. Zodra het binaire updatebestand is gedownload en geverifieerd, wordt het vervolgens doorgegeven aan het installatieprogramma op het apparaat.

Implementatiedetails

Om ervoor te zorgen dat de Device Update-service omlaag wordt geschaald naar eenvoudige apparaten met lage prestaties, gebruikt het beveiligingsmodel onbewerkte asymmetrische sleutels en onbewerkte handtekeningen. Ze gebruiken indelingen op basis van JSON, zoals JSON-webtokens en JSON-websleutels.

Update-inhoud beveiligen via het updatemanifest

Het updatemanifest wordt gevalideerd met behulp van twee handtekeningen. De handtekeningen worden gemaakt met behulp van een structuur die bestaat uit ondertekeningssleutels en hoofdsleutels .

De Device Update-agent bevat ingesloten openbare sleutels die worden gebruikt voor alle apparaten die compatibel zijn met Device Update. Deze openbare sleutels zijn de hoofdsleutels . De bijbehorende persoonlijke sleutels worden beheerd door Microsoft.

Microsoft genereert ook een openbaar/persoonlijk sleutelpaar dat niet is opgenomen in de Device Update-agent of die is opgeslagen op het apparaat. Deze sleutel is de ondertekeningssleutel .

Wanneer een update wordt geïmporteerd in Device Update voor IoT Hub en het updatemanifest wordt gegenereerd door de service, ondertekent de service het manifest met behulp van de ondertekeningssleutel en bevat de ondertekeningssleutel zelf, die is ondertekend door een hoofdsleutel. Wanneer het updatemanifest naar het apparaat wordt verzonden, ontvangt de Device Update-agent de volgende handtekeninggegevens:

  1. De handtekeningwaarde zelf.
  2. Het algoritme dat wordt gebruikt voor het genereren van #1.
  3. De informatie over de openbare sleutel van de ondertekeningssleutel die wordt gebruikt voor het genereren van #1.
  4. De handtekening van de openbare ondertekeningssleutel in #3.
  5. De openbare-sleutel-id van de hoofdsleutel die wordt gebruikt voor het genereren van #3.
  6. Het algoritme dat wordt gebruikt voor het genereren van #4.

De Device Update-agent gebruikt de hierboven gedefinieerde informatie om te controleren of de handtekening van de openbare ondertekeningssleutel is ondertekend door de hoofdsleutel. De Device Update-agent valideert vervolgens of de handtekening van het updatemanifest is ondertekend door de ondertekeningssleutel. Als alle handtekeningen juist zijn, wordt het updatemanifest vertrouwd door de Device Update-agent. Omdat het updatemanifest de bestands-hashes bevat die overeenkomen met de updatebestanden zelf, kunnen de updatebestanden ook worden vertrouwd als de hashes overeenkomen.

Als u hoofd- en ondertekeningssleutels hebt, kan Microsoft de ondertekeningssleutel periodiek uitrollen, een aanbevolen beveiligingspraktijk.

JSON Web Signature (JWS)

Deze updateManifestSignature wordt gebruikt om ervoor te zorgen dat er niet met de informatie in de updateManifest informatie is geknoeid. De updateManifestSignature wordt geproduceerd met behulp van een JSON-webhandtekening met JSON-websleutels, waardoor bronverificatie mogelijk is. De handtekening is een Base64Url Gecodeerde tekenreeks met drie secties die zijn uitgelijnd door ".". Raadpleeg de helpermethoden jws_util.h voor het parseren en verifiëren van JSON-sleutels en -tokens.

JSON Web Signature is een veelgebruikte IETF-standaard voor ondertekening van inhoud met JSON-gegevensstructuren. Het is een manier om de integriteit van gegevens te waarborgen door de handtekening van de gegevens te verifiëren. Meer informatie vindt u in de JSON Web Signature (JWS) RFC 7515.

JSON-webtoken

JSON-webtokens zijn een open, industriestandaardmethode voor het veilig vertegenwoordigen van claims tussen twee partijen.

Hoofdsleutels

Elk Apparaat bijwerken moet een set hoofdsleutels bevatten. Deze sleutels vormen de basis van vertrouwen voor alle handtekeningen van Device Update. Elke handtekening moet worden gekoppeld via een van deze hoofdsleutels om als legitiem te worden beschouwd.

De set hoofdsleutels wordt na verloop van tijd gewijzigd, omdat het goed is om ondertekeningssleutels periodiek te roteren voor beveiligingsdoeleinden. Als gevolg hiervan moet de Device Update-agentsoftware worden bijgewerkt met de meest recente set hoofdsleutels met intervallen die zijn opgegeven door het Device Update-team. De volgende geplande hoofdsleutelrotatie vindt plaats in mei 2025.

Vanaf versie 1.1.0 van de Device Update-agent controleert de agent automatisch op wijzigingen in de hoofdsleutels telkens wanneer een implementatie van een update op dat apparaat plaatsvindt. Mogelijke wijzigingen:

  • Er is een nieuwe hoofdsleutel beschikbaar.
  • Een bestaande hoofdsleutel is uitgeschakeld (ingetrokken), wat betekent dat deze niet langer geldig is voor het tot stand brengen van een vertrouwensrelatie.

Als een of beide van de bovenstaande waar zijn, downloadt de Device Update-agent automatisch een nieuw basissleutelpakket van de DU-service. Dit pakket bevat de volledige set hoofdsleutels, evenals een uitgeschakelde lijst met informatie over welke hoofdsleutels en/of ondertekeningssleutels niet meer geldig zijn. Het basissleutelpakket is zelf ondertekend met elke hoofdsleutel, zodat vertrouwen voor het pakket kan worden ingesteld op basis van de oorspronkelijke hoofdsleutels die deel uitmaken van de DU-agent zelf, evenals eventuele later gedownloade basissleutels. Zodra het validatieproces is voltooid, worden nieuwe hoofdsleutels beschouwd als vertrouwd voor het valideren van de vertrouwensrelatie met de ondertekeningssleutel voor een bepaald updatemanifest, terwijl eventuele hoofdsleutels of ondertekeningssleutels die in de lijst met uitgeschakelde sleutels worden vermeld, niet langer worden vertrouwd voor dat doel.

Handtekeningen

Alle handtekeningen worden vergezeld van een ondertekeningssleutel (openbare) sleutel die is ondertekend door een van de hoofdsleutels. De handtekening geeft aan welke hoofdsleutel is gebruikt om de ondertekeningssleutel te ondertekenen.

Een Device Update-agent moet handtekeningen valideren door eerst te valideren dat de handtekening van de handtekening (openbare) sleutel juist, geldig en ondertekend is door een van de goedgekeurde basissleutels. Zodra de ondertekeningssleutel is gevalideerd, kan de handtekening zelf worden gevalideerd met behulp van de nu vertrouwde openbare ondertekeningssleutel.

Ondertekeningssleutels worden veel sneller geroteerd dan de hoofdsleutels, dus verwacht berichten die zijn ondertekend door verschillende ondertekeningssleutels.

Het intrekken van een ondertekeningssleutel wordt beheerd door de Device Update-service, dus gebruikers mogen geen ondertekeningssleutels in de cache opslaan. Gebruik altijd de ondertekeningssleutel bij een handtekening.

Het apparaat beveiligen

Het is belangrijk om ervoor te zorgen dat apparaatupdate-gerelateerde beveiligingsassets goed zijn beveiligd en beveiligd op uw apparaat. Assets zoals hoofdsleutels moeten worden beveiligd tegen wijziging. Er zijn verschillende manieren om de hoofdsleutels te beveiligen, zoals het gebruik van beveiligingsapparaten (TPM, SGX, HSM, andere beveiligingsapparaten) of hardcodering in de Device Update-agent, zoals vandaag in de referentie-implementatie wordt uitgevoerd. De laatste vereist dat de Device Update-agentcode digitaal is ondertekend en dat de ondersteuning voor code-integriteit van het systeem is ingeschakeld om te beschermen tegen schadelijke wijziging van de agentcode.

Andere beveiligingsmaatregelen kunnen worden gerechtvaardigd, zoals ervoor zorgen dat het afleveren van onderdelen op een veilige manier wordt uitgevoerd. Als u bijvoorbeeld een specifiek geïsoleerd account registreert om de verschillende onderdelen uit te voeren en netwerkcommunicatie (bijvoorbeeld REST API-aanroepen) te beperken tot alleen localhost.

Volgende stappen

Meer informatie over hoe Device Update gebruikmaakt van op rollen gebaseerd toegangsbeheer van Azure