Tartalomjegyzék:

Arduino TOTP generátor: 3 lépés
Arduino TOTP generátor: 3 lépés

Videó: Arduino TOTP generátor: 3 lépés

Videó: Arduino TOTP generátor: 3 lépés
Videó: TOTP Arduino authenticator with USB keyboard emulation 2024, Július
Anonim
Arduino TOTP generátor
Arduino TOTP generátor
Arduino TOTP generátor
Arduino TOTP generátor
Arduino TOTP generátor
Arduino TOTP generátor

Ihlet

Miután volt egy barátom, akit érdekel a kriptográfia és a biztonság, meg akartam teremteni a tökéletes születésnapi ajándékot.

*Ezt a projektet születésnapi ajándékként készítettem, és szűk határidőn belül hoztam létre (elnézést a rendetlen kivitelezésért)

MEGJEGYZÉS: Az ebben a projektben használt TOTP generáció 6 számjegyű kódokat hoz létre és használ, de a jelenlegi hardverem miatt úgy döntöttem, hogy levágom a második számjegyet, és megjelenítem és 4-et használok, vitathatatlanul (de nem nagy mértékben) Biztonság.

Általános információ

Ez a projekt 30 másodpercenként generál egy új kódot egy előre megosztott kulccsal és az aktuális idővel (amelyet nyomon követnek a valós idejű óra modul használatával), és megjeleníti azt a kijelzőn, amikor megnyomja a gombot. A leggyakoribb eset az időalapú egyszeri jelszó (TOTP) és a HMAC-alapú egyszeri jelszó (HOTP) alapú kéttényezős hitelesítés lenne.

A TOTP egy algoritmus, amely egyszeri jelszót számít ki a megosztott titkos kulcsból és az aktuális időből. A HTOP egy algoritmus, amely a HMAC algoritmust használja az egyszeri jelszó létrehozásához.

Az olyan vállalatok, mint a Google, a Microsoft és a Steam, már használják a TOTP technológiát kéttényezős hitelesítésükhöz

Érdekes linkek

Cikk, amely elmagyarázza, hogyan használja a Google ezt a technológiát a felhasználók hitelesítésére-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

A HOTP és a TOTP JavaScript -implementációja, amely használható a projektet használó szoftver létrehozásakor -

A projektben használt Arduino kriptográfiai könyvtár -

TOTP Paper -

Szakértelem szintje

Ez az Instructable azoknak a rajongóknak szól, akik érdeklődnek a biztonság iránt, és szeretnének egy szép hardverkomponenst megvalósítani TOTP -juk generálásához. Ez az oktatóanyag olyan közönségnek készült, aki már érti az elektronikai diagramok értelmezésének és a kezdetleges programozás alapjait, de ha egyszerűen csak követi ezt az utasítást, ne aggódjon, ha nincs tapasztalata, és tegyen fel kérdéseket a Hozzászólások! Ezenkívül a projekt a tapasztaltabb gyártók számára is érdekes lehet, mivel a végtermék nemcsak egy szép darab (szerintem), hanem rengeteg bővítési és új funkcióval rendelkezik, sok gond nélkül.

Kellékek

Anyagok:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 valós idejű óra (RTC) modul (Amazon)
  3. 1x SH5461AS közös katód 4 számjegyű 7 szegmens (Amazon)
  4. 1x nyomógomb (Amazon)
  5. 1x 10k ellenállás (Amazon)
  6. Választható 1x 5x7 cm -es NYÁK (Amazon)
  7. Választható huzal PCB -hez való forrasztáshoz
  8. Választható 1x Breadboard teszteléshez (Amazon)

1. lépés: Összeszerelés és tesztelés

Összeszerelés és tesztelés
Összeszerelés és tesztelés
Összeszerelés és tesztelés
Összeszerelés és tesztelés
Összeszerelés és tesztelés
Összeszerelés és tesztelés

Szerelje össze az összes alkatrészt a kenyértáblán, és kösse be őket a mellékelt kapcsolási rajz szerint (a Fritzing fájl itt található).

Győződjön meg róla, hogy telepítve van az Arduino IDE (ha nem, akkor megtalálható az interneten), és telepítse a következő könyvtárakat:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Töltse le a mellékelt vázlatot (itt is elérhető: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), és nyissa meg az Arduino IDE használatával. Nyissa meg ezt a linket (https://www.lucadentella.it/OTP/), és írjon be bármilyen nevet a fióknév mezőbe, és egy egyéni titkos kulcsot (10 karakter hosszú) a következő mezőbe, ügyelve arra, hogy mindkettőt mentse el biztonságos helyen a biztonsági mentéshez. Másolja ki az "Arduino HEX tömb:" mező tartalmát, és váltson vissza az Arduino szerkesztőbe, és cserélje le a 25. sor (hmacKey) tömbjét a webhelyről másoltra.

Miután kétszer ellenőrizte az egyes vezetékes csatlakozásokat, győződjön meg arról, hogy az RTC modulban van egy érme, és csatlakoztassa az Arduino-t a laptopjához egy USB mini kábel segítségével, és töltse fel a mellékelt vázlatot.

A feltöltés után, amikor megnyomja a gombot, egy számnak kell megjelennie a képernyőn. Ha letölti a Google Hitelesítő alkalmazást egy okostelefonról, és visszamegy a HEX tömb előállításához használt webhelyre, beolvassa a QR -kódot, vagy beírja a "Google Hitelesítő kódot" az alkalmazásba, akkor egy számot kell látnia az alkalmazásban. Ha minden megfelelően működik, a nyomógomb megnyomásakor a megjelenített 4 számjegynek meg kell egyeznie az okostelefon -alkalmazásban megjelenített aktuális kód első négy számával. Ha nem ez a helyzet, győződjön meg arról, hogy az Arduino kód feltöltésére használt számítógép UTC időre van állítva, és próbálja újra.

2. lépés: Átvitel a NYÁK -ra

Átvitel a NYÁK -ra
Átvitel a NYÁK -ra
Átvitel a NYÁK -ra
Átvitel a NYÁK -ra

Miután meggyőződött arról, hogy minden rendben van, átviheti az alkatrészeket a NYÁK -ra, és mindent összeforraszthat, ahogyan megfelelőnek tűnik. A Fritzing fájl mellett (itt érhető el) csatoltam egy NYÁK diagramot. Ne feledje, hogy az összes elemet a tábla tetejére helyeztem az esztétika érdekében, de alá is szerelhető, majd valamilyen házba zárható, hogy tisztább legyen. Sharpie -val színezett popsicle botokat vágtam és melegen ragasztottam a NYÁK oldalához, hogy rögtönzött dobozt hozzak létre az egység számára. Egy másik opcionális lépés egy 9 voltos elemcsipesz csatlakoztatása az Arduino VIN és GND csapjaihoz, így elemmel működik.

3. lépés: Kész

Befejezett!
Befejezett!
Befejezett!
Befejezett!
Befejezett!
Befejezett!

Így alakult ki az elkészült generátorom, ha követte és maga készítette, ossza meg alább!

Feltétlenül szavazzon az Instructable -mre a STEM versenyre, ha úgy látja jónak, és hagyjon megjegyzést/kérdéseket az alábbiakban!

Ajánlott: