Protezione del firmware su controller AVR e PIC


23

Qualcuno può estrarre il file HEX che masterizzo in un microcontrollore che fornisco loro?

Se ciò è possibile, come si può garantire che il proprio codice sia protetto nei sistemi integrati? Nel caso di microcontrollori PIC e AVR, come si può proteggere il proprio firmware dalla riproduzione?



1
Nel caso n. 1 sembra suggerire di fornire il file esadecimale ai client, in tal caso possono semplicemente scriverlo su più dispositivi clone, senza che sia necessario decompilare il codice, sebbene sia possibile. Nel caso di un dispositivo bloccato (n. 2), di solito dipende da quanto sono determinati a ottenere il codice (in altre parole quanto sono disposti a spendere) ma di solito è possibile.
alexan_e

1
era un tempo di due anni, ma la protezione in questi giorni tende a essere sconfitta in media in uno o due giorni per i dispositivi più diffusi. praticamente una volta che qualcuno ha deciso che vale la pena farlo. Se vuoi davvero la sicurezza devi entrare nel business dei chip, non ne avrai nessuno con le parti commerciali standard.
old_timer

Risposte:


33

La maggior parte dei microcontrollori in questi giorni hanno metodi specifici di parte o del produttore per proteggere il codice firmware incorporato. Ciò avviene generalmente bloccando i circuiti che normalmente consentono di leggere la memoria del codice. (È necessario cercare i dettagli specifici delle parti nella scheda tecnica o nel sito Web del produttore nelle note applicative applicabili).

Una volta bloccato, non è possibile leggere la memoria del codice usando le normali tecniche. Ciò fornisce un livello ragionevole di protezione per impedire a molti hacker di visualizzare il codice macchina per l'applicazione incorporata.

Al giorno d'oggi molti dispositivi MCU dispongono di memoria FLASH integrata per memorizzare il codice del programma. Un programma precedentemente memorizzato e protetto memorizzato in FLASH può di solito essere sostituito con un nuovo codice, ma per sbloccare il meccanismo di protezione è necessaria un'operazione di cancellazione FLASH a chip completo. Una volta cancellata, la parte funzionerà come prima del blocco di protezione originale. Se viene caricato un nuovo programma, è generalmente possibile bloccare nuovamente la parte per proteggere il codice macchina appena caricato.

Qualsiasi discussione sulla protezione del codice nei microcontrollori non sarebbe completa senza menzionare che di solito non vi è alcuna garanzia che qualsiasi schema di protezione offerto dal produttore della parte sia infallibile. I produttori dichiareranno persino che i sistemi di protezione non sono sicuri al 100%. Uno dei motivi di ciò è che esiste un'intera industria del mercato nero in cui, a pagamento, gli hacker diligenti leggeranno il codice da una parte protetta per chiunque voglia pagare. Hanno ideato vari schemi che consentono di leggere il codice dalle ROM o FLASH su microcontroller protetti. Alcuni di questi schemi sono incredibilmente intelligenti ma lavorano per un successo migliore su alcune famiglie parziali rispetto ad altre. Quindi fai attenzione a questo fatto, quindi prova a proteggere il tuo programma da occhi indiscreti.

Una volta che qualcuno ha messo le mani sull'immagine binaria del codice macchina che è stato letto da un microcontrollore, che fosse un microcontrollore protetto o meno, può elaborare il codice macchina attraverso uno strumento chiamato disassemblatore. Ciò trasformerà nuovamente i dati binari in codice linguaggio assembly che può essere studiato per provare a imparare come funzionano gli algoritmi del programma. Lo smontaggio accurato del codice macchina è un lavoro scrupoloso che può richiedere enormi quantità di lavoro. Alla fine il processo può portare al codice assembler come ho descritto. Se il programma è stato scritto in un linguaggio di alto livello come C, C ++ o Basic, il codice assembly rappresenterà solo il risultato compilato e collegato del programma. In genere non è possibile decodificare il codice rubato fino al livello linguistico di alto livello.

Ciò significa che esiste effettivamente un vantaggio nella scrittura del firmware dell'applicazione incorporata in un linguaggio di alto livello. Fornisce un altro livello che rende più difficile la progettazione completamente inversa del programma. Un vantaggio ancora maggiore deve essere ottenuto utilizzando il più alto stato dell'arte nell'ottimizzazione dei compilatori per compilare l'applicazione incorporata perché gli ottimizzatori delle prestazioni più elevate possono letteralmente trasformare il programma in un enorme contenitore di spaghetti pieno di dozzine di chiamate in brevi subroutine che sono molto difficili decifrare in un disassemblatore.

Gli sviluppatori embedded più esperti ti diranno di andare avanti e utilizzare qualsiasi schema di protezione offerto sull'MCU nella tua applicazione .... ma di non dipendere da esso fino alla fine della strada per il tuo prodotto. Ti diranno che il modo migliore per stare al passo con la concorrenza è aggiornare costantemente il tuo prodotto in modo che le vecchie versioni siano obsolete e poco interessanti dal momento in cui gli hacker potrebbero aver clonato il tuo codice. Cambia il codice, aggiungi nuove funzionalità, fai girare di tanto in tanto le schede del tuo PC per scambiare tutti i tuoi I / O e qualsiasi altra cosa ti venga in mente. In questo modo puoi vincere la gara ogni volta.


Grazie mille @Michael Karas Questa è stata una risposta completa
Rookie91

12

Penso che la risposta di Michael sia sufficiente per questa domanda, ma aggiungo entrambi i link: Hacking del PIC 18F1320 e Tutto quello che fanno, possiamo rompere! Entrambi sono stati molto interessanti per me.


L'EE diligente dovrebbe studiare l'ultimo collegamento e cercare / confrontare / selezionare i dispositivi che mancano dall'elenco. La complessità è sempre più dissuasiva, come l'aggiunta di un DS3641 o ATSHA204 . Sebbene nessuna sicurezza aggiuntiva sarà mai infrangibile al 100%, la complessità aggiunta potrebbe renderla non utile.
rdtsc,
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.