Sommario:
Video: Generatore Arduino TOTP: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Ispirazione
Avendo un amico interessato alla crittografia e alla sicurezza, volevo creare il regalo di compleanno perfetto.
*Questo è un progetto che ho realizzato come regalo di compleanno ed è stato creato in tempi stretti (scusate la lavorazione disordinata)
NOTA: la generazione TOTP utilizzata in questo progetto genera e utilizza codici a 6 cifre, ma a causa del mio attuale hardware a disposizione, ho deciso di tagliare le 2 cifre finali e visualizzare e utilizzare 4, probabilmente (ma non molto) riducendo il sicurezza.
Informazioni generali
Questo progetto genera un nuovo codice ogni 30 secondi utilizzando una chiave precondivisa e l'ora corrente (che viene tenuta traccia dell'utilizzo del modulo orologio in tempo reale) e lo visualizza sul display quando viene premuto il pulsante. Il caso d'uso più comune sarebbe la verifica a due fattori basata su Time-based One Time Password (TOTP) e One Time Password (HOTP) basata su HMAC per l'autenticazione.
TOTP è un algoritmo che calcola una password monouso da una chiave segreta condivisa e l'ora corrente. HTOP è un algoritmo che utilizza l'algoritmo HMAC per generare una password monouso.
Aziende come Google, Microsoft e Steam utilizzano già la tecnologia TOTP per la loro autenticazione a due fattori
Link interessanti
Articolo che spiega come Google utilizza questa tecnologia per autenticare gli utenti -
Implementazione JavaScript di HOTP e TOTP che può essere utilizzata durante la creazione di software utilizzando questo progetto -
Libreria critografica per Arduino utilizzata in questo progetto -
Documento TOTP -
Livello di competenza
Questo Instructable è per gli appassionati che sono interessati alla sicurezza e potrebbero voler implementare un bel componente hardware per la generazione del loro TOTP. Questo Instructable è scritto per un pubblico che comprende già le basi dell'interpretazione dei diagrammi elettronici e della programmazione rudimentale, ma se hai intenzione di seguire esattamente questo Instructable, non preoccuparti se non hai esperienza e sentiti libero di porre domande nel Commenti! Inoltre, il progetto può essere interessante anche per i produttori più esperti poiché il prodotto finale non è solo un bel pezzo da avere in giro (secondo me), ma ha così tanto potenziale di espansione e nuove funzionalità senza troppi problemi.
Forniture
Materiali:
- 1x Arduino Nano (Amazon)
- 1x modulo orologio in tempo reale (RTC) DS3231 AT24C32 (Amazon)
- 1x SH5461AS Catodo comune a 4 cifre a 7 segmenti (Amazon)
- 1x pulsante (Amazon)
- 1x resistore da 10k (Amazon)
- OPZIONALE 1x PCB 5x7cm (Amazon)
- OPZIONALE Filo per saldatura su PCB
- OPZIONALE 1x breadboard per test (Amazon)
Fase 1: Assemblaggio e test
Assemblare tutti i componenti sulla breadboard e cablarli secondo lo schema elettrico allegato (il file di Fritzing è qui).
Assicurati di avere installato l'IDE Arduino (puoi trovarlo online in caso contrario) e installa le seguenti librerie:
github.com/lucadentella/TOTP-Arduino
github.com/adafruit/RTClib
github.com/maniacbug/Cryptosuite
Scarica lo schizzo allegato (è accessibile anche qui: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) e aprilo utilizzando l'IDE Arduino. Apri questo link (https://www.lucadentella.it/OTP/) e inserisci un nome qualsiasi nel campo del nome dell'account e una chiave segreta personalizzata (10 caratteri) nel campo successivo, assicurandoti di salvare entrambi i valori in un luogo sicuro per il backup. Copia il contenuto del campo "Arduino HEX array:" e torna all'editor Arduino, sostituendo l'array sulla riga 25 (hmacKey) con quello che hai copiato dal sito.
Dopo aver ricontrollato ogni connessione del cavo, assicurati che il modulo RTC contenga una cella a bottone e collega l'Arduino al tuo laptop utilizzando un mini cavo USB e carica lo schizzo allegato.
Dopo il caricamento, quando si preme il pulsante, sullo schermo dovrebbe apparire un numero. Se scarichi l'app Google Authenticator su uno smartphone e torni al sito utilizzato per generare l'array HEX, scansionando il codice QR o digitando il "codice Google Authenticator" nell'app, dovresti vedere un numero mostrato nell'app. Se tutto funziona correttamente, quando si preme il pulsante, le 4 cifre visualizzate devono corrispondere alle prime 4 del codice corrente visualizzato sull'app per smartphone. In caso contrario, assicurati che il computer utilizzato per caricare il codice Arduino sia impostato sull'ora UTC e riprova.
Passaggio 2: trasferimento su PCB
Dopo esserti assicurato che tutto funzioni correttamente, puoi trasferire i componenti sul PCB e saldare tutto insieme come ritieni opportuno. Ho allegato uno schema PCB oltre al file Fritzing (disponibile qui). Da notare che ho posizionato tutti i componenti sulla parte superiore della scheda per estetica, ma può essere montata anche sotto e quindi racchiusa in una sorta di alloggiamento per renderla più pulita. Ho tagliato e incollato a caldo bastoncini di ghiaccioli colorati con pennarelli ai lati del PCB per creare una scatola di fortuna per l'unità. Un altro passaggio opzionale è collegare una clip della batteria da 9 volt ai pin VIN e GND dell'Arduino, rendendolo alimentato a batteria.
Passaggio 3: finito
Ecco come si è rivelato il mio generatore completato, se hai seguito e ne hai creato uno tu stesso, condividilo qui sotto!
Assicurati di votare il mio Instructable per il Contest STEM se lo ritieni opportuno e lascia un commento/qualsiasi domanda tu possa avere in basso!
Consigliato:
Come utilizzare il generatore di segnale di frequenza DDS Arduino AD9850: 7 passaggi
Come utilizzare il generatore di segnale di frequenza DDS Arduino AD9850: in questo tutorial impareremo come realizzare un generatore di segnale di frequenza utilizzando un modulo AD9850 e Arduino. Guarda il video! Nota: sono riuscito a ottenere una frequenza fino a + 50 MHz ma la qualità del segnale diventa peggio con le frequenze più alte
Generatore/tester da 4-20 mA con Arduino: 8 passaggi
Generatore/tester da 4-20 mA con Arduino: i generatori da 4-20 mA sono disponibili su ebay, ma io amo la parte fai-da-te delle cose e l'utilizzo di parti che ho in giro. Volevo testare gli ingressi analogici del nostro PLC per verificare le nostre letture scada e per testare l'uscita di strumenti 4-20mA. Ci sono loa
Generatore di segnale RF 100 KHz-600 MHZ su DDS AD9910 Arduino Shield: 5 passaggi
Generatore di segnale RF 100 KHz-600 MHZ su DDS AD9910 Arduino Shield: come creare un generatore RF a basso rumore, alta precisione e stabile (con modulazione AM, FM) su Arduino
Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)
Generatore di musica basato sul tempo (Generatore MIDI basato su ESP8266): Ciao, oggi spiegherò come creare il tuo piccolo generatore di musica basato sul tempo. È basato su un ESP8266, che è un po' come un Arduino, e risponde alla temperatura, alla pioggia e l'intensità della luce. Non aspettarti che produca intere canzoni o programmi di accordi
Generatore - Generatore DC con interruttore Reed: 3 passaggi
Generatore - Generatore CC che utilizza un interruttore reed: generatore CC semplice Un generatore di corrente continua (CC) è una macchina elettrica che converte l'energia meccanica in elettricità a corrente continua. Importante: un generatore di corrente continua (CC) può essere utilizzato come motore CC senza alcuna costruzione i cambiamenti