Përmbajtje:

Gjenerator Arduino TOTP: 3 hapa
Gjenerator Arduino TOTP: 3 hapa

Video: Gjenerator Arduino TOTP: 3 hapa

Video: Gjenerator Arduino TOTP: 3 hapa
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Nëntor
Anonim
Gjenerator Arduino TOTP
Gjenerator Arduino TOTP
Gjenerator Arduino TOTP
Gjenerator Arduino TOTP
Gjenerator Arduino TOTP
Gjenerator Arduino TOTP

Frymëzim

Duke pasur një mik me interes në kriptografi dhe siguri, doja të krijoja dhuratën perfekte të ditëlindjes.

*Ky është një projekt që kam bërë si dhuratë për ditëlindje dhe është krijuar brenda kufizimeve të ngushta kohore (falni punën e çrregullt)

SHENIM: Brezi TOTP i cili përdoret në këtë projekt gjeneron dhe përdor kode 6 shifrore, por për shkak të pajisjeve të mia aktuale në dorë, unë zgjodha të shkurtoja 2 shifrat e pasme dhe të shfaqja dhe të përdorte 4, duke zvogëluar ndoshta (por jo shumë) sigurinë.

Informacion i pergjithshem

Ky projekt gjeneron një kod të ri çdo 30 sekonda duke përdorur një çelës të paravendosur dhe kohën aktuale (e cila mbahet nën shënimin e përdorimit të modulit të orës në kohë reale) dhe e shfaq atë në ekran kur shtypet butoni. Rasti më i zakonshëm i përdorimit do të ishte verifikimi me dy faktorë i bazuar në Fjalëkalimin One Time të bazuar në Time (TOTP) dhe Fjalëkalimin One Time të bazuar në HMAC (HOTP) për vërtetim.

TOTP është një algoritëm që llogarit një fjalëkalim një herë nga një çelës sekret i përbashkët dhe kohën aktuale. HTOP është një algoritëm që përdor algoritmin HMAC për të gjeneruar një fjalëkalim një herë.

Kompanitë si Google, Microsoft dhe Steam tashmë përdorin teknologjinë TOTP për vërtetimin e tyre me dy faktorë

Lidhje interesante

Artikull që shpjegon se si Google e përdor këtë teknologji për të vërtetuar përdoruesit-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

Zbatimi JavaScript i HOTP dhe TOTP që mund të përdoren kur krijoni softuer duke përdorur këtë projekt -

Biblioteka critografike për Arduino e përdorur në këtë projekt -

Letër TOTP -

Niveli i Ekspertizës

Ky Instructable është për entuziastët që janë të interesuar në siguri dhe mund të duan të zbatojnë një komponent të bukur harduerik në gjenerimin e TOTP -ve të tyre. Ky udhëzues është shkruar për një auditor që tashmë i kupton bazat e interpretimit të diagrameve elektronike dhe programimit rudimentar, por nëse planifikoni thjesht të ndiqni këtë udhëzues saktësisht, mos u shqetësoni nëse nuk keni përvojë dhe mos ngurroni të bëni pyetje në komente! Për më tepër, projekti mund të jetë interesant edhe për krijuesit më me përvojë pasi produkti përfundimtar nuk është vetëm një pjesë e bukur për tu pasur (për mendimin tim), por ka aq shumë potencial për zgjerim dhe veçori të reja pa shumë sherr.

Furnizimet

Materiale:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Moduli i orës në kohë reale (RTC) (Amazon)
  3. 1x SH5461AS Katodi i Përbashkët 4-shifror 7-segmentësh (Amazon)
  4. 1x Pushbutton (Amazon)
  5. Rezistencë 1x 10k (Amazon)
  6. OBJEKTIVAL 1x 5x7cm PCB (Amazon)
  7. OPTIONAL Tela për bashkim në PCB
  8. OBJEKTIVAL 1x Breadboard për testim (Amazon)

Hapi 1: Montimi dhe Testimi

Montimi dhe Testimi
Montimi dhe Testimi
Montimi dhe Testimi
Montimi dhe Testimi
Montimi dhe Testimi
Montimi dhe Testimi

Mblidhni të gjithë përbërësit në tabelën e bukës dhe lidhini ato sipas diagramit të bashkangjitur të telave (skedari i ngrirjes është këtu).

Sigurohuni që keni të instaluar Arduino IDE (mund të gjendet në internet nëse nuk e bëni) dhe instaloni bibliotekat e mëposhtme:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Shkarkoni skicën e bashkangjitur (mund të arrihet edhe këtu: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), dhe hapeni duke përdorur Arduino IDE. Hapni këtë lidhje (https://www.lucadentella.it/OTP/) dhe futni çdo emër në fushën e emrit të llogarisë, dhe një çelës sekret të personalizuar (të gjatë 10 karaktere) në fushën e mëposhtme, duke u siguruar që të ruani të dyja këto vlera në një vend të sigurt për kopje rezervë. Kopjoni përmbajtjen e fushës "Arduino HEX array:" dhe kthehuni përsëri në redaktorin Arduino, duke zëvendësuar grupin në rreshtin 25 (hmacKey) me atë që keni kopjuar nga sajti.

Pasi të keni kontrolluar dy herë secilën lidhje me tela, sigurohuni që moduli RTC të ketë një qelizë monedhe dhe lidheni Arduino me laptopin tuaj duke përdorur një mini kordon USB dhe ngarkoni skicën e bashkangjitur.

Pas ngarkimit, kur shtypet butoni, një numër duhet të shfaqet në ekran. Nëse shkarkoni aplikacionin Google Authenticator në një smartphone dhe ktheheni në faqen e përdorur për të gjeneruar grupin HEX, duke skanuar kodin QR ose duke shtypur "kodin Google Authenticator" në aplikacion, duhet të shihni një numër të treguar në aplikacion. Nëse gjithçka funksionon si duhet, kur shtypni butonin, 4 shifrat e shfaqura duhet të përputhen me 4 të parat e kodit aktual të shfaqur në aplikacionin e smartphone. Nëse nuk është kështu, sigurohuni që kompjuteri që përdoret për të ngarkuar kodin Arduino është vendosur në kohën UTC dhe provoni përsëri.

Hapi 2: Transferimi në PCB

Transferimi në PCB
Transferimi në PCB
Transferimi në PCB
Transferimi në PCB

Pasi të siguroheni që gjithçka është në gjendje pune, mund t'i transferoni komponentët në PCB dhe të lidhni gjithçka së bashku, sidoqoftë që dukeni të arsyeshëm. Unë kam bashkangjitur një skemë PCB përveç skedarit Fritzing (e disponueshme këtu). Vini re se unë i vendosa të gjithë përbërësit në majë të tabelës për estetikë, por gjithashtu mund të montohen nën të dhe më pas të mbyllen në një lloj strehimi për ta bërë atë më të pastër. Kam prerë dhe ngjitur shkopinj të njomë të ngjyrosur me Sharpie në anët e PCB për të krijuar një kuti të improvizuar për njësinë. Një hap tjetër opsional është të lidhni një kapëse baterie 9 volt në kunjat VIN dhe GND të Arduino, duke e bërë atë të funksionojë me bateri.

Hapi 3: Përfundoi

Përfundoi!
Përfundoi!
Përfundoi!
Përfundoi!
Përfundoi!
Përfundoi!

Kështu doli gjeneratori im i përfunduar, nëse e ndoqët dhe e keni bërë vetë, ndani atë më poshtë!

Sigurohuni që të votoni Instructable tim për Konkursin STEM nëse e shihni të arsyeshme dhe lini një koment/çdo pyetje që mund të keni më poshtë!

Recommended: