Innholdsfortegnelse:

Arduino TOTP Generator: 3 trinn
Arduino TOTP Generator: 3 trinn

Video: Arduino TOTP Generator: 3 trinn

Video: Arduino TOTP Generator: 3 trinn
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, November
Anonim
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator

Inspirasjon

Etter å ha en venn med interesse for kryptografi og sikkerhet, ønsket jeg å lage den perfekte bursdagsgave.

*Dette er et prosjekt jeg laget i bursdagsgave og ble opprettet innenfor tidsrammer (unnskyld det rotete utførelsen)

MERK: TOTP-generasjonen som brukes i dette prosjektet genererer og bruker 6-sifrede koder, men på grunn av min nåværende maskinvare, valgte jeg å kutte de to siste sifrene og vise og bruke 4, uten tvil (men ikke sterkt) å redusere sikkerhet.

Generell informasjon

Dette prosjektet genererer en ny kode hvert 30. sekund ved hjelp av en forhåndsdelt tast og gjeldende tid (som holdes oversikt over bruk av sanntidsklokke-modulen) og viser den på displayet når du trykker på knappen. Det vanligste bruksområdet ville være tofaktorsverifisering basert på tidsbasert engangs passord (TOTP) og HMAC-basert engangs passord (HOTP) for autentisering.

TOTP er en algoritme som beregner et engangspassord fra en delt hemmelig nøkkel og den nåværende tiden. HTOP er en algoritme som bruker HMAC-algoritmen til å generere et engangspassord.

Selskaper som Google, Microsoft og Steam bruker allerede TOTP-teknologi for tofaktorautentisering

Interessante lenker

Artikkel som forklarer hvordan Google bruker denne teknologien til å autentisere brukere-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript -implementering av HOTP og TOTP som kan brukes når du lager programvare som bruker dette prosjektet -

Krytografisk bibliotek for Arduino brukt i dette prosjektet -

TOTP Paper -

Ekspertnivå

Denne instruksen er for entusiaster som er interessert i sikkerhet og kanskje vil implementere en fin maskinvarekomponent til generasjonen av deres TOTP. Denne instruksen er skrevet for et publikum som allerede forstår det grunnleggende i å tolke elektroniske diagrammer og rudimentær programmering, men hvis du planlegger å følge denne instruksjonsboken nøyaktig, ikke bekymre deg hvis du ikke har erfaring, og gjerne stille spørsmål nede i kommentarer! Videre kan prosjektet også være interessant for mer erfarne produsenter siden sluttproduktet ikke bare er et fint stykke å ha rundt (etter min mening), men har så mye potensial for utvidelse og nye funksjoner uten mye stress.

Rekvisita

Materialer:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 sanntidsklokke (RTC) -modul (Amazon)
  3. 1x SH5461AS Felles katode 4-sifret 7-segment (Amazon)
  4. 1x Trykknapp (Amazon)
  5. 1x 10k motstand (Amazon)
  6. VALGFRITT 1x 5x7cm PCB (Amazon)
  7. VALGFRITT Tråd for lodding til PCB
  8. VALGFRITT 1x brødbrett for testing (Amazon)

Trinn 1: Montering og testing

Montering og testing
Montering og testing
Montering og testing
Montering og testing
Montering og testing
Montering og testing

Monter alle komponentene på brødbrettet og koble dem i henhold til vedlagte koblingsskjema (Fritzing -filen er her).

Sørg for at du har Arduino IDE installert (den kan finnes online hvis du ikke gjør det) og installer følgende biblioteker:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Last ned den vedlagte skissen (kan også nås her: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), og åpne den ved hjelp av Arduino IDE. Åpne denne lenken (https://www.lucadentella.it/OTP/) og skriv inn et hvilket som helst navn i kontonavnsfeltet, og en egendefinert hemmelig nøkkel (10 tegn lang) i det følgende feltet, og sørg for å lagre begge disse verdiene på et trygt sted for sikkerhetskopiering. Kopier innholdet i feltet "Arduino HEX array:", og bytt tilbake til Arduino -editoren, og erstatt matrisen på linje 25 (hmacKey) med den du kopierte fra nettstedet.

Etter å ha dobbeltsjekket hver ledningstilkobling, må du kontrollere at RTC-modulen har en myntcelle i den, og koble Arduino til den bærbare datamaskinen ved hjelp av en USB-minikabel og laste opp den vedlagte skissen.

Etter opplasting, når du trykker på knappen, skal det vises et tall på skjermen. Hvis du laster ned Google Authenticator -appen på en smarttelefon og går tilbake til nettstedet som ble brukt til å generere HEX -matrisen, skanner QR -koden eller skriver "Google Authenticator -koden" i appen, bør du se et nummer som vises i appen. Hvis alt fungerer som det skal, når du trykker på trykknappen, skal de fire sifrene som vises, stemme overens med de fire første av den gjeldende koden som vises på smarttelefonappen. Hvis dette ikke er tilfelle, må du kontrollere at datamaskinen som brukes til å laste opp Arduino -koden er satt til UTC -tid, og prøv igjen.

Trinn 2: Overføring til PCB

Overføring til PCB
Overføring til PCB
Overføring til PCB
Overføring til PCB

Etter at du har kontrollert at alt er i orden, kan du overføre komponentene til kretskortet og lodde alt sammen, men du synes det passer. Jeg har lagt ved et PCB -diagram i tillegg til Fritzing -filen (tilgjengelig her). Vær oppmerksom på at jeg plasserte alle komponentene på toppen av brettet for estetikk, men kan også monteres under og deretter innelukkes i et slags hus for å gjøre det renere. Jeg klippet og varmlimte popsicle -pinner farget inn med Sharpie på sidene av kretskortet for å lage en provisorisk boks for enheten. Et annet valgfritt trinn er å feste en 9-volts batteriklemme til VIN- og GND-pinnene på Arduino, slik at den blir batteridrevet.

Trinn 3: Ferdig

Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!
Ferdig!

Slik ble min ferdige generator, hvis du fulgte med og lagde en selv, del den nedenfor!

Sørg for å stemme min Instructable for STEM -konkurransen hvis du finner det passende, og legg igjen en kommentar/eventuelle spørsmål du måtte ha nedenfor!

Anbefalt: