Una shield per comunicazioni criptate

Perché si dovrebbe realizzare un nuovo sistema di sicurezza, quanto in commercio esiste già una grande varietà di hardware e di software di crittografia? La ragione è semplice: non si può fare totale affidamento a tali dispositivi perché nella maggioranza dei casi non si conoscono le procedure di protezione che vi sono implementate all'interno.

Introduzione

Iniziamo questo articolo con una piccola storia sulla crittografia (consigliamo prima di guardare il video [1]. La famosa Macchina di Cifratura tedesca "Enigma", del secolo precedente (vedi figura 1) era un semplice dispositivo elettromeccanico costituito da una tastiera, da una batteria, da alcune lampade e un sistema d'interruttori.

Figura 1: un particolare della famosa macchina per la codifica elettromeccanica "Enigma"

Figura 1: un particolare della famosa macchina per la codifica elettromeccanica "Enigma"

Calcolare il numero totale di combinazioni possibili (e quindi una stima della sua forza "criptatrice") era facile, monitorando il suo funzionamento e controllando gli errori (solo hardware). Non aveva software e di conseguenza non aveva bug di questo tipo. Per il suo tempo, essa era sufficiente per scongiurare tentativi di criptazione e altri metodi di attacco. Enigma non possedeva un hardware di comunicazione integrato; l'input della tastiera e l'output della lampada erano controllati da un operatore umano (l'agente della cifratura) mentre una seconda persona, l'operatore radiotelegrafista, era responsabile delle trasmissioni radio. Inoltre:

  • era impossibile installare "un cavallo di Troia" in Enigma per decodificare un testo;
  • era immune da qualsiasi tipo di overflow di memoria e le combinazioni dei tasti non potevano essere registrate su un logger (hardware o software);
  • funzionava a frequenze molto basse, non era affetto da radiazioni [2]. Garantiva, dunque, un sicuro funzionamento come un dispositivo inserito all'interno di una gabbia di Faraday.

Oggi, la maggior parte della crittografia viene eseguita tramite software su un PC generico, con l'aggiunta di alcuni dispositivi costosi che si occupano di tutto il resto. La maggior parte dell'hardware di crittografia è come una scatola nera, e per un utente medio è estremamente difficile da analizzare. Anche senza hardware o software di protezione, i sistemi sono comunque troppo complessi per analisi approfondite. Un sistema è, in realtà, più sicuro se è facile da analizzare. Si consiglia di leggere il capitolo relativo all'analisi dell'attacco dei messaggi cifrati [3].

Crittografia monouso o OTP

Secondo Wikibooks [4], la crittografia monouso (OTP) è l'unico metodo di crittografia potenzialmente indistruttibile. Potenzialmente perché funziona bene solo quando le persone che la usano rispettano scrupolosamente le sue regole. In OTP ogni messaggio è crittografato con una chiave casuale unica (vedi figura 2). La chiave deve soddisfare le seguenti condizioni:

  • una chiave deve essere generata da un processo non deterministico e non ripetibile. Nessun algoritmo di alcun tipo può essere usato per tale compito;
  • una chiave viene utilizzata solo una volta;
  • la chiave non deve cadere nelle mani di un nemico.

La crittografia OTP è abbastanza semplice: occorre generare una chiave adatta ed effettuare un'operazione di XOR con il messaggio in chiaro La decifratura è altrettanto semplice: si deve eseguire l'operazione di XOR tra il messaggio criptato e la chiave. Il messaggio crittografato ha, quindi, la stessa lunghezza del messaggio in chiaro. A causa della natura casuale della chiave è impossibile determinare il messaggio originale partendo dal messaggio crittografato.

Figura 2: come Alice invia un messaggio a Bob utilizzando la crittografia monouso (OTP)

Figura 2: come Alice invia un messaggio a Bob utilizzando la crittografia monouso (OTP)

Un sistema pratico

Come accennato in precedenza, OTP è basato su concetti di matematica semplice. E' facile programmare un algoritmo per un microcontrollore (MCU). Se il codice sorgente dell'algoritmo è pubblicato, può essere analizzato in dettaglio da chiunque per verificare cosa stia realmente accadendo all'interno della MCU. La generazione di buone chiavi crittografiche richiede un buon generatore di numeri casuali reali (TRNG, vedi [5]), anch'esso realizzato con un software "open source" e hardware aperto, in modo che sia possibile analizzare ogni aspetto delle sue operazioni. Le chiavi OTP sono memorizzate su una scheda SD, consentendo l'utilizzo di gigabyte di sequenze casuali (non è necessario utilizzare i grossi notebook OTP di carta, usati anticamente). Viene utilizzato un terminale (ad esempio un portatile economico da 7 pollici, con WiFi) con una porta Ethernet o seriale cablata per comunicare con la MCU e uno slot SD per gestire i files sulla scheda. La crittografia viene effettivamente eseguita all'interno del microcontrollore che, come Enigma, è fisicamente indipendente dalle operazioni del computer e dalle trasmissioni wireless. Ciò permette che il sistema sia inattaccabile da un virus o da un malware Trojan. Costruito senza alcun hardware speciale e con componenti di facile reperibilità, tale sistema è facile da assemblare e può essere analizzato nel modo più dettagliato possibile.

Due modalità operative

Il sistema OTP presentato in questo articolo dispone di due modalità operative: "online" e "offline". In modalità online, i messaggi crittografati vengono inviati e ricevuti tramite una connessione audio. In modalità offline, i messaggi e i file vengono crittografati e memorizzati su un supporto di massa, come una scheda SD e, quindi, trasportati a destinazione tramite e-mail, posta ordinaria o un corriere.

Descrizione dell'hardware

Il nostro sistema di crittografia OTP è costituito da una scheda compatibile con Arduino e una scheda aggiuntiva (OTP Crypto Shield). L'Elektor Uno R4 è stato scelto come base per il microcontrollore ATmega328PB, con le sue due porte SPI e due UART. Lo schema elettrico è mostrato in figura 3. I componenti principali dell'OTP Crypto Shield sono:

  1. uno slot per schede microSD utilizzato per i file delle chiavi OTP (modalità online e offline) e per crittografare/decodificare i files (modalità offline);
  2. una porta RS-232 (MAX3232) utilizzata per collegare la shield a un terminale. I dati seriali possono essere inviati su una connessione RS-232 (K5) o su Ethernet, con l'aiuto di un adattatore WIZ107SR da Ethernet a RS-232 (ad esempio quando il terminale non ha una porta seriale). R6 e R7 possono essere utilizzati per scollegare il modulo Ethernet, se quest'ultimo è saldato alla shield;
  3. un modem FSK (TCM3105) per inviare e ricevere i dati su un canale audio analogico (modalità online).
Figura 3: Lo schema dell'OTP Crypto Shield può essere suddiviso in tre parti principali: la porta RS-232 e Ethernet attorno a IC2, K5 e MOD1; l'interfaccia audio con l'IC3 FSK MODEM al centro e lo slot per le schede microSD per la memorizzazione di dati e chiavi dei messaggi

Figura 3: Lo schema dell'OTP Crypto Shield può essere suddiviso in tre parti principali: la porta RS-232 e Ethernet attorno a IC2, K5 e MOD1; l'interfaccia audio con l'IC3 FSK MODEM al centro e lo slot per le schede microSD per la memorizzazione di dati e chiavi dei messaggi

Shutdown Soft

Per evitare di utilizzare due volte la stessa sequenza OTP, è importante tenere traccia della posizione dell'attuale puntatore chiave OTP e di altre variabili importanti. In caso d'interruzione accidentale dell'alimentazione, , questi dati devono essere memorizzati rapidamente sulla scheda SD. In caso di interruzione di corrente, il super condensatore C11 continuerà ad alimentare il circuito per alcuni secondi, consentendo uno spegnimento  dolce ("soft"). Una caduta di tensione su PD6 viene rilevata dal comparatore interno della MCU, consentendo l'arresto graduale, eseguito in una routine d'interrupt. Un arresto soft può anche essere eseguito manualmente premendo il pulsante S3. Il transistor T2 scollega il modulo WIZ107SR (se presente) in caso d'interruzione di corrente, in quanto assorbe più di 200 mA, causando una caduta eccessiva della tensione, dovuta alla resistenza interna del super condensatore C11 e rendendo impossibile la scrittura sulla scheda SD. S2 è un pulsante di reset "hard" che deve essere usato con molta cautela per evitare la perdita di dati cruciali (come il valore del puntatore chiave OTP). S1, d'altro canto, fornisce un reset "soft" sicuro senza perdita di dati e viene solitamente utilizzato per interrompere una ricerca del puntatore della chiave, se esso impiega troppo tempo.

Un consiglio per l'alimentazione

K10 viene utilizzato per collegare una tensione di alimentazione di 5 V al dispositivo. Il connettore micro USB sull'Elektor Uno R4 è adatto per l'aggiornamento del firmware con l'ausilio del bootloader (JP1 sulla shield deve essere aperto quando si esegue tale operazione), ma non deve essere usato per alimentare la OTP Crypto Shield durante la normale operazione perché potrebbe influire sul reset della MCU.

Perché tanti diodi LED?

La Shield OTP Crypto ha un certo numero di diodi LED. Il LED1 è un indicatore di alimentazione, mentre il LED2 e il LED3 indicano l'attività sui segnali RTS e CTS sulla UART0 della MCU. Il LED4 indica la trasmissione dei dati sulla porta audio del modem (proveniente dalla UART1), il LED5 indica la ricezione dei dati. Il LED7 indica un errore di ricezione. Il LED6 indica un reset soft (quando il pulsante S1 viene premuto e la richiesta viene elaborata dall'MCU), o lampeggia durante una lunga ricerca di un puntatore, durante la codifica del messaggio da parte della MCU (o un file in modalità Offline) dopo aver perso la posizione del puntatore chiave. Quando viene rilevata una condizione di bassa tensione, o dopo aver premuto S3, il LED5 e il LED6 lampeggiano alternativamente per indicare un aggiornamento riuscito dello stato (file ".STT", vedi sotto). Quando lampeggiano contemporaneamente, il file di stato non è stato aggiornato (il tentativo di scrittura non è riuscito perché il suo contenuto non è cambiato).

Figura 4: selezionare l'opzione 1 per elencare il contenuto della directory principale

Figura 4: selezionare l'opzione 1 per elencare il contenuto della directory principale

Il canale audio

Un modem FSK (IC3) fornisce un canale audio per la trasmissione e la ricezione di messaggi crittografati utilizzando, ad esempio, un telefono o un PMR. IC3 funziona a 1200 baud usando frequenze FSK di 1300 Hz e 2100 Hz. Secondo la legge di Carson, la larghezza di banda del segnale analogico deve essere compresa tra 700 Hz e 2700 Hz, che va bene anche per un canale audio di bassa qualità. P1 imposta la soglia per distinguere tra le due frequenze ("0" o "1"). Per regolarlo, si deve inviare un messaggio da un'altra shield con un segnale nella modalità "testo online" (opzione 5, vedi sotto). P2 è impostato in posizione centrale per la connessione al microfono o all'ingresso di linea; tale impostazione va bene per la maggior parte dei dispositivi. Si imposti su un valore basso quando si regola P1 sull'altra shield. L'accoppiatore ottico IC1 viene utilizzato per "attivare" il pulsante PTT (push-to-talk), se un dispositivo simplex come un PMR VHF/UHF viene utilizzato per trasmettere o ricevere il segnale audio FSK crittografato. Oltre a un PMR portatile, è possibile utilizzare qualsiasi altro canale analogico (con collegamento diretto via cavo, telefono analogico) o digitale con compressione senza perdita di dati (come G.711) per la modalità online. Non è possibile utilizzare i codec a perdita come il GSM o quelli usati da Skype o Viber. Sono ottimi per i segnali vocali umani, ma non per un segnale del modem FSK, perché la sua altezza cambia molto più rapidamente della voce umana.

Figura 5: per scegliere un contatto dalla rubrica, digitare 2

Figura 5: per scegliere un contatto dalla rubrica, digitare 2

Come funziona?

Supponiamo che due persone vogliano comunicare, usando il sistema proposto. Per permettere la comunicazione, entrambe le parti devono possedere lo stesso file di chiavi OTP (generate dal generatore di numeri casuali reale). Come detto in precedenza, la stessa sottosequenza di byte casuali presi dal file e utilizzati per la crittografia dei dati non può mai essere utilizzata più di una volta per garantire la sicurezza. Ciò significa che le due parti devono avere una sorta di puntatore nel file chiave e che questi puntatori devono essere sincronizzati. Ciò significa anche che quando la sincronizzazione viene persa (per qualsiasi motivo), deve essere possibile ripristinare il puntatore della chiave. Per evitare di riutilizzare la stessa sottosequenza (che comprometterebbe immediatamente la sicurezza del sistema OTP), entrambe le parti devono trovare un metodo per tenere traccia di entrambi i puntatori chiave. Questo è il motivo per cui, oltre al file KEY, ogni parte deve anche possedere un file di stato (STT), contenente il suo puntatore chiave (e altri dati di controllo) e un file "mirror" (MIR). Questo, inviato o ricevuto dall'host remoto, contiene la versione crittografata del file STT e viene utilizzato per l'autenticazione e il controllo dello stato dell'host remoto solo in modalità offline.

Figura 6: crittografia del file completata

Figura 6: crittografia del file completata

Un esempio

Usiamo i tradizionali personaggi di Alice, Bob, Eve e Mallory per spiegare come funzionano le cose. Alice e Bob (i ragazzi "onesti") cercano di scambiare alcune informazioni riservate. Eve tenterà d'intercettare passivamente la crittografia  mentre Mallory, malintenzionato, cercherà di bloccare la comunicazione o di alterare il contenuto dei messaggi o dei file trasmessi. La scheda SD di Alice conterrà i file BOB.KEY, BOB.STT e BOB.MIR, la scheda SD di Bob conterrà ALICE.KEY, ALICE.STT e ALICE.MIR. Entrambi i file KEY sono identici, generati dal TRNG e contengono da 16 MB a 4 GB di dati casuali. I files di stato STT sono di dimensioni ridotte (non più di 512 byte) e contengono un testo leggibile che può essere modificato con un editor di testo come il Blocco note:

ALICE.STT:
POINTER :0000000000 [bytes]
TOTAL SIZE :0016244736 [bytes]
CLUSTER :0000007287 [clusters]
CRC32 :2989374417


Alice nel paese delle meraviglie
Alcune informazioni aggiuntive ...



BOB.STT:
POINTER :0000000000 [bytes]
TOTAL SIZE :0016244736 [bytes]
CLUSTER :0000007287 [clusters]
CRC32 :2989374417


Sponge Bob Square Pants
Alcune informazioni aggiuntive ...

 

POINTER e TOTAL SIZE indicano quando è necessario un nuovo file chiave OTP poiché il valore di POINTER avanza lentamente fino al valore di TOTAL SIZE. CLUSTER contiene il numero di un cluster sulla scheda SD in cui POINTER punta attualmente all'interno del file chiave. CRC32 è un checksum calcolato sui primi 16 byte del CLUSTER corrente e  quattro byte del valore POINTER (POINTER è un intero lungo a 32 bit memorizzato nella SRAM ATmega328PB in formato "Little Endian"). In questo modo è possibile rilevare il cambiamento di questi valori. Se si modifica manualmente il valore di POINTER, la MCU cerca sulla SD il CLUSTER corretto, calcola il CRC32 e quindi aggiorna, di conseguenza, il file .STT. Si noti che i valori di CLUSTER su entrambe le schede SD non devono essere identici per gli stessi valori POINTER, poiché i file verranno probabilmente collocati in diversi cluster su diverse schede SD (e possono anche essere frammentati). È importante che il file STT inizi con la stringa "POINTER " (notare lo spazio finale). Il file MIR crittografato verrà considerato decrittografato correttamente (convalida il puntatore chiave nel processo) se questa stringa di 8 lettere (incluso lo spazio finale) viene visualizzata durante il tentativo di decodificare i primi otto caratteri del file MIR. I quattro valori nel file STT sono numeri a 10 cifre, che iniziano immediatamente dopo uno spazio e i due punti: " :".  Questo è il modo in cui l'MCU li legge da un file STT.

Figura 7: il file BOB.MIR ora è anche crittografato

Figura 7: il file BOB.MIR ora è anche crittografato

Modalità offline

Se Alice vuole inviare un file crittografato a Bob in modalità Offline, la procedura è la seguente:

  1. Alice mette la sua scheda SD nel suo computer e memorizza il file da crittografare sulla scheda SD, ad esempio il file MP3 "MUSIC.MP3";
  2. Alice copia il suo file BOB.STT sul file BOB.MIR (cancellando i suoi vecchi contenuti, non sono importanti per adesso) sulla sua scheda SD. BOB.MIR è per ora in chiaro ed è identico a BOB.STT;
  3. inserisce, quindi, la scheda SD nella Shield OTP Crypto e l'accende;
  4. deve elencare il contenuto della directory root (opzione 1, vedi figura 4);
  5. sceglie il destinatario a cui inviare il file crittografato. E' possibile avere molti file destinatari diversi su una stessa scheda SD (diversi contatti nella rubrica, NAME.KEY, NAME.STT, NAME.MIR). Basta inserire il nome del destinatario e le estensioni dei file verranno aggiunte automaticamente (vedi figura 5):
  6. sceglie l'opzione 3 ("Crittografia file offline") e inserisce il nome file completo, inclusa l'estensione. La MCU prima crittograferà il file mirror BOB.MIR e quindi procederà alla crittografia del file principale "MUSIC.MP3". Al termine della crittografia, la MCU aggiornerà lo stato nel file BOB.STT (vedi figura 6);
  7. Alice rimuove la sua scheda SD dalla shield e la inserisce nel suo computer. La riproduzione di MUSIC.MP3 non andrà a buon fine poiché il file è, adesso, crittografato. L'apertura di BOB.MIR produce un risultato simile a quello di figura 7 (adesso è anche crittografato). BOB.STT è ancora un testo in chiaro, e risulta simile a quello mostrato in figura 8. Il POINTER si è incrementato, così come il numero CLUSTER. Anche il valore di CRC32 è cambiato. Il file MP3 pesa circa 5 MB;
  8. Alice invia ora un'email contenente l'allegato "MUSIC.MP3" crittografato e file BOB.MIR crittografato, utilizzando qualsiasi mezzo di comunicazione non sicuro (digitale o no). Alice potrebbe rinominare BOB.MIR in ALICE.MIR e Bob può farlo anche quando lo riceve. E' meglio rinominare entrambi i files per maggiore sicurezza.
Figura 8: Il file di stato BOB.STT aggiornato rimane in chiaro

Figura 8: Il file di stato BOB.STT aggiornato rimane in chiaro

Ricezione offline

La scheda SD di Bob contiene i file ALICE.KEY e ALICE.STT (vedi figura 9).

Figura 9: il file ALICE.STT sulla scheda SD di Bob

Figura 9: il file ALICE.STT sulla scheda SD di Bob

Il POINTER di Bob è ancora a "0" e raggiungerà il valore "0005380096" dopo che la decrittografia è stata completata.

Figura 10: la directory root sulla scheda SD di Bob

Figura 10: la directory root sulla scheda SD di Bob

Dopo che Bob riceve i files da Alice, la procedura per decrittografarli è la seguente:

  1. Bob copia i due file crittografati ricevuti da Alice (MUSIC.MP3 e ALICE.MIR) sulla sua scheda SD;
  2. Bob mette la sua scheda SD nella Shield OTP Crypto. La root directory della scheda SD ora è come quella della figura 10;
  3. dopo aver scelto i file con l'opzione 2, il sistema è pronto per iniziare la decodifica (vedi opzione 4 in figura 11). La Shield tenta di decodificare ALICE.MIR con il valore del puntatore chiave letto dal file ALICE.STT di Bob. Il file chiave viene scansionato fino a trovare il valore iniziale corretto del puntatore chiave. La decrittografia è considerata valida se i primi otto caratteri del file MIR sono letti come "POINTER". Dopo aver eseguito correttamente la decodifica, vengono visualizzati i contenuti del file MIR. Ora Bob può controllare diverse cose:
    1. la posizione del puntatore chiave di Alice ("0000000000" prima di avviare la crittografia) dovrebbe essere uguale al valore del puntatore chiave di Bob prima di iniziare la decrittografia. Se il puntatore chiave di Alice ha un valore inferiore al puntatore chiave di Bob, esiste la possibilità che la sicurezza sia compromessa perché Alice ha riutilizzato una sequenza di chiavi OTP. Eve ha la possibilità di distruggere almeno una parte dei loro messaggi precedenti. I caratteri che appaiono dopo la decrittazione del file MIR possono indicare che Mallory ha manomesso il messaggio, ad esempio ha alterato il valore del puntatore chiave all'interno del file MIR. Un modo per prevenire un simile attacco è quello di nascondere alcuni brevi messaggi di autenticazione prima della crittografia del file MIR (ma senza modificare la formattazione dei quattro valori e senza utilizzare i due punti. Questo cambia la posizione dei caratteri all'interno del file MIR, aumentando le probabilità che Mallory modifichi il byte sbagliato;
    2. tutti i valori nel file MIR decrittografato possono essere controllati manualmente da Bob per sicurezza al fine di rilevare qualsiasi tentativi di manomissione da parte di Mallory;
  4. dopo la decrittografia del file principale MUSIC.MP3, Bob può rimuovere la Scheda SD dalla sua Shield OTP Crypto e inserirla nel computer. Ora egli può ascoltare MUSIC.MP3, ma può controllare anche il contenuto del file di stato STT di ALICE (vedi figura 12). Entrambi i puntatori delle chiavi sono sincronizzati e il il sistema è pronto per crittografare, in modo sicuro, la prossima sessione di comunicazione.
Figura 11: decrittografia del file completata. Il file deve essere riprodotto per scoprire se tutto è andato a buon fine

Figura 11: decrittografia del file completata. Il file deve essere riprodotto per scoprire se tutto è andato a buon fine

Figura 12: il file di stato sulla scheda SD di Bob dovrebbe mostrare un avanzamento del puntatore della chiave

Figura 12: il file di stato sulla scheda SD di Bob dovrebbe mostrare un avanzamento del puntatore della chiave

Modalità online

Nella modalità online la Shield OTP Crypto controlla costantemente il valore del puntatore della chiave e avvisa l'utente quando il suo valore diminuisce, indicando un riutilizzo di una sequenza OTP. Dopo aver selezionato il contatto (allo stesso modo della modalità offline) e l'inizializzazione della modalità di crittografia online, i dispositivi trasmettono la stringa "Rd" (pronto). Quello che lo riceve è pronto per trasmettere il primo messaggio. Ogni messaggio inviato da Alice contiene:

  • il puntatore della chiave (4 byte);
  • il messaggio;
  • un checksum CRC-16 (2 byte).

La sequenza di 4+N+2 byte è crittografata con OTP, e un ulteriore checksum CRC-16, calcolato sulla sequenza criptata, viene aggiunta a esso.

Ricezione online

Quando Bob riceve la decrittazione del messaggio accadono i seguenti eventi: il checksum del messaggio crittografato viene calcolato per rilevare eventuali errori che potrebbe essersi verificato durante la trasmissione. Se i checksum non corrispondono, la stringa "Er" verrà inviata ad Alice per richiedere nuovamente una trasmissione. Se il checksum è corretto, verrà inviato "Ok". La stringa "A" indica un timeout quando la conferma dal destinatario arriva con troppo ritardo. La decrittazione è considerata un successo se il CRC-16 decrittato corrisponde e se il puntatore chiave decodificato corrisponde a quello calcolato sulla Shield OTP Crypto di Bob. La stringa "Dc" verrà inviata ad Alice per indicare la decrittazione riuscita. Qualsiasi manomissione potrà generare un messaggio che non potrà essere decifrato e sia Alice che Bob saranno avvisati di ciò. Se Mallory riesce a riprodurre il messaggio precedentemente registrato, esso sarà decrittografato correttamente, ma il valore del puntatore della chiave sarà troppo basso, e la Shield lo segnalerà.

Suggerimenti per una maggiore sicurezza

Di seguito sono proposti alcuni consigli per aumentare ulteriormente la sicurezza dei dati, da parte della shield (vedi figura 13):

  • la deframmentazione del file della chiave renderà la ricerca molto più veloce , specialmente quando il puntatore dovrà accedere a un precedente cluster di dati, sulla scheda SD;
  • si consiglia di formattare la scheda SD su FAT32 con una dimensione di cluster di 8-16 KB;
  • si avvii la sessione di comunicazione online con un breve messaggio, per assicurarsi della massima velocità di sincronizzazione del puntatore della chiave. Per trovare un puntatore chiave corretto con un lungo messaggio ci vuole più tempo;
  • quando si perde la sincronizzazione del puntatore chiave, è sempre bene "svuotare" il buffer con una lunga sequenza  "senza senso". Ciò aumenta la protezione;
  • se il puntatore della chiave ha un valore molto più basso dell'altro, si aumenti il valore manualmente all'interno del file STT. E' sempre meglio utilizzare parte della sequenza casuale piuttosto che usarla due volte;
  • il bootloader Elektor Uno R4 può essere utile durante le operazioni di sviluppo o di debug, ma per operazioni sicure esso deve essere disabilitato tramite i rispettivi "fuses" e rimosso dalla memoria flash. La versione finale del firmware senza bootloader deve essere caricata tramite la porta ISP. Un bootloader attivato accidentalmente all'avvio potrebbe sovrascrivere alcune pagine nella memoria flash e causare operazioni instabili e non sicure.
Figura 13: il circuito completo

Figura 13: il circuito completo

Conclusioni

La crittografia è una delle pochissime aree dove non puoi fare affidamento ai dispositivi plug-and-play o pronti all'uso senza approfondire la conoscenza dell'intero processo. La sicurezza dei dati è un processo complesso, non un prodotto finale. Di conseguenza, qualsiasi dispositivo crittografico rimarrà sempre un dispositivo provvisorio. Quello crittografico presentato qui è stato progettato per prevenire molti possibili attacchi che possono essere facilmente tentati contro un PC per uso generico. Esso è stato progettato per essere più sicuro di un PC o di un altro dispositivo con cui non si conosce la procedura da esso portata a termine.

Elenco componenti

Segue l'elenco dei componenti necessari per il circuito. In figura 14 è possibile osservare il dispositivo prima e dopo la collocazione di essi.

  • Resistenze
    • Default: 0805, 125mW, 5%
    • R1, R18, R24 = 1.8 kohm
    • R2, R16, R17 = 10 kohm
    • R3, R21, R22 = 3.3kohm
    • R4, R10, R11 = 680 ohm
    • R5, R12, R14, R15 = 1 kohm
    • R6, R7, R23 = 4.7 kohm
    • R8 = 22 kohm
    • R9 = 7.5 kohm, 1%
    • R13 = 470 ohm
    • R19 = 100 kohm
    • R20 = 1.5 kohm
    • P1 = 10 kohm trimmer
    • P2 = 1 kohm trimmer
  • Condensatori
    • Default: SMD 0805
    • C1, C2, C4, C5, C6, C7, C8, C9, C13, C16, C17, C18, C20 = 100 nF
    • C3 = 100 uF, 10 V, Case B
    • C10, C12 = 1 uF
    • C14, C15 = 33 pF
    • C11 = 0.22 F, 5.5 V, super condensatore, passo 5 mm
    • C19 = 2.2 uF, 16V, Case A
  • Semiconduttori
    • IC1 = HCPL-817-000E
    • IC2 = MAX3232CPWR
    • IC3 = TCM3105NL
    • IC4 = LE33CZ-TR
    • T1 = BC847C
    • T2 = TSM2302CX RFG
    • LED1, LED2, LED3 = verde, 0805
    • LED4, LED5, LED6 = giallo, 0805
    • LED7 = rosso, 0805
  • Varie
    • K1 = connettore a 8 pin, passo 0.1"
    • K2 = connettore a 10 pin, passo 0.1"
    • K3, K5 = connettore a 6 pin, passo 0.1"
    • K4 = connettore a 12 pin, passo 0.1"
    • K6 = connettore per micro SD
    • K7, K8, K9, JP1 = connettore a 2 pin, passo 0.1"
    • K10 = connettore Micro USB tipo B
    • S1, S2, S3 = switch SMD 6x6.2 mm
    • X1 = quarzo a 4.433619 Mhz
    • MOD 1 = connettore a 12 pin (2x16), passo 0.1"
    • DIP = 16 contatti
    • PCB = 160510-1
    • WIZ107SR = modulo Seriale a Ethernet
Figura 14: il circuito completo

Figura 14: il circuito completo

>>>Leggi anche: Serratura elettronica comandata da Smartwatch/Smartphone

Links

[1] Elektor TV on Cryptography: www.elektormagazine.com/news/elektor-tv-historic-criptography
[2] Wim van Eck, “Electromagnetic Radiation from Video Display Units: An Eavesdropping Risk?”, 1985: https://cryptome.org/emr.pdf
[3] Bruce Schneier, “Secrets & Lies: Digital Security in a Networked World”, Wiley, 2004
[4] Wikibooks on OTP: https://en.wikibooks.org/wiki/Cryptography/One_time_pads
[5] Luka Matic, Elektor Magazine March & April 2017, “Truly Random-Number Generator”: www.elektormagazine.com/150116
[6] OTP Crypto Shield at Elektor Labs: www.elektormagazine.com/labs/one-time-pad-otp-crypto-system
[7] Article resource & support page: www.elektormagazine.com/180543

 

Elektor Post

Una risposta

  1. Giovanni Di Maria Giovanni Di Maria 27 marzo 2019

Scrivi un commento

EOS-Academy
Abbonati ora!