Modello di sicurezza di Device Update

Aggiornamento dei dispositivi per hub IoT offre un metodo sicuro per distribuire gli aggiornamenti per il firmware del dispositivo, le immagini e le applicazioni nei dispositivi IoT. Il flusso di lavoro fornisce un canale sicuro end-to-end con un modello di custodia completo che un dispositivo può usare per dimostrare che un aggiornamento è attendibile, non modificato e intenzionale.

Ogni passaggio del flusso di lavoro Aggiornamento dei dispositivi è protetto tramite diverse funzionalità e processi di sicurezza per garantire che ogni fase della pipeline effettui un trasferimento sicuro alla fase successiva. Il codice di riferimento dell'agente di Aggiornamento dispositivi identifica e gestisce correttamente eventuali richieste di aggiornamento non valide. L'agente di riferimento controlla anche ogni download per assicurarsi che il contenuto sia attendibile, non modificato e intenzionale.

Riepilogo

Man mano che gli aggiornamenti vengono importati in un'istanza di Aggiornamento dispositivi, il servizio carica e controlla i file binari di aggiornamento per assicurarsi che un utente malintenzionato non li abbia modificati. Una volta verificato, il servizio Device Update genera un manifest di aggiornamento interno con gli hash dei file del manifest di importazione e altri metadati. Il servizio di aggiornamento dei dispositivi firma questo manifesto di aggiornamento.

Una volta importati nel servizio e archiviati in Azure, il servizio di archiviazione di Azure crittografa automaticamente i file binari di aggiornamento e i metadati dei clienti associati quando sono archiviati. Il servizio Aggiornamento dispositivi non fornisce automaticamente una crittografia aggiuntiva, ma consente agli sviluppatori di crittografare autonomamente il contenuto prima che il contenuto raggiunga il servizio Aggiornamento dispositivi.

Quando un aggiornamento viene distribuito ai dispositivi dal servizio Aggiornamento dispositivi, viene inviato un messaggio firmato tramite il canale hub IoT protetto al dispositivo. L'agente di Aggiornamento dispositivi convalida la firma per determinare se è autentica.

Qualsiasi download binario risultante viene protetto tramite la convalida della firma del manifesto di aggiornamento. Il manifest dell'aggiornamento contiene gli hash dei file binari, quindi, una volta che il manifest è considerato attendibile, l'agente Device Update considera attendibili gli hash e li confronta con i file binari. Dopo aver scaricato e verificato il file binario di aggiornamento, viene trasmesso al programma di installazione nel dispositivo.

Dettagli sull'implementazione

Per garantire che il servizio Device Update possa adattarsi anche a dispositivi semplici e poco performanti, il modello di sicurezza utilizza chiavi asimmetriche grezze e firme grezze. Usano formati basati su JSON, ad esempio token WEB JSON e chiavi Web JSON.

Protezione del contenuto degli aggiornamenti tramite il manifesto di aggiornamento

Il manifesto dell'aggiornamento viene convalidato usando due firme. Le firme vengono create usando una struttura costituita da chiavi di firma e chiavi radice .

L'agente Device Update contiene chiavi pubbliche integrate che vengono utilizzate in tutti i dispositivi compatibili con Device Update. Queste chiavi pubbliche sono le chiavi radice . Microsoft controlla le chiavi private corrispondenti.

Microsoft genera anche una coppia di chiavi pubblica/privata non inclusa nell'agente di Aggiornamento dispositivi o archiviata nel dispositivo. Questa chiave è la chiave di firma .

Quando un aggiornamento viene importato in Device Update per hub IoT e il servizio genera il manifest dell'aggiornamento, il servizio firma il manifest mediante la chiave di firma e include la chiave di firma stessa, firmata da una chiave root. Quando il manifesto dell'aggiornamento viene inviato al dispositivo, l'agente di Aggiornamento dispositivi riceve i dati di firma seguenti:

  1. Il valore della firma stesso.
  2. Algoritmo usato per la generazione di #1.
  3. Informazioni sulla chiave pubblica della chiave di firma utilizzata per generare #1.
  4. Firma della chiave di firma pubblica in #3.
  5. ID chiave pubblica della chiave radice usata per generare #3.
  6. Algoritmo usato per la generazione di #4.

L'agente di Device Update utilizza queste informazioni per verificare che la firma della chiave pubblica di firma sia firmata dalla chiave root. L'agente Device Update convalida quindi che la firma del manifest di aggiornamento sia stata apposta con la chiave di firma. Se tutte le firme sono corrette, l'agente di Aggiornamento dispositivi considera attendibile il manifesto dell'aggiornamento. Poiché il manifesto dell'aggiornamento include gli hash dei file che corrispondono ai file di aggiornamento stessi, i file di aggiornamento possono essere considerati attendibili anche se gli hash corrispondono.

La presenza di chiavi radice e di firma consente a Microsoft di eseguire periodicamente il rollback della chiave di firma, una procedura consigliata per la sicurezza.

JSON Web Signature (JWS)

Il updateManifestSignature viene utilizzato per garantire che le informazioni contenute nel updateManifest non vengano modificate. updateManifestSignature viene prodotto tramite una JSON Web Signature con JSON Web Key, consentendo di verificarne l'origine. La firma è una stringa con codifica Base64Url con tre sezioni delineate da ".". Fare riferimento ai metodi helper jws_util.h per l'analisi e la verifica di chiavi e token JSON.

JSON Web Signature è un standard IETF proposto ampiamente utilizzato per firmare contenuti mediante strutture di dati basate su JSON. È un modo per garantire l'integrità dei dati verificando la firma dei dati. Altre informazioni sono disponibili in JSON Web Signature (JWS) RFC 7515.

JSON Web Token

I token Web JSON sono un metodo standard di settore aperto per rappresentare in modo sicuro le attestazioni tra due parti.

Chiavi principali

Ogni dispositivo Device Update deve contenere un set di chiavi radice. Queste chiavi sono la radice di attendibilità per tutte le firme di Device Update. Qualsiasi firma deve essere riconducibile, attraverso una catena di attendibilità, a una di queste chiavi radice per essere considerata legittima.

Il set di chiavi radice cambierà nel tempo perché è appropriato ruotare periodicamente le chiavi di firma a scopo di sicurezza. Di conseguenza, il software dell'agente Device Update deve essere aggiornato con il set più aggiornato di chiavi radice a intervalli specificati dal team di Device Update. Per indicazioni su come prepararsi alla rotazione delle chiavi radice, vedere Come prepararsi alla rotazione di una chiave radice di Device Update for hub IoT.

A partire dalla versione 1.1.0, l'implementazione di riferimento dell'agente di Aggiornamento dispositivi verifica automaticamente la presenza di eventuali modifiche alle chiavi radice ogni volta che viene distribuito un aggiornamento nel dispositivo. Possibili modifiche:

  • È disponibile una nuova chiave principale.
  • Una chiave radice esistente è disabilitata (effettivamente "revocata"), ovvero non è più valida per stabilire l'attendibilità.

Se una o entrambe le condizioni sono vere, l'agente Device Update scarica automaticamente dal servizio DU un nuovo pacchetto della chiave radice. Questo pacchetto contiene il set completo di tutte le chiavi radice e un elenco disabilitato contenente informazioni sulle chiavi radice e/o sulle chiavi di firma non più valide. Il pacchetto della chiave radice viene firmato con ogni chiave radice, in modo che l'attendibilità per il pacchetto possa essere stabilita sia dalle chiavi radice originali che fanno parte dell'agente DU stesso e da qualsiasi chiave radice successivamente scaricata. Una volta completato il processo di convalida, tutte le nuove chiavi radice vengono considerate attendibili per convalidare l'attendibilità con la chiave di firma per un determinato manifesto di aggiornamento, mentre qualsiasi chiave radice o chiave di firma elencata nell'elenco disabilitato non è più attendibile a tale scopo.

Firme

Una chiave di firma (pubblica) firmata da una delle chiavi radice accompagna tutte le firme. La firma identifica la chiave radice usata per firmare la chiave di firma.

Un agente di aggiornamento dei dispositivi deve convalidare le firme verificando innanzitutto che la firma della chiave pubblica di firma sia corretta, valida e apposta da una delle chiavi radice autorizzate. Dopo la convalida della chiave di firma, la firma stessa può essere convalidata usando la chiave pubblica di firma ora attendibile.

Le chiavi di firma vengono ruotate su una cadenza più rapida rispetto alle chiavi radice, quindi si prevedono messaggi firmati da diverse chiavi di firma.

Se necessario, il servizio Device Update gestisce la revoca delle chiavi di firma, quindi gli utenti non devono tentare di memorizzare nella cache le chiavi di firma. Usare sempre la chiave di firma associata a una firma.

Protezione del dispositivo

È importante assicurarsi che i componenti di sicurezza relativi a Device Update siano adeguatamente messi in sicurezza e protetti sul dispositivo. Gli asset, ad esempio le chiavi radice, devono essere protetti dalla modifica. Esistono diversi modi per proteggere le chiavi radice, ad esempio utilizzando dispositivi di sicurezza (TPM, SGX, HSM e altri dispositivi di sicurezza) oppure codificandole direttamente nell'agente Device Update, come avviene oggi nell'implementazione di riferimento. Quest'ultimo richiede la firma digitale del codice dell'agente di Aggiornamento dispositivo e l'abilitazione del supporto per l'integrità del codice del sistema per proteggere il codice dell'agente da modifiche dannose.

È possibile garantire altre misure di sicurezza, ad esempio garantire che il passaggio dal componente al componente venga eseguito in modo sicuro. Ad esempio, la registrazione di un account isolato specifico per eseguire i vari componenti e la limitazione delle comunicazioni basate sulla rete (ad esempio, le chiamate API REST) solo a localhost.

Passaggi successivi

Scopri come Device Update utilizza il controllo degli accessi in base al ruolo di Azure