INHOUDSOPGAWE:

Arduino TOTP Generator: 3 stappe
Arduino TOTP Generator: 3 stappe

Video: Arduino TOTP Generator: 3 stappe

Video: Arduino TOTP Generator: 3 stappe
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Julie
Anonim
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator

Inspirasie

Met 'n vriend wat belangstel in kriptografie en sekuriteit, wou ek die perfekte verjaardaggeskenk skep.

*Dit is 'n projek wat ek as 'n verjaarsdaggeskenk gemaak het en wat binne 'n beperkte tydsbeperking geskep is (verskoon die morsige vakmanskap)

OPMERKING: Die TOTP-generasie wat in hierdie projek gebruik word, genereer en gebruik kodes van 6 syfers, maar as gevolg van my huidige hardeware, het ek besluit om die agterste 2 syfers af te sny en te vertoon en 4 te gebruik, waarskynlik (maar nie baie nie) sekuriteit.

Algemene inligting

Hierdie projek genereer elke 30 sekondes 'n nuwe kode met behulp van 'n vooraf gedeelde sleutel en die huidige tyd (wat bygehou word om die real-time klokmodule te gebruik) en vertoon dit op die skerm wanneer die knoppie ingedruk word. Die mees algemene gebruik sou twee-faktor-verifikasie wees, gebaseer op tydgebaseerde eenmalige wagwoord (TOTP) en HMAC-gebaseerde eenmalige wagwoord (HOTP) vir verifikasie.

TOTP is 'n algoritme wat 'n eenmalige wagwoord uit 'n gedeelde geheime sleutel en die huidige tyd bereken. HTOP is 'n algoritme wat die HMAC-algoritme gebruik om 'n eenmalige wagwoord te genereer.

Ondernemings soos Google, Microsoft en Steam gebruik reeds TOTP-tegnologie vir hul tweefaktor-verifikasie

Interessante skakels

Artikel wat verduidelik hoe Google hierdie tegnologie gebruik om gebruikers te verifieer-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript -implementering van HOTP en TOTP wat gebruik kan word by die skep van sagteware wat hierdie projek gebruik -

Krytografiese biblioteek vir Arduino wat in hierdie projek gebruik word -

TOTP Paper -

Kundigheidsvlak

Hierdie instruksie is vir liefhebbers wat belangstel in veiligheid en moontlik 'n goeie hardeware -komponent wil implementeer vir die generasie van hul TOTP. Hierdie instruksies is geskryf vir 'n gehoor wat reeds die basiese beginsels van die interpretasie van elektronika -diagramme en rudimentêre programmering verstaan, maar as u van plan is om hierdie instruksie presies te volg, moenie bekommerd wees as u geen ervaring het nie, en stel gerus vrae hieronder. kommentaar! Die projek kan ook interessant wees vir meer ervare vervaardigers, aangesien die finale produk nie net 'n goeie stuk is nie (na my mening), maar ook soveel potensiaal vir uitbreiding en nuwe funksies sonder veel moeite.

Voorrade

Materiaal:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Real-Time Clock (RTC) module (Amazon)
  3. 1x SH5461AS Algemene katode 7-syfer-7-segment (Amazon)
  4. 1x drukknop (Amazon)
  5. 1x 10k weerstand (Amazon)
  6. OPTIONELE 1x 5x7cm PCB (Amazon)
  7. OPTIONELE Draad vir soldeer aan PCB
  8. Opsioneel 1x broodbord om te toets (Amazon)

Stap 1: Montering en toetsing

Samestelling en toetsing
Samestelling en toetsing
Samestelling en toetsing
Samestelling en toetsing
Samestelling en toetsing
Samestelling en toetsing

Monteer al die komponente op die broodbord en bedraad dit volgens die aangehegte bedradingsdiagram (Fritzing -lêer is hier).

Maak seker dat u die Arduino IDE geïnstalleer het (dit kan aanlyn gevind word indien nie) en installeer die volgende biblioteke:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Laai die aangehegte skets af (kan ook hier verkry word: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) en maak dit oop met die Arduino IDE. Open hierdie skakel (https://www.lucadentella.it/OTP/) en voer enige naam in die rekeningnaamveld in, en 'n persoonlike geheime sleutel (10 karakters lank) in die volgende veld, en maak seker dat u albei die waardes stoor op 'n veilige plek vir rugsteun. Kopieer die inhoud van die veld "Arduino HEX array:" en keer terug na die Arduino -redakteur en vervang die skikking op reël 25 (hmacKey) met die een wat u van die webwerf gekopieer het.

Nadat u elke draadverbinding gekontroleer het, moet u seker maak dat die RTC-module 'n muntstuk bevat en die Arduino met 'n USB-mini-koord op u skootrekenaar koppel en die aangehegte skets oplaai.

Na die oplaai, as die knoppie ingedruk word, moet 'n nommer op die skerm verskyn. As u die Google Authenticator -app op 'n slimfoon aflaai en teruggaan na die webwerf wat gebruik is om die HEX -skikking te genereer, die QR -kode te skandeer of die 'Google Authenticator -kode' in die app in te tik, moet 'n nommer in die app verskyn. As alles reg werk, moet die vier syfers wat vertoon word, ooreenstem met die eerste 4 van die huidige kode wat op die slimfoon -app verskyn as u op die drukknop druk. As dit nie die geval is nie, moet u seker maak dat die rekenaar wat gebruik word om die Arduino -kode op te laai, ingestel is op UTC -tyd en probeer weer.

Stap 2: Oordrag na PCB

Oordrag na PCB
Oordrag na PCB
Oordrag na PCB
Oordrag na PCB

Nadat u seker gemaak het dat alles in werkende toestand is, kan u die komponente na die printplaat oordra en alles aanmekaar soldeer, soos u ook al pas. Ek het 'n PCB -diagram bygevoeg, benewens die Fritzing -lêer (hier beskikbaar). Let op dat ek al die komponente bo -op die bord geplaas het vir estetika, maar ek kan ook daaronder gemonteer word en dan in 'n behuising toegemaak word om dit skoon te maak. Ek sny en warm vasgeplakte popsicle -stokkies wat met Sharpie ingekleur is, aan die kante van die PCB om 'n tydelike boks vir die eenheid te skep. 'N Ander opsionele stap is om 'n 9 volt-batteryklem aan die VIN- en GND-penne van die Arduino vas te maak, sodat dit op batterye werk.

Stap 3: klaar

Klaar!
Klaar!
Klaar!
Klaar!
Klaar!
Klaar!

Dit is hoe my voltooide kragopwekker uitgekom het, as u self gevolg het en een gemaak het, deel dit hieronder!

Maak seker dat u my Instructable vir die STEM -wedstryd stem as u dit goedvind, en lewer 'n opmerking/vrae wat u hieronder het!

Aanbeveel: