Arduino, domotica e autenticazione

Ciao a tutti, sto iniziando a fare dei test per la domotica ma mi sono reso conto che ce bisogno di qualche sicurezza, ho cercato un po ma non ho trovato nulla di interessante. Ce qualcuno che è già passato da questo problema e ha trovato un ottima soluzione?

grazie in anticipo :)

camba192

Di che sicurezza parli? Sicurezza nel senso dispositivo antimanomissione - accesso indesiderato oppure sicurezza nel senso che tutto funzioni alla perfezione senza inceppamenti vari? Spiega un pò meglio che hai intenzione di fare, ad esempio se usi qualche shield (ethernet? zigbee? etc), così è difficile darti consigli se non si sa cosa vorresti realizzare. Saluti

Credo che parli di un autenticazione... Quindi username e password per poter accedere ai comandi della gestione...

Guarda questo.. forse ti può essere utile http://www.kithouse.it/index.php?option=com_content&view=article&id=18&Itemid=29

se vuoi usare qualcosa di tosto dai anche un'occhiata anche a cryptolib ;) http://www.das-labor.org/wiki/AVR-Crypto-Lib/en

si scusate ho spiegato poco :D comunque uso un ethernet shield e parlavo appunto di un autenticazione tramite usarname e password come ha detto @dr4gone. ci lavorerò un po su quel link e vedo che ne esce :)

camba192

Nel caso di un'unità remota a cui collegarsi devi usare per forza un sistema di cifratura a chiavi asimmetriche, o a chiave pubblica perché il classico modo con chiave simmetrica non va bene dato che la stessa chiave serve sia per la cifratura che per la decifratura. Quindi guarda avrcrypto-lib ed utilizza l'algoritmo RSA, che prevede appunto una chiave privata per il server ed una chiave pubblica che verrà usata dai client che si vogliono collegare.

La "forza" del sistema a chiave pubblica sta nel fatto che questa può essere liberamente distribuita perché serve solo per cifrare i dati da spedire al server, che sarà l'unico a poterli decifrare usando la chiave privata in suo possesso.

Potresti anche fare un sistema di autenticazione con timestamp, ossia il client interroga il server chiedendo la chiave. Il server genera una coppia di chiavi pubblica/privata ed invia la pubblica al client unitamente ad un timestamp. Il client spedirà i dati cifrati allegando il timestamp. Il server controllerà il timestamp: se sarà scaduto, rifiuterà il pacchetto dati, altrimenti li decifrerà. Il timestamp non è nient'altro che un pacchetto dati elaborato a partire dall'ora e data sul server. La validità la dai tu: "scaduto" il timestamp generato, cancelli sia il timestamp che la chiave privata relativa. In questo modo eviti che un hacker, recuperata la chiave pubblica ed il tuo timestamp, possa usarli in un secondo momento per tentare di accedere al server. Essendo scaduto il timestamp, il server rifiuterà la connessione.

Te lo dimostro io: si chiama "giocare" :D

Ossia con Arduino noi comuni utenti mortali che usiamo questa schedina per divertimento e non per lavoro la sera sogniamo che all'interno della prossima sonda lanciata dalla NASA ci sia un Arduino con il nostro circuitino disegnato con Eagle Freeware limitato a 10x8cm di PCB :) Sogniamo che con le nostre tecniche di sensori ambientali riusciamo a prevedere i terremoti e la caduta dei fulmini nel raggio di 10 Km.

Stiamo proponendo soluzioni così, a briglia sciolta. Vuoi toglierci anche il gusto di sognare? :D :D

PS: sei per caso toscano/fiorentino? Perché "bischerate" si dice dalle mie parti :D ;)

Beh, ognuno risolve la questione come preferisce. Ch'è chi preferisce usare strumenti già pronti, altri potrebbero decidere di riscriversi l'intero protocollo di comunicazione. D'altronde per accendere un led puoi usarlo direttamente collegato al pin dell'Arduino oppure mettere un transistor che comanda un relè che a sua volta comanda un interruttore che fa accendere un altro Arduino che accende un led :D

leo72:
Beh, ognuno risolve la questione come preferisce.
Ch’è chi preferisce usare strumenti già pronti, altri potrebbero decidere di riscriversi l’intero protocollo di comunicazione. D’altronde per accendere un led puoi usarlo direttamente collegato al pin dell’Arduino oppure mettere un transistor che comanda un relè che a sua volta comanda un interruttore che fa accendere un altro Arduino che accende un led :smiley:

Leo, per carità non scordarti la resistenza in serie tra il primo o il secondo Arduino ed il led, vuoi far scoppiare un caso da prima pagina?

@menniti: basta andare OT XD

ad ogni modo flameman cerca sempre cose complesse, arduino è un microcontrollore che alla fine è un giocattolo, se vuoi programmare a livelli di C ottimizzato al 100% all'assembly con processori a 64bit che reggano protocolli a 100Gbps allora non è il posto giusto per te.

qui non si tratta di fare molto, un autenticazione in HTTP è la chiave giusta ed è stata suggerita. su arduino non ci gira (e non girerà) mai un vero e proprio OS quindi trovare la password e crackarlo mi pare difficile se programmato bene. è più facile crackare il tuo fonerino che l'arduino perchè da te posso usare una falla del'SO, l'arduino invece è programmato per fare quello che deve, nulla di più nulla di meno.

inoltre lui voleva un controllo over internet non router. se vuoi fare il pignolo io allora piuttosto che fare come fai tu, programmo un solo arduino che abbia accesso alla rete (un router iniziale, porte aperte, switch e arriva a un firewall un cavo a cui vanno i pc di casa (magari un router wiufi se proprio vuoi) e l'altro diretto ad arduino, tutte le porte sul firewall chiuse anche interne alla rete.

ti sfido ad entrare, ma sono 500€ tra router(s), switch al gigabit (eh se fai una roba del genere ti scordi del gigabit?) e soprattuto un vero firewall..

vuoi fare di meglio? mi metto un proxy sulla rete e chi non è utenticato non può neanche andare su google.

ma a che scopo? mi rendo difficile la vita e basta.

se non vuoi capirlo NESSUNO è interessato a vedere i tuoi file, gestire la tua casa e se lo fa cambi password (che l'unico modo in cui l'avrà trovata sarà per bruteforce) e sei di nuovo sicuro

si in effetti io cercavo solo un modo per poter farmi inviare la pagina html da arduino solo se mi autenticavo :) magari con un controllo dell'ip che mi lasciava libero accesso per un determinato tempo, diciamo 1 ora, dopodiche mi veniva richiesta l'autenticazione :)

camba192

per per il tempo dovresti usare i coockie ma non so come funzionino a livello di arduino

Scarterei il controllo dell’IP, non hai la certezza che sia l’utente autorizzato ad effettuare la connessione. Potrebbe benissimo essere l’amico venuto a trovarti che sta spippolando col tuo computer.

più che altro se non lo fa sulla rete ma fa tutto su internet si trova ip dinamici che continuano a cambiare e dovrebbe aggiornarli a ogni cambio.

qualcuno di voi ha esperienza di aggiornamento di ip via dyndns?

con dyndns c'è un sw, se non sbaglio, che manda una stringa di aggiornamento con il tuo nuovo ip. credo che ormai la sintassi ed il protocollo di dyndns siano pubblici. comunque tornando al discorso della sicurezza, io sono dell'opinione che la sicurezza e i controlli varii debbano essere demandati ai dispositivi perimetrali di protezione (firewall ecc..), e non dopo, quando sei già dentro la rete. ho sentito parlare di fonera ecc.. ecco l'attenzione dovrebbe cadere su quello, ha un os che era (non so se lo è ancora) exploitabile e quindi sarebbe lui il punto da proteggere. :) altra cosa interessante che mi è parso di capire che la sicurezza si riduce a proteggere il nodo che controlla l'acquario, detto così in effetti sembra strano ma se si considera che arduino è collegato alla rete locale e che ha bisogno di comunicare con l'esterno, bè questo pone un problema di sicurezza non solo per arduino ma anche per i pc che fanno parte della rete, quindi nn si tratta solo dell'acquario. Magari io dal mio pc di casa faccio operazioni di remote banking o altro o semplicemente mi dà fastidio essere "violentato" digitalmente dal ragazzino che vuole provare l'ultimo plugin di metasploit. La sicurezza è una catena e la sua forza è data dall'anello più debole, quindi sarebbe inutile attaccare arduino per esempio, quando hai già bucato la fonera e installato il tuo bel rootkit e puoi sniffare al volo tutto il traffico, mi ricorda un pò quelle banche che dicono ai clienti:" la nostra connessione è criptata e protetta da intercettazioni" e si dimenticano di dire ai clienti che basta beccarsi un keylogger, perche sia tutto inutile per quanto complesso il criptaggio. Come dimostrano i recenti avvenimenti, nessuno è al sicuro (vedi sony, nintendo, cia, senato americano,ecc..), anche i colossi che investono miliardi nella sicurezza sono deboli, ma questo nn significa che uno dovrebbe rinunciare a proteggersi solo perche tanto non ha niente sul pc, anzi sono proprio i pc di questi "peones" della sicurezza casalinga che vengono usati, all'insaputa di chi li possiede, per portare attacchi tipo DDOS o altri DNA verso siti importanti. le librerie crypto per avr e non ,sono un argomento comunque interessante da studiarsi per capire come funzionano alcuni algoritmi di crittografia che vengono usati quotidianamente in tanti campi della vita moderna.

allora dobbiamo creare un arduino firewall strapotente :D

:P sarebbe bello, ma dubito che arduino ce la faccia a fare tutto il lavoro.

flameman: e ufo che ti succhiano la connessione sul tetto

Una volta gli alieni si limitavano a fare strani esperimenti sui rapiti, adesso pure la connessione internet ci vengono a rubare. Propongo la realizzazione di un sistema di contraerea per gli ufo in puro stile McGyver, qualche puntatore laser cinese, qualche motore recuperato da una vecchia stampante, qualche elastico, delle forcine per capelli, pezzi di filo elettrico, rottami vari e, ovviamente, Arduino che controlla il tutto :)

Flameman, prima mi avevi criticato perché, nonostate un intervento PERTINENTE ad Arduino, secondo il tuo punto di vista avevo sparato castronerie.

sembra che la nuova moda sia fare le cose + insensate possibili

Tu stai facendo dei voli pindarici su tutto tranne Arduino. Non capisco i tuoi interventi. Sei bravissimo, OK. Ma non hai dato un aiuto concreto al nostro amico: hai solo illustrato il NAS Linux, gli UFO sui tetti delle case, hai parlato di mille cose senza affrontare il problema. E meno male che dicevi:

queste sono paranoie! o idee da film, o via bischerate
nella realta’ bisogna essere pragmatici

ma se devi solo resettare un nas linux, perchè non usi ssh?