Diciamo che voglio produrre widget generici (prodotti hardware con un piccolo microcontrollore collegato a un modulo TPM con un bus di comunicazione non sicuro). Al momento della produzione, posso assegnare un segreto specifico del dispositivo a ciascun widget e archiviare quel segreto all'interno del TPM del dispositivo. Questo segreto può quindi vivere all'interno del TPM in modo che non possa mai cambiare e non può mai essere estratto dal TPM.
Dopo che questi widget generici sono nelle mani dei clienti, ho bisogno di avere la possibilità di aggiornare le loro funzionalità software (essenzialmente sbloccando le funzionalità software esistenti). L'idea è che il cliente rinvii il numero di serie del dispositivo che posso quindi utilizzare per cercare nel mio database di produzione il segreto del dispositivo. Quindi, dovrei essere in grado di utilizzare questo segreto per creare in qualche modo un carico utile distribuibile sul campo che è
- valido solo sull'unità con quel segreto (AKA l'unità del cliente)
- Una volta installato nel widget (presumibilmente nel TPM), può essere sicuro applicato ogni volta che il dispositivo si avvia
Quale convalida dei dati? crittografia? schema posso usare per raggiungere questo? Le limitazioni sono che il mio microcontrollore deve avere un firmware generico, quindi non può avere un segreto per dispositivo. Inoltre, non posso permettermi un'implementazione AES completa nel mio microcontrollore.
UPDATE: La CPU che ho può essere pensata come "sicura di avvio", quindi posso fidarmi del suo codice. Per ora, le uniche capacità che conosco nel Microcontroller sono SHA256, MAC, HMAC, accesso a numeri (relativamente) casuali e le ovvie funzioni crittografiche semplici come XOR di un messaggio con una chiave. So che questo è attualmente un set molto limitato e sono aperto ad ampliarlo; Solo non so cos'altro è necessario per soddisfare i miei bisogni.