Sono uno sviluppatore di software che lavora con dispositivi hardware distribuiti sul campo. Ogni tanto, dovrei aggiornare il firmware dell'hardware (aggiornamenti, patch, ecc.)
Sto pensando ora, implementando un canale sicuro per aggiornare questo firmware, e per alcuni controlli che devono essere eseguiti dall'hardware prima di accettare questo firmware.
Ho una conoscenza di base sui principali protocolli di scambio, crittografia crittografica, ecc, e questo è tutto. Non so come applicarli nel mondo reale, quindi speravo di poter ottenere un aiuto qui.
L'aggiornamento del firmware verrebbe eseguito tramite un software personalizzato che viene eseguito sul PC scritto da me, su TCP / IP.
I miei obiettivi principali sono
- impedisce che il firmware venga divulgato al pubblico in quanto contiene il nostro IP.
- impedisce all'hardware di eseguire altri firmware diversi dal firmware rilasciato da me.
Quello che so, ad un alto livello di vista è
- Per crittografare (con una chiave segreta condivisa predefinita) il firmware sul software per PC e inviarlo oltre il firmware.
- Una volta che il firmware riceve questi dati crittografati, lo decrittografa con la chiave segreta condivisa predefinita ed esegue l'aggiornamento
Le mie domande sono:
- La definizione di una chiave segreta condivisa è sicura in questo aspetto?
- Esiste una soluzione "pane n burro" per raggiungere i miei requisiti?