Protezione del codice su un AVR / Arduino e consegna degli aggiornamenti


9
  1. Qual è il modo migliore per proteggere il codice flashizzato su qualsiasi dispositivo basato su AVR dall'ingegneria inversa?
  2. Qual è un modo semplice per fornire aggiornamenti agli utenti finali affinché eseguano il flash da soli senza rivelare il codice? (È con un bootloader che decodifica un'immagine crittografata?)

Non darmi fuoco per la promozione del DRM, sono a favore di piattaforme aperte - sono solo curioso di sapere come funzionerebbe.


Non farlo. Non vi è alcun modo per impedire del tutto la possibilità a una persona malintenzionata di decodificare il proprio hardware / software. Tutto ciò che fanno le misure anti-RE è di impiegare più tempo per invertire.
Connor Wolf,

Risposte:


9

Primo:

Ci sono dei fusibili sul chip che possono essere impostati per impedire agli strumenti esterni di leggere il codice dal chip. Cerca i fusibili di protezione nella scheda tecnica e / o nella documentazione del programmatore.

Non è perfetto, ma ti protegge da semplici attacchi.

Secondo:

Non è possibile scaricare il firmware in modo sicuro. L'AVR non può programmare automaticamente le aree protette:

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

Il meglio che potresti essere in grado di fare è utilizzare un linguaggio token crittografato (come base o successivo) e avere l'interprete protetto sul chip con un bootloader in grado di programmare i token crittografati in un'area aperta. Durante l'esecuzione, il chip decifrava ed eseguiva le istruzioni al volo.


3
Se i fusibili non sono perfetti, che tipo di attact può bypassarlo?

1
@Anonimo: rimuovere chimicamente il coperchio del chip e utilizzare microscopi elettronici, laser e microprob per visualizzare, interfacciarsi e modificare il silicio. Costa almeno $ 500, ma può essere più economico di qualsiasi stbra di lavoro stia inserendo nel dispositivo.
Kevin Vermeer,

@KevinVermeer Intendi $ 500? Mi sembra che sarebbe molto più costoso di così.
NickHalden,

Adam, c'è stato un errore, quindi ho eliminato il mio commento
hulkingtickets,

3

Se è così importante e sei particolarmente preoccupato per i concorrenti che rubano il tuo codice, elimina la protezione IP sui tuoi segmenti di codice. Dovresti esaminarlo se provi comunque a fare soldi con un progetto.

Alcuni elementi del codice possono essere brevettati (per metodi di elaborazione specifici e nuovi algoritmi) o registrati come progetti industriali (aspetto, layout e applicazione del codice su un dispositivo). Si consiglia di consultare un avvocato di proprietà intellettuale su questo.


1

Se hai scritto il tuo bootloader che ha accettato i dati crittografati sulla porta seriale, li ha decifrati e archiviati nell'area di archiviazione del codice, potresti avere un aggiornamento sicuro del firmware del codice. Ogni dispositivo potrebbe persino avere una propria chiave di decrittazione unica nel tuo bootloader personalizzato.


1
Penso che ciò che dice @Adam Davis sia che se usi un bootloader (anche uno che hai scritto) non puoi programmare aree protette con bit di blocco. Quindi, se hai scritto il tuo bootloader crittografato, non potresti impedire la lettura del chip (problema 1). Questo sembra essere quello che ottengo dal link e dalla scheda tecnica, comunque.
Lou

se il bootloader e il codice sono crittografati risolverebbe il secondo problema, il primo problema è quasi risolto se usa una crittografia abbastanza sicura. (la velocità di uC può essere un collo di bottiglia).
Rick_2047,

Vero. @Adam Davis ha suggerito una lingua token crittografata sopra.
Lou
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.