Talaan ng mga Nilalaman:

Arduino TOTP Generator: 3 Hakbang
Arduino TOTP Generator: 3 Hakbang

Video: Arduino TOTP Generator: 3 Hakbang

Video: Arduino TOTP Generator: 3 Hakbang
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Nobyembre
Anonim
Tagabuo ng TOTP ng Arduino
Tagabuo ng TOTP ng Arduino
Tagabuo ng TOTP ng Arduino
Tagabuo ng TOTP ng Arduino
Tagabuo ng TOTP ng Arduino
Tagabuo ng TOTP ng Arduino

Inspirasyon

Ang pagkakaroon ng isang kaibigan na may interes sa cryptography at seguridad, nais kong lumikha ng perpektong regalo sa kaarawan.

* Ito ay isang proyekto na ginawa ko bilang regalo sa kaarawan at nilikha sa loob ng mahigpit na paghihigpit ng oras (patawarin ang magulo na pagkakagawa)

TANDAAN: Ang henerasyon ng TOTP na ginagamit sa proyektong ito ay bumubuo at gumagamit ng 6 na mga digit na code, ngunit dahil sa aking kasalukuyang nasa-kamay na hardware, pinili kong putulin ang sumasunod na 2 na digit at ipakita at gamitin ang 4, masasabi (ngunit hindi lubos) na binabawasan ang seguridad.

Pangkalahatang Impormasyon

Ang proyektong ito ay bumubuo ng isang bagong code bawat 30 segundo gamit ang isang preshared key at kasalukuyang oras (na sinusubaybayan ng paggamit ng real-time na module ng orasan) at ipinapakita ito sa display kapag pinindot ang pindutan. Ang pinaka-karaniwang kaso ng paggamit ay ang pag-verify ng dalawang-kadahilanan batay sa isang Oras na Batas sa Oras (TOTP) at One Time Password (HOTP) na nakabatay sa HMAC para sa pagpapatotoo.

Ang TOTP ay isang algorithm na kumakalkula ng isang isang beses na password mula sa isang nakabahaging lihim na key at sa kasalukuyang oras. Ang HTOP ay isang algorithm na gumagamit ng HMAC algorithm upang makabuo ng isang isang beses na password.

Ang mga kumpanya tulad ng Google, Microsoft, at Steam ay gumagamit na ng teknolohiya ng TOTP para sa kanilang two-factor authentication

Kagiliw-giliw na mga Link

Artikulo na nagpapaliwanag kung paano ginagamit ng Google ang teknolohiyang ito upang patunayan ang mga gumagamit -

Pagpapatupad ng JavaScript ng HOTP at TOTP na maaaring magamit kapag lumilikha ng software na gumagamit ng proyektong ito -

Crytographic library para sa Arduino na ginamit sa proyektong ito -

TOTP Paper -

Antas ng kadalubhasaan

Ang Instructable na ito ay para sa mga taong mahilig na interesado sa seguridad at maaaring ipatupad ang isang magandang sangkap ng hardware sa pagbuo ng kanilang TOTP. Ang itinuturo na ito ay nakasulat para sa isang madla na nauunawaan na ang mga pangunahing kaalaman sa pagbibigay kahulugan ng mga diagram ng electronics at panimulang programa, ngunit kung balak mong sundin nang eksakto ang Instructable na ito nang eksakto, huwag mag-alala kung wala kang karanasan, at huwag mag-atubiling magtanong ng pababa sa mga komento! Bukod dito, ang proyekto ay maaaring maging kawili-wili para sa mas may karanasan na mga gumagawa din dahil ang pangwakas na produkto ay hindi lamang isang magandang piraso na mayroon sa paligid (sa palagay ko), ngunit may napakaraming potensyal para sa pagpapalawak at mga bagong tampok na walang gulo.

Mga gamit

Mga Materyales:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Real-Time Clock (RTC) Module (Amazon)
  3. 1x SH5461AS Karaniwang Cathode 4 na digit na 7-segment (Amazon)
  4. 1x Pushbutton (Amazon)
  5. 1x 10k Resistor (Amazon)
  6. OPSYONAL 1x 5x7cm PCB (Amazon)
  7. OPSYONAL na Wire para sa paghihinang sa PCB
  8. OPSYONAL na 1x Breadboard para sa pagsubok (Amazon)

Hakbang 1: Assembly at Pagsubok

Assembly at Pagsubok
Assembly at Pagsubok
Assembly at Pagsubok
Assembly at Pagsubok
Assembly at Pagsubok
Assembly at Pagsubok

Ipunin ang lahat ng mga sangkap sa breadboard at i-wire ang mga ito ayon sa naka-attach na diagram ng mga kable (Narito ang file na Fritzing).

Tiyaking mayroon kang naka-install na Arduino IDE (maaari itong matagpuan sa online kung hindi mo) at i-install ang mga sumusunod na aklatan:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

I-download ang kalakip na sketch (maaari ring ma-access dito: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), at buksan ito gamit ang Arduino IDE. Buksan ang link na ito (https://www.lucadentella.it/OTP/) at maglagay ng anumang pangalan sa patlang ng pangalan ng account, at isang pasadyang lihim na susi (10 character ang haba) sa sumusunod na patlang, siguraduhing mai-save ang pareho ng mga halagang iyon sa isang ligtas na lugar para sa pag-backup. Kopyahin ang nilalaman ng patlang na "Arduino HEX array:", at bumalik sa editor ng Arduino, pinapalitan ang array sa linya 25 (hmacKey) sa iyong kinopya mula sa site.

Matapos i-double check ang bawat koneksyon sa wire, tiyaking ang module ng RTC ay mayroong coin cell dito, at ikonekta ang Arduino sa iyong laptop gamit ang isang USB mini cord, at i-upload ang naka-attach na sketch.

Matapos ang pag-upload, kapag pinindot ang pindutan, dapat na lumabas ang isang numero sa screen. Kung na-download mo ang Google Authenticator app sa isang smartphone at bumalik sa site na ginamit upang makabuo ng HEX array, i-scan ang QR code o nagta-type ang "Google Authenticator code" sa app, dapat mong makita ang isang bilang na ipinakita sa app. Kung gumagana ang lahat nang tama, kapag pinindot mo ang pushbutton, ang 4 na digit na ipinapakita ay dapat tumugma sa unang 4 ng kasalukuyang code na ipinakita sa smartphone app. Kung hindi ito ang kadahilanan, tiyaking ang computer na ginagamit upang mai-upload ang Arduino code ay nakatakda sa oras ng UTC at subukang muli.

Hakbang 2: Paglilipat sa PCB

Paglilipat sa PCB
Paglilipat sa PCB
Paglilipat sa PCB
Paglilipat sa PCB

Matapos matiyak na ang lahat ay nasa maayos na pagkakasunud-sunod, maaari mong ilipat ang mga sangkap sa PCB at solder ang lahat nang magkasama gayunpaman na mukhang fit ka. Nag-attach ako ng isang diagram ng PCB bilang karagdagan sa Fritzing file (magagamit dito). Tandaan na inilagay ko ang lahat ng mga bahagi sa tuktok ng board para sa mga aesthetics, ngunit maaari ding mai-mount sa ilalim at pagkatapos ay nakapaloob sa isang uri ng pabahay upang gawing mas malinis ito. Pinutol ko at maiinit ang nakadikit na mga stick ng popsicle na may kulay na Sharpie sa mga gilid ng PCB upang lumikha ng isang pansamantalang kahon para sa yunit. Ang isa pang opsyonal na hakbang ay upang maglakip ng isang 9-volt na clip ng baterya sa mga pin ng VIN at GND ng Arduino, ginagawa itong pinapatakbo ng baterya.

Hakbang 3: Tapos na

Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!
Tapos na!

Ito ang naging resulta ng aking nakumpletong generator, kung sumunod ka at gumawa ng isa sa iyong sarili, ibahagi ito sa ibaba!

Siguraduhing iboto ang aking Makatuturo para sa STEM Contest kung sa tingin mo ay naaangkop, at mag-iwan ng komento / anumang mga katanungan na maaaring mayroon ka sa ibaba!

Inirerekumendang: