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, Novembar
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, želio 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 zadnje 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 podijeljenog ključa i trenutnog vremena (koje se prati korištenjem modula sata u stvarnom vremenu) i prikazuje ga na ekranu kada se pritisne dugme. Najčešći slučaj upotrebe bila bi dvofaktorska provjera zasnovana na vremenski zasnovanoj jednokratnoj lozinki (TOTP) i jednokratnoj lozinci zasnovanoj na HMAC-u (HOTP) 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.

Kompanije 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 autentifikaciju korisnika-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript implementacija HOTP -a i TOTP -a koji se mogu koristiti pri kreiranju softvera pomoću ovog projekta -

Kritografska biblioteka za Arduino korištena u ovom projektu -

TOTP dokument -

Nivo stručnosti

Ovaj Instructable je za entuzijaste koje zanima sigurnost i možda bi htjeli implementirati lijepu hardversku komponentu u generaciju svog TOTP -a. Ovo uputstvo je napisano za publiku koja već razumije osnove tumačenja elektronskih 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 funkcije bez mnogo muke.

Supplies

Materijali:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Modul sata u realnom vremenu (RTC) (Amazon)
  3. 1x SH5461AS zajednička katoda, 4 znamenke, 7-segment (Amazon)
  4. 1x dugme (Amazon)
  5. 1x 10k otpornik (Amazon)
  6. NEOBVEZNO 1x 5x7 cm PCB (Amazon)
  7. OPCIONALNA žica za lemljenje na PCB
  8. NEOBVEZNO 1x Okvir 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 biblioteke:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Preuzmite skicu u prilogu (kojoj možete pristupiti i 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 sačuvate 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čunarom pomoću mini USB kabela i prenesite priloženu skicu.

Nakon učitavanja, kada se pritisne dugme, broj bi se trebao pojaviti na ekranu. 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, pritiskom na tipku 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 ponovo.

Korak 2: Prijenos na PCB

Prenos na PCB
Prenos na PCB
Prenos na PCB
Prenos na PCB

Nakon što se uvjerite da je sve u ispravnom stanju, možete prenijeti komponente na tiskanu ploču i lemiti sve zajedno kako god vam se čini. Uz datoteku Fritzing priložio sam dijagram PCB -a (dostupan ovdje). Imajte na umu da sam stavio sve komponente na vrh ploče radi estetike, ali mogu se montirati i ispod, a zatim zatvoriti u neku vrstu kućišta kako bi bilo čišće. Rezao sam i vruće lijepljene štapiće od slatkiša obojen Sharpiem sa stranica PCB -a kako bih stvorio improviziranu kutiju za jedinicu. Još jedan 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

Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!
Gotovo!

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

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

Preporučuje se: