Sadržaj:
Video: Arduino TOTP generator: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
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:
- 1x Arduino Nano (Amazon)
- 1x DS3231 AT24C32 Modul sata u realnom vremenu (RTC) (Amazon)
- 1x SH5461AS zajednička katoda, 4 znamenke, 7-segment (Amazon)
- 1x dugme (Amazon)
- 1x 10k otpornik (Amazon)
- NEOBVEZNO 1x 5x7 cm PCB (Amazon)
- OPCIONALNA žica za lemljenje na PCB
- NEOBVEZNO 1x Okvir 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 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
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
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:
Kako koristiti Arduino DDS generator frekvencijskih signala AD9850: 7 koraka
Kako se koristi Arduino DDS generator frekvencijskih signala AD9850: U ovom vodiču naučit ćemo kako napraviti generator frekvencijskih signala koristeći AD9850 modul i Arduino. Pogledajte video! Napomena: Uspio sam dobiti frekvenciju do +50MHz, ali kvaliteta signala se poboljšava gore sa 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 (sa 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 sfere i 3 neodimijumska diska (LED i mala zavojnica manje) Pronađite nas NA INSTAGRAM -u i pogledajte jednostavnu električnu
Muzički generator temeljen na vremenu (Midi generator zasnovan na ESP8266): 4 koraka (sa slikama)
Muzički generator temeljen na vremenu (Midi generator zasnovan na ESP8266): Zdravo, danas ću vam objasniti kako napraviti vlastiti mali muzički generator zasnovan na vremenu. Zasnovan 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 prekidača: Jednostavni DC generator Generator istosmjerne struje (DC) je električna mašina koja pretvara mehaničku energiju u istosmjernu struju. Važno: Generator istosmjerne struje (DC) može se koristiti kao motor istosmjerne struje bez ikakve konstrukcije promene