Sadržaj:
Video: Arduino TOTP generator: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
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:
- 1x Arduino Nano (Amazon)
- 1x DS3231 AT24C32 Modul sata u stvarnom vremenu (RTC) (Amazon)
- 1x SH5461AS zajednička katoda, 4 znamenke, 7-segmentni (Amazon)
- 1x gumb (Amazon)
- 1x 10k otpornik (Amazon)
- DODATNO 1x 5 x 7 cm PCB (Amazon)
- OPCIONALNA žica za lemljenje na PCB
- NEOBVEZNO 1x Oglasna ploča za testiranje (Amazon)
Korak 1: 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
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
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:
Kako koristiti Arduino DDS generator frekvencijskih signala AD9850: 7 koraka
Kako koristiti Arduino DDS generator frekvencijskih signala AD9850: U ovom ćemo vodiču naučiti kako napraviti generator frekvencijskih signala koristeći modul AD9850 i Arduino. Pogledajte video! Napomena: Uspio sam povećati frekvenciju do +50MHz, ali kvaliteta signala postaje bolja gore s višim frekvencijama
Generator RF signala 100 KHz-600 MHZ na DDS AD9910 Arduino štitu: 5 koraka
Generator RF signala 100 KHz-600 MHZ na DDS AD9910 Arduino štitu: Kako napraviti niski šum, visoku preciznost, stabilan RF generator (s AM, FM modulacijom) na Arduinu
Generator: Fidget Spinner Generator 3 u 1: 3 koraka
Generator: Fidget Spinner Generator 3 u 1: generator fidget spinner -a 3 u 1 - sada možete konfigurirati svoj fidget spinner generator (tri izbora) mikrogenerator koristi 3 neodimijske kugle i 3 neodimijska diska (LED i mala zavojnica manje) Pronađite nas NA INSTAGRAM -u i pogledajte jednostavan električni
Glazbeni generator temeljen na vremenu (Midi generator temeljen na ESP8266): 4 koraka (sa slikama)
Glazbeni generator temeljen na vremenu (Midi Generator temeljen na ESP8266): Bok, danas ću vam objasniti kako napraviti vlastiti mali glazbeni generator temeljen na vremenu. Baziran je na ESP8266, koji je poput Arduina, a reagira na temperaturu, kišu i intenzitet svjetla. Ne očekujte da će to učiniti cijele pjesme ili akorde
Generator - DC generator pomoću Reed prekidača: 3 koraka
Generator - DC generator pomoću Reed sklopke: Jednostavni DC generator Generator istosmjerne struje (DC) je električni stroj koji pretvara mehaničku energiju u istosmjernu struju. Važno: Generator istosmjerne struje (DC) može se koristiti kao istosmjerni motor bez ikakvih konstrukcija promjene