Talaan ng mga Nilalaman:
Video: Arduino TOTP Generator: 3 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
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:
- 1x Arduino Nano (Amazon)
- 1x DS3231 AT24C32 Real-Time Clock (RTC) Module (Amazon)
- 1x SH5461AS Karaniwang Cathode 4 na digit na 7-segment (Amazon)
- 1x Pushbutton (Amazon)
- 1x 10k Resistor (Amazon)
- OPSYONAL 1x 5x7cm PCB (Amazon)
- OPSYONAL na Wire para sa paghihinang sa PCB
- OPSYONAL na 1x Breadboard para sa pagsubok (Amazon)
Hakbang 1: 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
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
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:
Paano Gumamit ng Arduino DDS Frequency Signal Generator AD9850: 7 Mga Hakbang
Paano Gumamit ng Arduino DDS Frequency Signal Generator AD9850: Sa Tutorial na ito matututunan natin kung paano gumawa ng isang Frequency Signal Generator na gumagamit ng isang module na AD9850 at Arduino. Panoorin ang Video! Tandaan: Nagawa kong makakuha ng dalas hanggang sa + 50MHz ngunit nakakakuha ang kalidad ng signal mas masahol pa sa mas mataas na mga frequency
4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang
4-20ma Generator / Tester Gamit ang Arduino: 4-20mAng mga generator ay magagamit sa ebay, ngunit para sa isang pag-ibig ang bahagi ng DIY ng mga bagay at paggamit ng mga bahagi na inilalagay ko sa paligid. Nais kong subukan ang mga analog na input ng aming PLC upang mapatunayan ang aming pagbabasa ng scada at upang subukan ang output ng 4-20mA na mga instrumento. Mayroong loa
Generator: Fidget Spinner Generator 3 sa 1: 3 Mga Hakbang
Generator: Fidget Spinner Generator 3 in 1: fidget spinner generator 3 in 1 - ngayon ay maaari mong i-configure ang iyong fidget spinner generator (tatlong mga pagpipilian) ang micro generator ay gumagamit ng 3 neodymium spheres at 3 neodymium discs (humantong at maliit na coil iron na mas kaunti) Hanapin kami SA INSTAGRAM at makita ang isang simpleng kuryente
Weather based Music Generator (ESP8266 Batay sa Midi Generator): 4 na Hakbang (na may Mga Larawan)
Weather based Music Generator (ESP8266 Batay sa Midi Generator): Kumusta, ngayon ipapaliwanag ko kung paano gumawa ng iyong sariling maliit na Weather based Music generator. Batay ito sa isang ESP8266, na kung saan ay tulad ng isang Arduino, at tumutugon ito sa temperatura, ulan at gaanong lakas. Huwag asahan na makagawa ito ng buong mga kanta o chord progr
Generator - DC Generator Gamit ang Reed Switch: 3 Hakbang
Generator mga pagbabago