Sommario:

Generatore Arduino TOTP: 3 passaggi
Generatore Arduino TOTP: 3 passaggi

Video: Generatore Arduino TOTP: 3 passaggi

Video: Generatore Arduino TOTP: 3 passaggi
Video: Amazing arduino project 2024, Luglio
Anonim
Generatore TOTP Arduino
Generatore TOTP Arduino
Generatore TOTP Arduino
Generatore TOTP Arduino
Generatore TOTP Arduino
Generatore TOTP Arduino

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:

  1. 1x Arduino Nano (Amazon)
  2. 1x modulo orologio in tempo reale (RTC) DS3231 AT24C32 (Amazon)
  3. 1x SH5461AS Catodo comune a 4 cifre a 7 segmenti (Amazon)
  4. 1x pulsante (Amazon)
  5. 1x resistore da 10k (Amazon)
  6. OPZIONALE 1x PCB 5x7cm (Amazon)
  7. OPZIONALE Filo per saldatura su PCB
  8. OPZIONALE 1x breadboard per test (Amazon)

Fase 1: Assemblaggio e test

Assemblaggio e Collaudo
Assemblaggio e Collaudo
Assemblaggio e Collaudo
Assemblaggio e Collaudo
Assemblaggio e Collaudo
Assemblaggio e Collaudo

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

Trasferimento su PCB
Trasferimento su PCB
Trasferimento su PCB
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

Finito!
Finito!
Finito!
Finito!
Finito!
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: