Sadržaj:

Arduino TOTP generator: 3 koraka
Arduino TOTP generator: 3 koraka

Video: Arduino TOTP generator: 3 koraka

Video: Arduino TOTP generator: 3 koraka
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Srpanj
Anonim
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator
Arduino TOTP generator

Inspiracija

Imajući prijatelja koji se zanima za kriptografiju i sigurnost, htio sam stvoriti savršen rođendanski poklon.

*Ovo je projekt koji sam napravio kao rođendanski poklon i nastao je u kratkim vremenskim ograničenjima (oprostite na neurednoj izradi)

NAPOMENA: TOTP generacija koja se koristi u ovom projektu generira i koristi šestoznamenkaste kodove, ali zbog trenutnog hardvera pri ruci, odlučio sam izrezati 2 znamenke i prikazati te koristiti 4, vjerojatno (ali ne uvelike) smanjujući sigurnost.

Opće informacije

Ovaj projekt generira novi kôd svakih 30 sekundi pomoću unaprijed podijeljene tipke i trenutnog vremena (koje se prati pomoću modula sata u stvarnom vremenu) i prikazuje ga na zaslonu kada se pritisne tipka. Najčešći slučaj uporabe bila bi dvofaktorska provjera temeljena na jednokratnoj vremenskoj zaporci (TOTP) i jednokratnoj lozinci (HOTP) na temelju HMAC-a za provjeru autentičnosti.

TOTP je algoritam koji izračunava jednokratnu lozinku iz zajedničkog tajnog ključa i trenutno vrijeme. HTOP je algoritam koji koristi HMAC algoritam za generiranje jednokratne lozinke.

Tvrtke kao što su Google, Microsoft i Steam već koriste TOTP tehnologiju za svoju dvofaktorsku autentifikaciju

Zanimljivi linkovi

Članak koji objašnjava kako Google koristi ovu tehnologiju za provjeru autentičnosti korisnika-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript implementacija HOTP -a i TOTP -a koji se mogu koristiti pri izradi softvera koji koristi ovaj projekt -

Kritografska knjižnica za Arduino korištena u ovom projektu -

TOTP rad -

Razina stručnosti

Ovaj Instructable namijenjen je entuzijastima koji su zainteresirani za sigurnost i možda bi htjeli implementirati lijepu hardversku komponentu u generaciju svog TOTP -a. Ova instrukcija je napisana za publiku koja već razumije osnove tumačenja elektroničkih dijagrama i rudimentarnog programiranja, ali ako namjeravate jednostavno točno slijediti ovaj Instructable, ne brinite ako nemate iskustva i slobodno postavljajte pitanja u komentari! Nadalje, projekt može biti zanimljiv i iskusnijim proizvođačima budući da konačni proizvod nije samo lijep komad (po mom mišljenju), već ima toliko potencijala za proširenje i nove značajke bez puno muke.

Pribor

Materijali:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Modul sata u stvarnom vremenu (RTC) (Amazon)
  3. 1x SH5461AS zajednička katoda, 4 znamenke, 7-segmentni (Amazon)
  4. 1x gumb (Amazon)
  5. 1x 10k otpornik (Amazon)
  6. DODATNO 1x 5 x 7 cm PCB (Amazon)
  7. OPCIONALNA žica za lemljenje na PCB
  8. NEOBVEZNO 1x Oglasna ploča za testiranje (Amazon)

Korak 1: Montaža i testiranje

Montaža i testiranje
Montaža i testiranje
Montaža i testiranje
Montaža i testiranje
Montaža i testiranje
Montaža i testiranje

Sastavite sve komponente na matičnoj ploči i povežite ih prema priloženom dijagramu ožičenja (datoteka Fritzing je ovdje).

Provjerite jeste li instalirali Arduino IDE (može se pronaći na internetu ako nemate) i instalirajte sljedeće knjižnice:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Preuzmite priloženu skicu (također joj možete pristupiti ovdje: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) i otvorite je pomoću Arduino IDE -a. Otvorite ovu vezu (https://www.lucadentella.it/OTP/) i unesite bilo koje ime u polje za naziv računa, a prilagođeni tajni ključ (dugačak 10 znakova) u sljedeće polje, pazeći da spremite obje vrijednosti na sigurnom mjestu za sigurnosnu kopiju. Kopirajte sadržaj polja "Arduino HEX array:" i vratite se na Arduino editor, zamijenivši niz u retku 25 (hmacKey) onim koji ste kopirali sa web stranice.

Nakon što ste dvaput provjerili svaku žičanu vezu, provjerite ima li modul RTC novčanu ćeliju i povežite Arduino s prijenosnim računalom pomoću USB mini kabela te prenesite priloženu skicu.

Nakon prijenosa, kada se pritisne gumb, na zaslonu bi se trebao pojaviti broj. Ako preuzmete aplikaciju Google Authenticator na pametni telefon i vratite se na web mjesto koje se koristi za generiranje HEX niza, skeniranje QR koda ili upisivanje "koda Google autentifikatora" u aplikaciju, trebali biste vidjeti broj prikazan u aplikaciji. Ako sve radi ispravno, kad pritisnete gumb, prikazane 4 znamenke trebale bi odgovarati prve 4 trenutnog koda prikazanog u aplikaciji za pametni telefon. Ako to nije slučaj, provjerite je li računalo koje se koristi za učitavanje Arduino koda postavljeno na UTC vrijeme i pokušajte ponovno.

Korak 2: Prijenos na PCB

Prijenos na PCB
Prijenos na PCB
Prijenos na PCB
Prijenos na PCB

Nakon što se uvjerite da je sve u ispravnom stanju, možete prenijeti komponente na tiskanu ploču i sve zajedno lemiti kako vam se čini. Uz datoteku Fritzing priložio sam dijagram PCB -a (dostupan ovdje). Imajte na umu da sam sve komponente stavio na gornju stranu ploče radi estetike, ali se mogu postaviti i ispod, a zatim zatvoriti u nekakvo kućište kako bi bilo čišće. Izrezao sam i vruće zalijepljene štapiće od sladoleda obojene Sharpiem sa stranica PCB -a kako bih stvorio improviziranu kutiju za jedinicu. Drugi izborni korak je pričvršćivanje 9-voltne kopče za bateriju na VIN i GND pinove Arduina, čime će raditi na baterije.

Korak 3: Završeno

Završeno!
Završeno!
Završeno!
Završeno!
Završeno!
Završeno!

Ovako je ispao moj dovršeni generator, ako ste ga pratili i sami napravili, podijelite ga u nastavku!

Glasajte za moj Instructable za STEM natjecanje ako smatrate da je potrebno, a dolje ostavite komentar/sva pitanja koja imate!

Preporučeni: