Libreria di crittografia per Arduino


9

Sto usando un Arduino per leggere una tastiera e aprire un riscontro elettrico all'inserimento del PIN della tastiera. Per questo disegno volevo usare una sorta di crittografia leggera per archiviare i PIN in EEProm. Qualcuno sa di una tale biblioteca? Ho sentito che potrebbe essere possibile usare TwoFish.

Risposte:


12

Non vuoi crittografare le password (PIN), ma vuoi cancellarle . Quando qualcuno inserisce una password, è possibile inserire tale password e confrontarla con l'hash memorizzato. Il vantaggio di questo metodo (usato da oltre 30 anni) è che anche se qualcuno ottiene la fonte e gli hash, non può ancora dire quali PIN corrispondono agli hash, purché si scelga una funzione hash abbastanza forte .

Non vuoi implementare la crittografia da solo: vuoi usare la libreria di qualcun altro, in particolare una con un'implementazione aperta che è stata testata da una grande comunità. La crittografia è difficile, i test sono difficili e testare la crittografia è dannatamente difficile, quindi chiedi a qualcun altro di farlo per te.

Dovresti dare un'occhiata alla AVR Crypto Library , che è concessa in licenza con GPLv3. C'è anche un'implementazione di Skein per AVR .


1
Eseguito l'upgrade: una buona risorsa, che dovrebbe essere impostata come risposta alla domanda.
Lou

9

Quel link pubblicato da Hristos, anche se forse utile, non conta certamente come "crittografia". È davvero solo "offuscamento".

La crittografia corretta è notoriamente facile da sbagliare, anche per le persone che conoscono la matematica.

In risposta al post originale: quali sono i metodi di attacco che consentirebbero a qualcuno di accedere ai PIN nell'EEProm? Sicuramente se sono così lontani dai tuoi dispositivi elettronici possono semplicemente "tagliare il filo rosso" e aprire la porta?

Se in qualche modo fare avere un sistema in cui gli aggressori potrebbero entrare in possesso dei contenuti EEProm senza avere già abbastanza accesso per aprire la porta, probabilmente avrete bisogno di ridisegnare esso. Si potrebbe guardare a funzioni hash unidirezionali simile a Unix hashing delle password - in questo modo l'EEProm non ha bisogno di t contengono una chiave di decifrazione - il problema è lo spazio di ricerca per Pins è molto piccola - se riesco a scaricare la versione hash della PIN, posso provare abbastanza rapidamente tutti i 10.000 possibili PIN, sospetto che qualsiasi laptop moderno li eseguirà tutti in pochi secondi.


Sono d'accordo (e concordato sopra), un hash a senso unico sarebbe utile e se stai programmando il sistema, potresti creare il pin finché vuoi, ad esempio 8 cifre danno 100.000.000 di combinazioni, che dovrebbero richiedere molto più tempo.
Amos,

1

Il problema che prevedo è che se possono vedere i tuoi pin possono anche vedere il tuo programma che crittografa / controlla / decrittografa i tuoi pin. Inoltre, se hanno il tuo chip, non possono semplicemente modificare il programma per dare sempre un risultato positivo (aggirando efficacemente il controllo) per qualsiasi pin inserito.


1

Come si prevede di decodificare i PIN crittografati, al fine di verificare se l'utente ha inserito un PIN valido? Dovrai archiviare la chiave di decodifica ... a quel punto se l'attaccante può leggere la tua eeprom, può anche leggere il tuo flash per trovare la chiave di crittografia. In pratica, rendere l'intera crittografia completamente inutile. Inoltre, come hanno detto gli altri, se ha già la capacità di leggere il tuo chip, potrebbe semplicemente scrivere un nuovo programma. Molto più semplice aprire semplicemente la porta, dubito che qualcuno avrebbe mai avuto il problema di provare a hackerare il tuo chip.


1

Ecco un metodo di semplice codifica in C che può essere facilmente portato su Arduino. Questo sembra il modo più semplice per crittografare i dati con le risorse limitate di Arduino.

-EDIT- Per mantenere la chiave fuori dal programma è possibile rendere la metà del PIN la chiave. Ciò significa che il tuo programma prende la metà della chiave del PIN per decrittografare il 1/2 PIN crittografato memorizzato in EEProm. Se la chiave decodificata da EEProm corrispondesse alla parte del perno che non è la chiave, la porta si sbloccherebbe. Ciò funzionerebbe solo in una situazione in cui non è possibile per gli intrusi abbattere la porta o riprogrammare l'Arduino.


Ma se non hanno accesso al tuo chip non è necessario crittografare il pin.
Amos,

1

Odio non rispondere alla domanda mentre ne faccio un'altra, ma ...

C'è qualche motivo per cui il tuo dispositivo non è a prova di manomissione? Ho visto interruttori a pulsante nei fori delle viti implementati "sul banco" per rilevare il tipo di manomissione di cui sei preoccupato. Poi .. ecco che arriva il bambino con una micro torcia al butano che riesce a ottenere il tuo chip senza svitare nulla (o danneggiare il chip) .. in qualche modo, conosceva il design del tuo sistema a prova di manomissione che (anche, si spera) include il rilevamento di modifiche in luce ambientale e / o suono. Quando la copertina si stacca, entrambi diventano piuttosto diversi .. di giorno o di notte.

In tal caso, dovrebbe essere un sistema in due parti in cui i pezzi esposti comunicano con qualcosa in cui la crittografia viene implementata più facilmente. Inoltre, i checksum (aiuto) rappresentano il bambino con la torcia.

Penso che stai chiedendo a un cacciavite di essere un martello.


1

Questi commenti sono davvero esatti. Non c'è niente di sbagliato nel provare a sperimentare per conoscere la crittografia, ma questo non è davvero un buon progetto per imparare queste cose. Vuoi davvero un buon libro di testo e un computer, e come dice @bigiain, la matematica è notoriamente facile da sbagliare.

Per una migliore comprensione di come funziona la crittografia e di cosa ti trovi contro, il Manuale di crittografia applicata è eccellente e gratuito:

Se vuoi solo proteggere il tuo progetto, questo è un modo inefficiente per farlo. Se sei interessato alla crittografia, inizia con questo libro e un computer.


Capisco la crittografia, leggo Bruce Schneier e ho programmato per oltre vent'anni. Capisco che la vera minaccia è semplicemente abbattere la porta e passare davanti a qualsiasi controller Arduino. Non riesco a installarlo in buona coscienza con PIN in chiaro in EEProm se può essere evitato. Vola

Esistono molti semplici metodi di offuscamento che sarebbero altrettanto efficaci in questo ruolo se si desidera evitare di archiviare PIN in chiaro. I rispondenti sopra stavano solo cercando di aiutarti a capire cosa fa e cosa non fa la crittografia. Ecco una libreria AES: hoozi.com/Articles/AESEncryption.htm Vorrei anche dire che solo perché hai programmato per 20 anni, non significa che "comprenda" la crittografia. È un campo totalmente diverso. Un meccanico di 20 anni è un esperto, ma non mi aspetterei che progettasse da zero un bus CAN. Controlla il tuo atteggiamento, per favore.
Lou

Oh dio ... 20 anni di codifica e pensi che sia possibile crittografare i dati di runtime ????? Smettere.
MickLH,
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.