Obsah:

Generátor Arduino TOTP: 3 kroky
Generátor Arduino TOTP: 3 kroky

Video: Generátor Arduino TOTP: 3 kroky

Video: Generátor Arduino TOTP: 3 kroky
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Júl
Anonim
Generátor Arduino TOTP
Generátor Arduino TOTP
Generátor Arduino TOTP
Generátor Arduino TOTP
Generátor Arduino TOTP
Generátor Arduino TOTP

Inšpirácia

Keďže mám priateľa so záujmom o kryptografiu a bezpečnosť, chcel som vytvoriť perfektný narodeninový darček.

*Toto je projekt, ktorý som vyrobil ako darček k narodeninám a bol vytvorený v tesnom časovom limite (prepáčte, chaotické spracovanie)

POZNÁMKA: Generácia TOTP, ktorá sa používa v tomto projekte, generuje a používa 6-ciferné kódy, ale kvôli môjmu súčasnému hardvéru som sa rozhodol skrátiť posledné 2 číslice a zobraziť a používať 4, pravdepodobne (ale nie výrazne) zníženie bezpečnosť.

Všeobecné informácie

Tento projekt generuje každých 30 sekúnd nový kód pomocou vopred zdieľaného kľúča a aktuálneho času (ktorý sa sleduje pomocou modulu hodín reálneho času) a po stlačení tlačidla ho zobrazí na displeji. Najbežnejším prípadom použitia by bolo dvojfaktorové overenie na základe časového jednorazového hesla (TOTP) a jednorazového hesla na základe HMAC (HOTP) na autentifikáciu.

TOTP je algoritmus, ktorý vypočítava jednorazové heslo zo zdieľaného tajného kľúča a aktuálny čas. HTOP je algoritmus, ktorý na vygenerovanie jednorazového hesla používa algoritmus HMAC.

Spoločnosti ako Google, Microsoft a Steam už používajú technológiu TOTP na dvojfaktorovú autentifikáciu

Zaujímavé odkazy

Článok vysvetľujúci, ako spoločnosť Google používa túto technológiu na autentifikáciu používateľov-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

Implementácia JavaScript HOTP a TOTP v JavaScripte, ktorá môže byť použitá pri vytváraní softvéru využívajúceho tento projekt -

Krytografická knižnica pre Arduino použitá v tomto projekte -

Papier TOTP -

Úroveň odbornosti

Tento návod je pre nadšencov, ktorí sa zaujímajú o bezpečnosť a môžu chcieť implementovať pekný hardvérový komponent na generovanie svojho TOTP. Tento návod je určený pre publikum, ktoré už rozumie základom interpretácie diagramov elektroniky a základného programovania, ale ak sa plánujete riadiť presne týmto návodom, nerobte si starosti, ak nemáte žiadne skúsenosti a pokojne sa pýtajte na nižšie uvedené otázky. komentáre! Okrem toho môže byť projekt zaujímavý aj pre skúsenejších tvorcov, pretože konečný produkt nie je len príjemným kúskom (podľa mňa), ale má veľký potenciál na rozšírenie a nové funkcie bez väčších problémov.

Zásoby

Materiály:

  1. 1x Arduino Nano (Amazon)
  2. 1x modul DS3231 AT24C32 s hodinami v reálnom čase (RTC) (Amazon)
  3. 1x SH5461AS Common Cathode 4-miestny 7-segmentový (Amazon)
  4. 1x tlačidlo (Amazon)
  5. 1x 10k odpor (Amazon)
  6. VOLITELNE 1x 5x7cm PCB (Amazon)
  7. VOLITEĽNÉ Vodič na spájkovanie na DPS
  8. VOLITEĽNÉ 1x Breadboard na testovanie (Amazon)

Krok 1: Montáž a testovanie

Montáž a testovanie
Montáž a testovanie
Montáž a testovanie
Montáž a testovanie
Montáž a testovanie
Montáž a testovanie

Zostavte všetky diely na dosku a zapojte ich podľa priloženej schémy zapojenia (súbor Fritzing je tu).

Uistite sa, že máte nainštalované IDE Arduino (ak ho nemáte, môžete ho nájsť online) a nainštalujte si nasledujúce knižnice:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Stiahnite si priloženú skicu (je tiež prístupná tu: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) a otvorte ju pomocou Arduino IDE. Otvorte tento odkaz (https://www.lucadentella.it/OTP/) a do poľa pre názov účtu zadajte ľubovoľné meno a do nasledujúceho poľa vlastný tajný kľúč (dlhý 10 znakov). Uistite sa, že ste uložili obe tieto hodnoty. na bezpečnom mieste pre zálohovanie. Skopírujte obsah poľa „Arduino HEX array:“a prepnite späť na editor Arduino, pričom pole na riadku 25 (hmacKey) nahraďte tým, ktoré ste skopírovali z webu.

Po dvojitom skontrolovaní každého káblového pripojenia sa uistite, že modul RTC má v sebe gombíkový článok, a pripojte Arduino k svojmu notebooku pomocou mini kábla USB a nahrajte priložený náčrt.

Po nahraní by sa po stlačení tlačidla malo na obrazovke zobraziť číslo. Ak si do smartfónu stiahnete aplikáciu Google Authenticator a vrátite sa na webovú stránku slúžiacu na generovanie HEX poľa, skenovaním kódu QR alebo zadaním „kódu Google Authenticator“do aplikácie, malo by sa vám v aplikácii zobraziť číslo. Ak všetko funguje správne, po stlačení tlačidla by sa 4 zobrazené číslice mali zhodovať s prvými 4 z aktuálneho kódu zobrazeného v aplikácii pre smartfóny. Ak to tak nie je, uistite sa, že počítač, ktorý sa používa na odoslanie kódu Arduino, je nastavený na čas UTC, a skúste to znova.

Krok 2: Prenos na DPS

Prenos na DPS
Prenos na DPS
Prenos na DPS
Prenos na DPS

Keď sa ubezpečíte, že je všetko v prevádzkyschopnom stave, môžete komponenty previesť na dosku plošných spojov a spájkovať všetko dohromady, ako sa vám bude zdať vhodné. K súboru Fritzing (k dispozícii tu) som pripojil diagram PCB. Všimnite si toho, že všetky súčiastky som umiestnil na vrchnú stranu dosky kvôli estetike, ale dá sa tiež namontovať pod ňu a potom uzavrieť v nejakom kryte, aby bola čistejšia. Narežel a za horúca zlepené tyčinky od nanukov zafarbené Sharpie po stranách DPS, aby som vytvoril provizórny box pre jednotku. Ďalším voliteľným krokom je pripevnenie 9-voltovej spony na batériu k pinom VIN a GND Arduina, aby bolo možné napájať batériu.

Krok 3: Hotovo

Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!
Hotovo!

Takto dopadol môj dokončený generátor, ak ste sa ním riadili a vyrobili ste ho sami, podeľte sa o to nižšie!

Ak to uznávate za vhodné, hlasujte za môj pokyn do súťaže STEM a zanechajte komentár/otázky, ktoré môžete mať nižšie!

Odporúča: