Indholdsfortegnelse:

Arduino TOTP Generator: 3 trin
Arduino TOTP Generator: 3 trin

Video: Arduino TOTP Generator: 3 trin

Video: Arduino TOTP Generator: 3 trin
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Juli
Anonim
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator

Inspiration

Da jeg havde en ven med interesse for kryptografi og sikkerhed, ønskede jeg at skabe den perfekte fødselsdagsgave.

*Dette er et projekt, jeg lavede i fødselsdagsgave og blev skabt inden for stramme tidsbegrænsninger (undskyld det rodede håndværk)

BEMÆRK: TOTP-generationen, der bruges i dette projekt, genererer og anvender 6-cifrede koder, men på grund af min nuværende hardware, valgte jeg at skære de efterfølgende 2 cifre og vise og bruge 4, uden tvivl (men ikke meget) at reducere sikkerhed.

Generelle oplysninger

Dette projekt genererer en ny kode hvert 30. sekund ved hjælp af en foruddelt tast og det aktuelle klokkeslæt (der holdes styr på, hvordan man bruger realtidsurmodulet) og viser det på displayet, når der trykkes på knappen. Den mest almindelige anvendelse ville være to-faktor-verifikation baseret på Time-based One Time Password (TOTP) og HMAC-baseret One Time Password (HOTP) til godkendelse.

TOTP er en algoritme, der beregner en engangskodeord fra en delt hemmelig nøgle og den aktuelle tid. HTOP er en algoritme, der bruger HMAC-algoritmen til at generere et engangskodeord.

Virksomheder som Google, Microsoft og Steam bruger allerede TOTP-teknologi til deres tofaktorautentificering

Interessante links

Artikel, der forklarer, hvordan Google bruger denne teknologi til at godkende brugere-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript -implementering af HOTP og TOTP, der kan bruges til at oprette software, der anvender dette projekt -

Krytografisk bibliotek til Arduino brugt i dette projekt -

TOTP Paper -

Ekspertniveau

Denne instruks er til entusiaster, der er interesserede i sikkerhed og måske vil implementere en god hardwarekomponent til generationen af deres TOTP. Denne instruerbare er skrevet til et publikum, der allerede forstår det grundlæggende ved at fortolke elektroniske diagrammer og rudimentær programmering, men hvis du planlægger at følge denne instruktør nøjagtigt, skal du ikke bekymre dig, hvis du ikke har nogen erfaring, og du er velkommen til at stille spørgsmål nede i kommentarer! Desuden kan projektet også være interessant for mere erfarne producenter, da det endelige produkt ikke kun er et godt stykke at have med (efter min mening), men har så meget potentiale for udvidelse og nye funktioner uden meget besvær.

Forbrugsvarer

Materialer:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Real-Time Clock (RTC) modul (Amazon)
  3. 1x SH5461AS fælles katode 4-cifret 7-segment (Amazon)
  4. 1x trykknap (Amazon)
  5. 1x 10k modstand (Amazon)
  6. VALGFRIT 1x 5x7cm PCB (Amazon)
  7. VALGFRIT Tråd til lodning til PCB
  8. VALGFRIT 1x Breadboard til test (Amazon)

Trin 1: Montering og test

Montering og afprøvning
Montering og afprøvning
Montering og afprøvning
Montering og afprøvning
Montering og afprøvning
Montering og afprøvning

Saml alle komponenterne på brødbrættet og led dem i henhold til det vedlagte ledningsdiagram (Fritzing -filen er her).

Sørg for, at du har Arduino IDE installeret (den kan findes online, hvis du ikke gør det), og installer følgende biblioteker:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Download den vedhæftede skitse (kan også fås her: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), og åbn den ved hjælp af Arduino IDE. Åbn dette link (https://www.lucadentella.it/OTP/), og indtast et navn i feltet kontonavn og en brugerdefineret hemmelig nøgle (10 tegn lang) i det følgende felt, og sørg for at gemme begge disse værdier på et sikkert sted til sikkerhedskopiering. Kopier indholdet i feltet "Arduino HEX array:", og skift tilbage til Arduino -editoren, og udskift arrayet på linje 25 (hmacKey) med det, du kopierede fra webstedet.

Efter at have kontrolleret hver ledningsforbindelse, skal du sørge for, at RTC-modulet har en møntcelle i det, og tilslutte Arduino til din bærbare computer ved hjælp af en USB-mini-ledning, og uploade den vedhæftede skitse.

Efter upload, når der trykkes på knappen, skal der vises et nummer på skærmen. Hvis du downloader Google Authenticator -appen på en smartphone og går tilbage til det websted, der bruges til at generere HEX -arrayet, scanner QR -koden eller indtaster "Google Authenticator -koden" i appen, skal du se et nummer, der vises i appen. Hvis alt fungerer korrekt, skal de 4 cifre, der vises, svare til de første 4 af den aktuelle kode, der vises på smartphone -appen, når du trykker på knappen. Hvis dette ikke er tilfældet, skal du sørge for, at computeren, der bruges til at uploade Arduino -koden, er indstillet til UTC -tid, og prøv igen.

Trin 2: Overførsel til PCB

Overførsel til PCB
Overførsel til PCB
Overførsel til PCB
Overførsel til PCB

Efter at have kontrolleret, at alt er i orden, kan du overføre komponenterne til printkortet og lodde alt sammen, men du synes passer. Jeg har vedhæftet et PCB -diagram ud over Fritzing -filen (tilgængelig her). Bemærk, at jeg placerede alle komponenterne på toppen af brættet til æstetik, men kan også monteres nedenunder og derefter lukkes i en slags hus for at gøre det renere. Jeg skar og varmlimede popsicle -pinde farvet ind med Sharpie på siderne af printkortet for at skabe en provisorisk kasse til enheden. Et andet valgfrit trin er at vedhæfte en 9-volts batteriklemme til VIN- og GND-benene på Arduino, hvilket gør den batteridrevet.

Trin 3: Færdig

Færdig!
Færdig!
Færdig!
Færdig!
Færdig!
Færdig!

Sådan blev min færdige generator, hvis du fulgte med og lavede en selv, del den herunder!

Sørg for at stemme min Instructable til STEM -konkurrencen, hvis du finder det passende, og efterlad en kommentar/eventuelle spørgsmål, du måtte have herunder!

Anbefalede: