Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata

Protezione firmware Amega328P-PU (Arduino)

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto Utentexyz, Foto UtenteWALTERmwp

0
voti

[1] Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteFedericoDIP » 18 set 2017, 23:49

Buonasera cari amici.

Ho sviluppato uno sketch che trasferirò in un Atmega320P-PU.
Trattandosi di uno sketch su cui ho lavorato parecchi mesi e che dovrà fare funzionare un mio circuito elettronico a bassa tensione (12 V) che installerò su richiesta nelle centrali di allarme, ho l'esigenza di proteggere il firmware contenuto all'interno del Atmega328P-PU.

La PCB è facilmente clonabile.. ma senza il cuore del Atmega328P-PU (il mio firmware) non è possibile poterlo utilzzare.
Quindi devo proteggere assolutamente il firmware da tentativi di lettura/scrittura da possibili furbi..

Vi dico subito che di "protezione" non ne capisco nulla...
Mi sono documentato un po in rete leggendo qualcosa e ho capito che è possibile proteggere l'Atmega328P-PU agendo sui Fuse Bits e Lock Bit

Qualcuno spiega che è possibile proteggere l'Atmega tramite programmazione ISP con Arduino..
Qualcuno spiega che è possibile proteggere attraverso AVRdude..
Qualcuno spiega che la soluzione migliore è quella di utilizzare AVRdragon


Io per maggiore sicurezza per avere tutte le opzioni di programmazione...ho gia acquistato AVRdragon ma non so utilizzarlo.

Quindi chiedo maggiori delucidazioni sui fuse e sui lock e quale è la tecnica piu veloce e sicura per proteggere l'Atmega328P-PU affinchè sia protetto dalla scrittura ma soprattutto dalla LETTURA.
NOTA: nel caso in cui la protezione applicata faccia cancellare il firmware (in casi di tentativi di clonaggio..), non sarebbe un problema, perché il cliente "furbo" dovrà necessariamente rivolgersi a me per sostituirgli il microcontroller.

Sicuramente voi siete molto preparati in materia e credo di ricevere il giusto aiuto da tutti voi.
Avatar utente
Foto UtenteFedericoDIP
4 4
 
Messaggi: 49
Iscritto il: 18 set 2017, 14:03

4
voti

[2] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto Utentexyz » 19 set 2017, 0:20

Prima di tutto quello che ti serve è chiaramente scritto e spigato nel datasheet del microcontrollore indicato.

Tu programmi il microcontrollore con un bootloader via seriale, con questa via non puoi modificare i fuse del microcontrollore in nessun modo, serve per forza un programmatore ISP attraverso i pin dedicati per questa tipo di programmazione. Una volta collegato il programmatore ISP con un opportuno software (io uso AVRdude) imposti i fuse di protezione (Program And Data Memory Lock Bits) in modo da impedire la lettura della flash via ISP e devi disattivare il booloader (sempre via fuse) altrimenti basta contattare il booloader all'avvivo per leggere il firmware anche se i fuse proteggono il codice dalla lettura via ISP. Disattivare il booloader impedirà la programmazione via seriale con IDE di Arduino.

Aggiungo che la documentazione del software indicato spiega chiaramente come utilizzarlo.
Avatar utente
Foto Utentexyz
3.995 2 4 5
Master EY
Master EY
 
Messaggi: 1088
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin

0
voti

[3] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteFedericoDIP » 19 set 2017, 3:38

Tu programmi il microcontrollore con un bootloader via seriale, con questa via non puoi modificare i fuse del microcontrollore in nessun modo, serve per forza un programmatore ISP attraverso i pin dedicati per questa tipo di programmazione

Si questo lo so gia, che nel momento in cui trasferisco lo sketch nel microcontrollore non si applicano le protezioni.

Qualche dubbio:

■ Caricare il bootloader è essenziale? (leggevo da qualche parte che per avere una massima protezione è consigliabile inserire il firmware, senza che all'interno del microcontrollore da proteggere ci sia il bootloader
■ La procedura passo passo per proteggere l'Atmega328P quale è?
■ Possiedo un AVRdragon che è in grado di programmare anche senza l'uso dell'IDE di Arduino e di sbloccare i microcontrollori in modalità HV. Con AVRdragon quale software devo/posso usare per la protezione dell'Atmega328P? (l'AVRdragon possiede le uscipe ISP
■ Come si disabilita il bootloader?
■ AVRdude è interfacciabile con il mio AVRdragon?
■ Dove trovo la documentazione di AVRdude?
■ Una volta che effettuo delle prove a proteggere il microcontrollore, come faccio ad essere sicuro che la protezione applicata è massima e che non ho fatto errori o dimenticato di attivare qualche FUSE importante?

Scusate le troppe domande, come gia accennato non ho dimestichezza con la protezione del microcontrollore.
Spero di imparare molto qui assieme a voi.
Avatar utente
Foto UtenteFedericoDIP
4 4
 
Messaggi: 49
Iscritto il: 18 set 2017, 14:03

5
voti

[4] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto Utentexyz » 19 set 2017, 17:09

FedericoDIP ha scritto:■ Caricare il bootloader è essenziale?

No ma senza il booloader di Arduino non puoi usare la seriale per programmare il microcontrollore.

FedericoDIP ha scritto:■ Possiedo un AVRdragon ....

Si tratta del programmatore ufficiale del ATmel, puoi usalo per programmare gli ATmega via SPI.

FedericoDIP ha scritto:■ Come si disabilita il bootloader?

Impostando il fuse corrispondente, come spigato nel datasheet del microcontrollore.

FedericoDIP ha scritto:■ AVRdude è interfacciabile con il mio AVRdragon?

Si è tra i programmatori (dragon_isp) sopportati dal software.

FedericoDIP ha scritto:■ Dove trovo la documentazione di AVRdude?

Nei sorgenti (il programma è open source) o nel sito ufficiale:

http://www.nongnu.org/avrdude/user-manual/avrdude.html

FedericoDIP ha scritto:■ Una volta che effettuo delle prove a proteggere il microcontrollore, come faccio ad essere sicuro che la protezione applicata è massima ...

Provi a leggere la flash e eeprom, se ci riesci non hai effettuato in modo corretto la protezione,
Avatar utente
Foto Utentexyz
3.995 2 4 5
Master EY
Master EY
 
Messaggi: 1088
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin

0
voti

[5] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteFedericoDIP » 19 set 2017, 19:38

■ Caricare il bootloader è essenziale?
No ma senza il booloader di Arduino non puoi usare la seriale per programmare il microcontrollore.

Ma leggendo da qualche parte penso di aver capito che utilizzando il programmatore "AVRdragon" si puo programmare direttamente utilizzando AVRstudio per trasferire lo sketch.
Ditemi voi se è fattivile o meno, io non lo so, ho soltanto letto tutto ciò.

■ Una volta che effettuo delle prove per proteggere il microcontrollore, come faccio ad essere sicuro che la protezione applicata è massima ...??
Provi a leggere la flash e eeprom, se ci riesci non hai effettuato in modo corretto la protezione

Puoi indicarmi i passi da fare e cosa utilizzare? Scusatemi ma su questo campo non sono preparato.
Premessa: io utilizzo un Arduino Standalone, quindi utilizzo l'Atmega328P-PU.
Avatar utente
Foto UtenteFedericoDIP
4 4
 
Messaggi: 49
Iscritto il: 18 set 2017, 14:03

1
voti

[6] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto Utentexyz » 19 set 2017, 20:29

Qui trovi i valori dei fuse di praticamente tutti i microcontrollori Atmel, la descrizione di ogni singolo bit è spiegato nel datasheet:

http://www.engbedded.com/fusecalc

una solta selezionato il microcontrollore e i vari bit ti riporta la riga di comando parziale da eseguire con AVRdude.

Io sotto Linux (non uso Windows) la riga di comando è piu o meno questa:

avrdude -c PROGRAMMATORE -p MICROCONTROLLORE -U lfuse:w:LFUSE:m -U hfuse:w:HFUSE:m -U efuse:w:EFUSE:m -U lock:w:LOCK:m

i campi in bold devono essere sostituiti con i valori in tuo possesso, alcuni programmatori vogliono l'opzione porta (-P) e baudrate (-b) (è tutto documentato nel manuale di AVRdude).

Attento se sbagli i valori dei fuse puoi bloccare il microcontrollore e puoi solo recuperarlo con un High Voltage Programming.
Avatar utente
Foto Utentexyz
3.995 2 4 5
Master EY
Master EY
 
Messaggi: 1088
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin

0
voti

[7] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteFedericoDIP » 19 set 2017, 21:56

Amici siete gentilissimi.
Ho un po di confusione perché per me è un mondo completamente nuovo quello della "protezione"..
Non conosco AVRdude e non so da dove scaricare il manuale d'uso.

Prima di addentrarmi sulle righe di comando e sulla parte "pratica" delle protezioni, vorrei prima capire un po di "teroria" sulla modalità di sicurezza/protezione (Bootloader, programmazione ISP, livelli di sicurezza della protezione, Fuse e Lock), cioè:

Se per ottenere la massima protezione è indispensabile non caricare il bootloader
Se posso trasferire il firmware senza il bootloader, con l'utilizzo di AVRdragon
Se invece fosse indispensabile caricare il bootloader, come poterlo "blindare" affinchè non si possa fare la lettura del firmware.
Cosa sono i Fuse e cosa sono i Lock

Poi possiamo passare alla parte pratica e capire meglio su quali fuse agire e i metodi per applicare la protezione
Avatar utente
Foto UtenteFedericoDIP
4 4
 
Messaggi: 49
Iscritto il: 18 set 2017, 14:03

-2
voti

[8] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto Utenteluxinterior » 20 set 2017, 7:32

FedricoDIP va benissimo lo studio per aumentare esperienza e conoscenza
Il mio suggerimento pratico è taglia i pin di programmazione.
Programmi il micro e prima di montarlo tagli i pin che usi per programmarlo (Funziona se non servono pullup/dn esterni e se ovviamente l'applicazione non usa questi pin :mrgreen: ).
Nessuno, te compreso, potrà più accedere al firmware del tuo micro.

Per mia curiosità mi spieghi cosa fa questo micro che richiede questa protezione ?
Conidera che in ogni caso se qualcuno vuole copiarlo deve avere strumenti adeguati e già qui l'insieme dei papabili si restringe, se il prodotto ha funzioni "semplici" uno sta meno a rifarle su altra piattaforma.
Avatar utente
Foto Utenteluxinterior
1.510 1 4 8
Expert EY
Expert EY
 
Messaggi: 740
Iscritto il: 6 gen 2016, 16:48

0
voti

[9] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteIlGuru » 20 set 2017, 9:03

Sicuramente è il core di un satellite spia militare o l'avionica di un missile balistico super segreto
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
3.175 1 7 12
Master
Master
 
Messaggi: 1044
Iscritto il: 31 lug 2015, 22:32

0
voti

[10] Re: Protezione firmware Amega328P-PU (Arduino)

Messaggioda Foto UtenteFedericoDIP » 20 set 2017, 12:02

Programmi il micro e prima di montarlo tagli i pin che usi per programmarlo (Funziona se non servono pullup/dn esterni e se ovviamente l'applicazione non usa questi pin :mrgreen: ).
Nessuno, te compreso, potrà più accedere al firmware del tuo micro.

Ciao luxinterior, non so se ho capito bene o meno.. Tu mi dici di programmare l'Atmega328P e poi al momento di montarlo sulla PCB tagliare i pin che si occupano della lettura/scrittura del firmware?..?...
Ma così facendo..chiunque potrebbe estarre l'Atmega328P dallo zoccolo, inserirlo in un Arduino Uno, leggere il contenuto.. e la frittata e fatta.

Vi spiego molto brevemente cosa fa la PCB con l'Atmega328P.
La PCB è collegata ad una centrale di allarme tramite segnali digitali e analogici (sensori e altri dispositivi), e trasmette/riceve dati da un notebook tramite porta USB 24h/24h.

Quindo a me occorre una protezione a livello software, non hardware...
Avatar utente
Foto UtenteFedericoDIP
4 4
 
Messaggi: 49
Iscritto il: 18 set 2017, 14:03

Prossimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite