cancellare flash arduino da sketch

ciao a tutti.

Sto realizzando per una azienda un progetto.

Quello che mi e stato chiesto un sistema anti manomissione dello stesso.

ovvero non vogliono che qualcuno apra la scatola in cui e contenuto il progetto e possa estrarre il file ne copiare la parte elettronica.

il primo pensiero era quello di avere un semplice contatto on/off sulla scatola sfruttando la eeprom interna il quale al caricamento dello sketch originale scrive un valore predefinito.

nella parte loop verrebbe letto il pin che deve avere un valore sempre LOW/0v.
Quanto la scatola viene aperta l'interruttore fa passare i 5v ponendo questo valore in HIGH

Passando ad uno stato logico 1/high questo cambia il valore sulla e2p cancellandolo e portando impostando tutte le altre porte in stato logico 0 in modo che tutto si blocchi!.

Questo però ha un bug!.....se io faccio il reset questo valore viene riscritto!
Questo e efficace per un elettricista...ma per chi conosce bene l'elettronica non ci mette molto a comprenderne il funzionamento.

ora ho pensato invece ad una cosa più radicale!.......

impartire un comando, se realizzabile di auto flash, riscrivere completamente lo sketch vuoto!......in questo modo non avendo nulla di programmato l'avr non potrà eseguire alcuna funzione.

quindi mi chiedo se esiste un modo oppure un comando o una serie di comandi per far si che questo cancelli tutto riscrivendo
sopra solo valori FF.....

Sarebbe anche sufficiente cancellare il boot loader.....niente boot niente esecuzione del codice ma prima o poi qualcuno si può accorgere di questo e la riscrittura del boot lo farebbe ripartire.

Mi farebbe piacere sapere se qualcuno di voi più esperto mi può dare una idea oppure se possibile quanto detto.
grazie a tutti.

quando aprono la scatola mandi 12v all'atmega e lo fulmini... credo che così il software sia al sicuro... :wink:
ma per la parte hardware come fai a prevenire la copia?

... e, a tutto quanto quello detto da docsavage (su cui concordo al 110%), aggiungo ... visto che devi fare un progetto beh ... studiati il datasheet, ci sono degli appositi FUSE per proibire la lettura/copiatura del codice una volta programmato !!!

Guglielmo

... oh, in generale, tanto per farvi capire quanto sia sciocco sperare veramente di proteggere qualsiasi cosa ... ecco QUI chi di mestiere vende il servizio di "clonare" qualsiasi cosa, interno dei chip e lora programmazione compreso ... quindi, se il gioco vale la candela ... "lasciate ogni speranza" ... :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Guglielmo

sperando di non andare troppo OT...

docsavage:
a parte che arduino non è adatto a lavori da "lavoro", e questo viene detto in tutte le salse

a parte che la cosa è contraria al principio dell'open source

gpb01:
... e, a tutto quanto quello detto da docsavage (su cui concordo al 110%),

premesso che non sono assolutamente un esperto, mi permetto di dissentire...

l'uso di arduino come scheda già pronta non è adatto agli ambiti professionali, ma l'atmega in versione standalone credo non presenti problemi, con i dovuti accorgimenti...

poi che la cosa sia contraria al principio dell'open source... se ne può discutere, ma mi sembra di aver letto che non è obbligatorio rilasciare sempre i sorgenti in versione open source...

o sbaglio?

... mi viene in mente solo un sistema che in teoria potrebbe essere utilizzabile, ma comunque molto rischioso (anzi, in effetti, due sistemi)

Primo sistema, lo sketch, o comunque la sua parte principale, risiede su una ram a bassissimo consumo, mantenuta sempre alimentata da una batteria interna, ricaricata ogni volta che si collega l'apparecchio all'alimentazione, e l'alimentazione della ram e' interrotta quando si apre il coperchio, il che ne causa ovviamente la cancellazione ... possibili problemi, se scarica troppo la batteria per prolungato inutilizzo, oppure si danneggia il sistema di interruzione, ad esempio ...

Secondo sistema, la batteria interna viene collegata alla MCU con polarita' invertita quando il coperchio viene rimosso ... stessi possibili problemi, in fondo ...

Quello dei fuse piu resina che ti hanno suggerito mi sa che e' il sistema migliore ... se poi alla resina mescoli materiale abrasivo (granuli in ceramica o vetro, ad esempio) anche i tentativi di rimuoverla rovinerebbero gli utensili rendendo la cosa piu costosa (vero che ci sono solventi speciali anche per le resine bicomponenti, ma non sono economici) ...

fratt:
... l'uso di arduino come scheda già pronta non è adatto agli ambiti professionali, ma l'atmega in versione standalone credo non presenti problemi, con i dovuti accorgimenti...

Certo, facendo un prodotto secondo le "norme", effettuando tutte le "certificazioni" necessarie per la messa in commercio e per l'adeguamento a tutte le norme vigenti ... puoi ovviamente sviluppare un tuo prodotto, come, del resto, puoi farlo con qualsiasi componente elettronico ... ::slight_smile:

fratt:
poi che la cosa sia contraria al principio dell'open source... se ne può discutere, ma mi sembra di aver letto che non è obbligatorio rilasciare sempre i sorgenti in versione open source...

NON mi pare che docsavage gli abbia detto che DEVE rilasciare i sorgenti ... ha solo espresso la sua opinione nei confronti di un prodotto "chiuso" ...

Del resto, ad esempio (... e sia preso come tale), qualcuno potrebbe benissimo pensare : "questo è il forum di Arduino e io aiuto chi sviluppa in opensource, se vuoi fare un prodtto chiuso e commerciale, ti paghi un consulente e ti fai aiutare dal lui, non sfrutti gratis noi" ...

Guglielmo

docsavage:
...
Tutto si può fare, ma deve valere la spesa

Be', a quel punto, basta piazzare nella resina, intorno al circuito, qualche tasca piatta in vetro filato piena di fosforo bianco in atmosfera di argon, e chiunque cerca di accederci fisicamente ne causa la completa distruzione, perche' come il vetro si crepa e l'ossigeno entra, il tutto prende fuoco in pochi secondi ... costera' una follia, ma se vale la spesa ... :wink:

(anche se francamente non riesco ad immaginare COSA potrebbe valere una simile spesa ... :D)

Etemenanki:
Be', a quel punto, basta piazzare nella resina, intorno al circuito, qualche tasca piatta in vetro filato piena di fosforo bianco in atmosfera di argon

:o

e poi quando uno chiede come accendere una lampadina gli diciamo "aaahhh è troppo pericoloso"

:grin: :grinning:

I fuse bastano e avanzano, a parte che in questi casi, secondo me, chi è capace di craccarlo è anche capace, probabilmente con minore sforzo, di scriversi un programma che faccia le stesse cose.

Il discorso "standalone" è sempre stato un po' borderline qui, così come il discorso sui lock bit, per i motivi molto efficacemente spiegati da Guglielmo.

anche con la sabbiatrice va via la resina :slight_smile:

dipende dalla quantita di pezzi da vendere e la eventuale "appetibilita" del mercato "craccato"

buonasera....intanto ringrazio tutti....anche chi la presa con meno serietà.

inizio col dire che il progetto è stato sviluppato su banco prima con arduino per una questione di praticità e comodità.

dopo un prototipo NON ARDUINO e apportate le dovute correzioni e tarature necessarie ho sviluppato quanto serviva svilòpuppato il progetto finito tutto in smd.

il progetto non ha seriale ne comunicazione usb se non con collegamenti appositi.

il progetto e esclusivo per l'azienda che me lo ha incaricato e non sono stupido, ho fatto firmare 4 pagine di liberatoria appunto per ovviare tutti i problemi descritti.

Ce un legale di mezzo....non preoccupatevi è stato fatto tutto nel modo corretto, niente alla carlona.

ho una azienda non sono così scemo da correre rischi simili.....diversamente avrei rifiutato anche se il compenso è stato più che valido.

Quindi non si parla di progetto open source ma visto che lo sviluppo allo stato iniziale è stato fatto con arduino e poi sviluppato con altro atmega ho ritenuto opportuno chiedere un consulto qui.

Quindi manomissioni, interventi o aperture involontarie non devono esistere e ne posso mettere in interruttore che cuoce tutto....ne tanto meno la resina che e facilmente, con il prodotto apposito, removibile.

qui si parla più che altro di sicurezza interna aziendale che purtroppo non posso scendere in dettagli.

Il discorso della ram non e valido ma ringrazio perchè se appunto la batt si scarica siamo punto e a capo.

Se invece lo apri.....e quando vai a copiare il chip te lo trovi vuoto e un'altro discorso!.

il fuse funziona fino ad un certo punto ma non e inviolabile.......

pochi giorni fa ho consegnato al suo proprietario un una cassa amplificata con 2 atmega 8 per il controllo digitale al suo interno con fuse attivi.

con un programmatore apposito ho copiato eeprom interna e flash senza alcuno sforzo......

Se invece hai la flash vuota ce poco da copiare.

Se lo avessi collegato ad un pc il problema non si pone....anche se le falle ci sono comunque prima di capire cosa e successo tramite avrdue fai un upload vuoto e i gioco e fatto....ma qui non ce alcuna connessione.....

Quindi.....vorrei capire se esiste un modo per uplodare uno sketh vuoto.... se non e possibile vi ringrazio e cerco una soluzione alternativa magari senza cuocere il chip!.....

PersonalProject:
il fuse funziona fino ad un certo punto ma non e inviolabile.......
pochi giorni fa ho consegnato al suo proprietario un una cassa amplificata con 2 atmega 8 per il controllo digitale al suo interno con fuse attivi.

... nel tuo caso, tu stai parlando di ATmega328P e NON di ATMega8 !

C'era (parliamo del 2004) un noto bug che colpiva : ATMega8, ATMega8515, ATMega8535, ATMega16, ATMega128, ATtiny12, ATtiny15 e ATtiny26, bug che veniva sfruttato anche da alcune aziende per vendere il servizio di "copiatura" ...

... ma ripeto, parliamo del 2004 e parliamo du una serie specifica di chip ... col cavolo che gli attuali ATmega328P li leggi una volta bloccati bene con i FUSE :smiling_imp:

Guglielmo

Non ti offendere se ci scherziamo su un po, qui e' normale :wink:

Parlando invece seriamente, purtroppo a parte le possibilita' che ti ho menzionato prima (escluso il fosforo, che anche se efficace, e' pericoloso), l'unico sistema per evitare la copiatura in modo "quasi totalmente" sicuro, e' quello del programma residente su ram, a cui viene cancellato il contenuto quando si manomette l'apparecchio (ad esempio, e' sufficente fare in modo che una delle viti che tiene il coperchio porti la massa alla ram, come la togli per aprire l'apparecchio, addio contenuto del chip ... fra l'altro e' un sistema gia usato in alcuni apparati, le viti del coperchio metallico sono fissate a delle colonnine saldate sullo stampato e chiudono un circuito)

Dico pero' "quasi totalmente" sicuro, proprio perche', se come ha detto docsavage "vale la spesa", anche un sistema del genere e' bypassabile ... potrei, ad esempio, usare uno di quei tunnel per l'ispezione doganale o radiografica dei bagagli per ricavare immagini dell'interno dell'oggetto, seguire le piste fino a vedere che c'e' la protezione, e tagliare il coperchio o aprire il tutto in modo da non togliere alimentazione alla ram ... costerebbe soldi, ma sarebbe comunque possibile ...

Allo stesso modo, anche i fuse, per quanto siano abbastanza sicuri, proteggono il chip da letture effettuate via pins, ma se il contenuto del chip ha un valore abbastanza elevato da giustificare la spesa, lo mando ad una ditta specializzata in recupero dati e firmware (ad esempio quella menzionata da Guglielmo), che con un po di acido nitrico fumante riscaldato tira via la resina del chip, e poi con una macchina per il test dei chip si collega direttamente alla matrice di celle della flash e la legge come vuole, senza passare dal controller, per cui i fuse non glie lo possono impedire ... ovviamente, dati i costi, il contenuto deve avere un valore proporzionato alla spesa per recuperarlo, quindi nel 99.999% dei casi nessuno lo fa ... e' solo per dire che non c'e' modo di avere una cosa "sicura" al 100%, in modo assoluto ...

paulus1969:
:o

e poi quando uno chiede come accendere una lampadina gli diciamo "aaahhh è troppo pericoloso"

:grin: :grinning:
...

Be', che c'entra ? ... io mica gli ho detto come estrarre il fosforo bianco dalla roba che comperi al supermercato ... informazioni pericolose non glie ne ho date ... :smiley:

Etemenanki:
... ovviamente, dati i costi, il contenuto deve avere un valore proporzionato alla spesa per recuperarlo, quindi nel 99.999% dei casi nessuno lo fa ... e' solo per dire che non c'e' modo di avere una cosa "sicura" al 100%, in modo assoluto ...

NON è esatto Etem ...
... non è così caro, solo "il gioco deve valere la candela" e ... si fa, si fa ... e lo facevano in Italia già nel lontano 1977 per clonare le prime macchinette dei videogiochi che arrivavano dall'estero (... t'assicuro... so di che parlo ... gli vendevo i chip vergini da riprogrammare ... e parliamo già dei primi microprocessori :smiley:) ...

Guglielmo

Si si, su questo sono daccordo ... era solo per dire che, se appunto "il gioco vale la candela", anche i sistemi piu "sicuri", li aprono comunque ...

Mi viene in mente una battuta di un'hacker di alcuni anni fa ... "l'unico sistema assolutamente sicuro e' quello saldato in una cassaforte d'acciaio, sepolto sotto una tonnellata di cemento, in fondo ad una miniera di carbone, sorvegliata da un paio di divisioni di corpi speciali ... ma solo se e' spento" ... :smiley:

a parte gli scherzi , costruire un dispositivo inviolabile dal punto di vista informatico (non ho le competenze) ma credo che sia impossibile ,

dal punto di vista meccanico , bhe , basta comprarne due , il primo lo sventri , il secondo avendo l autopsia del primo puoi aprirlo senza andare dal radiologo ,

si potrebbe proteggerlo solo con una custodia veramente "cattiva" tipo incollata , ma poi se ritorna in garanzia ? si deve prevedere la sostituzione ?

il discorso sulla protezione industriale è complicato , brevetti etc.. potrebbero servire , ma se è un dispositivo di largo impiego , ci mettono poco i cinesi , anche senza avere tra le mani l aggeggio a "copiarti" l idea ,,,,

quindi .

PersonalProject:
Quindi non si parla di progetto open source ma visto che lo sviluppo allo stato iniziale è stato fatto con arduino e poi sviluppato con altro atmega ho ritenuto opportuno chiedere un consulto qui.

Stai chiedendo consulenza per un prodotto commerciale, closed source, non è lo scopo di questo forum, nessuno ti aiuterà a gratis.
Vuoi la consulenza professionale ? Benissimo paga un professionista, così produci lavoro, reddito e tasse da pagare, cosa che fa molto felice il fisco. :slight_smile:

Se invece lo apri.....e quando vai a copiare il chip te lo trovi vuoto e un'altro discorso!.

Con gli AVR sarebbe anche fattibile, però come farlo o paghi un professionista esperto con gli AVR, oppure ti studi per bene il datasheet e le AN.
Valuta tu se ti conviene di più dedicare qualche giorno, ma anche qualche settimana a seconda del tuo livello tecnico, oppure pagare qualche centinaio di Euro a un professionista che ti risolve il problema.

il fuse funziona fino ad un certo punto ma non e inviolabile.......

Sono inviolabili per chiunque non dispone delle necessarie attrezzature, parliamo di un laboratorio che ha un valore di oltre 300.000 Euro, oppure sei disposto a pagare non meno di 20.000$, questa è la tariffa minima, per far ripristinare i fuse ad un service che offre questo servizio.
Non ultimo il fatto che anche ripristinando i fuse alla fine ottieni solo un dump della flash, buono per programmare un altro AVR, assolutamente inutile se è necessario fare delle modifiche al codice, a meno che il programmatore non sia uno dei pochi in grado di lavorare direttamente in codice macchina, ti posso garantire che siamo rimasti in pochissimi. :slight_smile:
Parlando di piccole mcu 8 bit sicuramente costa meno chiedere ad un professionista di riscrivere il codice, magari con delle migliorie, che spendere decine di Migliaia di Euro per ottenere solo un dump della flash.

buon pomeriggio.
intanto ringrazio tutti.

nessuna offesa, ho pensato di condividere questo problema con il forum perchè poteva essere interessante per altri utilizzi ma come al solito mi ritrovo a sentirmi dire di pagare qualcuno per avere la soluzione dove sotto sotto mi viene detto che il sistema esiste.

io faccio questo lavoro da 20anni....non mi sono mai tenuto un segreto tra colleghi anche se diversi lo fanno ma a me non importa.

questo e uno di quei casi dove il concetto di comunità va a farsi benedire.

comprendo che il progetto non e open source ma lo scopo ultimo oltre che capire compe poter ottenere una funzione simile e che ripeto, poteva essere utile per altri scopi.

per quanto riguarda le protezioni, posso menzionare uno dei chip ARM come LPC serie 24 che vanta la protezione con un livello CRP3 cancellabile e scrivibile solo con un procollo IAP, sempre che in compilazione sia stato scritto il driver per accedervi.

Ma appunto come qualcuno di voi scrive basta "aprire" il chip per accedere alla flash e levarne il contenuto scavalcando il controller.

in tutti i sistemi informatici ed elettronici ci sono delle falle e debolezze e tutto quello che si può fare e mascherare al meglio queste falle.

un amico che sento spesso mi ha sempre detto" un computer sicuro e un computer spento, possibilmente con la spina staccata".
ed e vero.

ora mi sento dire che devo pagare qualcuno per realizzare una routine con 4 righe di codice!.....

non lo trovo corretto......

in ogni caso dopo una nottata e qualche tonnellata di caffè ho trovato quello che cercavo.

una routine con 4 righe di codice provvede non a cancellare il contenuto ma a scriverci sopra con AA e 00.

Nessun boot....levato anche quello......

le righe di codice??.....le lascio a voi esperti.....pagate qualcuno per farlo!....magari me.

Ringrazio tutti per i consigli anche quelli che si voglio pagati!.

scusa devo essere rimasto molto indietro in forum.....non sapevo che adesso bisognava pagare per avere informazioni.....deve essere proprio cambiato il concetto di forum.

Devo iniziare a farmi pagare 2 spiccioli ogni volta che mi chiedono qualcosa allora.