In molte applicazioni la presenza di un bootloader è un grande valore aggiunto, perchè permette di semplificare la produzione e il rapporto con il cliente che può aggiornare un firmware difettoso senza dover far rientrare il prodotto.
Segger ha maturato una grande esperienza nell’ambito dei bootloader e il loro prodotto emLoad è già giunto alla quarta generazione.
Strategie di aggiornamento
emLoad è un bootloader pensato per microcontrollori a 16/32 bit di cui può aggiornare il firmware interno in vari modi:
- attraverso la porta USB DEVICE, utilizzando la classe HID (Human Inteface Device). In questa variante, la scheda target viene connessa via USB al PC sul quale gira un’applicazione di aggiornamento fornita in codice sorgente.
- tramite la porta USB HOST, usando la classe MSD (Mass Storage Device): Lo scenario è quello di aggiornare il firmware inserendo una chiavetta di memoria nella porta USB Host del target.
- tramite la porta UART. Sul PC gira un software che è in grado di effettuare l’aggiornamento aprendo una COM verso il target
emLoad supporta varie strategie di aggiornamento, che possono essere personalizzate: si può per esempio aggiornare il firmware se e solo se quello proposto è una release più recente di quella installata, oppure solo se è maggiore o uguale a quella già installata.
Sicurezza
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 tramite un meccanismo di firma digitale del firmware implementata con algoritmi crittografici asimmetrici: RSA e ECDSA (Curve Ellittiche). All’atto dell’aggiornamento del firmware, la firma digitale generata in fabbrica usando una chiave segreta viene verificata istantaneamente 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.