Proteggere sistema con password o combinazione di tasti

Buongiorno e buona domenica a tutti.

Il quesito non è tanto su come effettuare l'operazione, ma più per sapere se avete qualche idea diversa dalla mia e un dubbio su come gestire la cosa nel ciclo loop.

Vengo al dunque: dovrò lasciare uno o due circuiti con arduino mini pro in 'giro' per raccogliere dei dati. Al momento se questi venissero rubati, chiunque potrebbe poi riutilizzarli.

La cosa ovviamente non mi sta tanto bene ed ho pensato di proteggerne l'uso nel caso di un sistema con LCD inserendo una password prima dell'attivazione di tutto il sistema e nel caso di un mini pro la cui configurazione viene gestita muovendo degli switch su un dip switch 8 pin attraverso una particolare combinazione di questi ultimi.

I sistemi funzionano a batteria quindi (penso) che se prima o poi la batteria si scarica o se l'arduino viene scollegato il sistema richiederà questa 'password' di accesso e diventerà inutilizzabile.

Avete altre idee su come implementare una cosa simile? Se la combinazione/password non è corretta, come mi consigliate di gestire la cosa nel ciclo loop? Dopo n. tentativi c'è magari un modo per 'corrompere' definitivamente il firmware o il funzionamento?

ps. è chiaro che, se chi prende possesso del sistema poi collegherà arduino potrà usarlo, ma almeno, dati per persi i componenti in entrambi i casi, che si debba riscrivere il codice che ci sta sotto o quantomeno che, così com'è, non possa usarlo.

Grazie.

Tutto quel che dici è fattibile.
Si può proteggere l'avvio dello sketch (nel setup, non nel loop) così come si può proteggere la memoria da un tentativo di lettura effettuata in seguito ad un furto, senza ricorrere a stratagemmi particolari ma semplicemente programmando i lock bit nei fuse ed impedendo così l'accesso alla flash.

Per l'avvio io userei un semplice flag registrato in EEPROM (memoria che viene protetta, insieme alla Flash, dai lock bit). In esso metterai il numero di tentativi massimo, ad ogni tentativo sbagliato decrementerai il suo valore. Al raggiungimento del valore 0 basterà richiamare un loop infinito in modo che il programma non esca più dal setup e non avvii la funzione di loop.

EDIT:
http://www.avrfreaks.net/index.php?module=Freaks%20Files&func=viewFile&id=382&showinfo=1
qui trovi un PDF sulla spiegazione dei lock bit.

Nel setup()... mannaggia a me.

Grande Leo, grazie. Mi metto a studiare.

leo, perché nel setup. si puó mettere tutto anche nl loop. Basta che una introduzione giusta del PW mette un flag su 1 e quel flag viene controllato dalle altre funzioni.
Ciao Uwe

Il check della password, dovendo essere eseguito solo una volta, trova la sua collocazione naturale proprio nel setup, che contiene codice che deve essere eseguito solo 1 volta. Inserendolo nel loop sei costretto appunto ad usare un flag aggiuntivo, che nel setup invece non serve.

Anche a me, effettivamente, sembra più naturale il check nel setup().

Non ci avevo sinceramente pensato ed ero partito col flag nel loop, ma trovo che nel setup sia più 'ordinato'.