In molte applicazioni la presenza di un bootloader è un grande valore aggiunto, perchè permette di semplificare l’aggiornamento di un sistema embedded, offrendo molte più opzioni ed evitando l’intervento di un tecnico sul campo. Segger ha maturato una grande esperienza nell’ambito dei bootloader e il loro prodotto emLoad è ormai giunto alla quarta generazione.
Strategie di aggiornamento di emLoad
emLoad può aggiornare il firmware attraverso varie strategie:
- via USB DEVICE, utilizzando la classe HID (Human Interface Device). Per effettuare l’aggiornamento, la scheda target viene connessa via USB al PC sul quale gira un’apposita applicazione fornita in codice sorgente (per Windows e Linux).
- Via USB HOST, usando la classe MSD (Mass Storage Device): in questo scenario l’aggiornamento del firmware avviene inserendo una chiavetta di memoria nella porta USB Host del target cui deve seguire il reset della scheda.
- Via UART. Sul PC gira un software che è in grado di effettuare l’aggiornamento aprendo una COM verso il target.
- Via NFC (NTAG).
emLoad supporta inoltre vari criteri di aggiornamento, personalizzabili: si può per esempio consentire l’aggiornamento del firmware se e solo se quello proposto è più recente di quello già installato.
Cyber Security
emLoad incrementa la sicurezza risolvendo due problemi:
Come bloccare i tentativi di manomissione del firmware (alterazione del firmware e/o sostituzione con un firmware alternativo non genuino).
Questo risultato viene raggiunto introducendo la firma digitale del firmware (RSA, ECDSA). La firma digitale generata tramite una chiave privata viene verificata tramite la chiave pubblica presente all’interno della memoria protetta del target.
Come distribuire gli aggiornamenti firmware attraverso un canale non sicuro eliminando i rischi di copie illegali e di reverse-engineering?
emLoad risolve questo problema con l’add-on facoltativo che introduce la crittografia simmetrica dell’immagine del firmware. L’immagine del firmware viene decifrata solamente all’interno del microcontrollore durante le operazioni di aggiornamento.