Modifica: Ho trovato uno schema che si adatta ai miei limiti (poca memoria, solo AES è disponibile): AES-CMAC descritto in RFC 4493 (ricorda solo di usare chiavi diverse per la crittografia e il MAC;).
Sto lavorando su un sistema limitato e incorporato che deve essere aggiornabile sul campo. Voglio proteggere il firmware da copia / reverse engineering e modifica (sarà trasferito su un semplice HTTP).
Le prime parti sono facili: io uso AES-128-CBC. Le chiavi vengono masterizzate nel bootloader. La memoria del microcontroller è bloccata.
La seconda parte è il mio problema. Il mio sistema è troppo limitato per eseguire una verifica della firma "pesante" (ad esempio RSA).
Ho un'idea di distribuire il firmware come AES (firmware + hash (firmware)). Il mio dispositivo prima decodificherà l'intera immagine, calcolerà l'hash della parte decodificata e la confronterà con l'hash originale alla fine).
So che la crittografia da sola non è autenticazione, ma non riesco a immaginare un attaccamento riuscito contro qualcosa di "dentro" AES che alla fine fornirà l'hash (crittografato) giusto.
Domande:
- Il mio schema è sicuro?
- L'hash può essere "debole" e rendere ancora sicuro l'intero schema? (ad esempio MD5? So che è "rotto", ma penso che sia ancora difficile immischiarlo all'interno di un'immagine crittografata).