Obsah:

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

Video: Generátor TOTP Arduino: 3 kroky

Video: Generátor TOTP Arduino: 3 kroky
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Červenec
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

Inspirace

Mít přítele se zájmem o kryptografii a bezpečnost, chtěl jsem vytvořit perfektní dárek k narozeninám.

*Toto je projekt, který jsem vytvořil jako dárek k narozeninám a byl vytvořen v omezeném časovém limitu (omluvte nepořádné zpracování)

POZNÁMKA: Generace TOTP, která se používá v tomto projektu, generuje a využívá 6místné kódy, ale vzhledem k mému aktuálnímu hardwaru v ruce jsem se rozhodl zkrátit koncové 2 číslice a zobrazit a využívat 4, pravděpodobně (ale ne výrazně) snížení bezpečnostní.

Obecná informace

Tento projekt generuje každých 30 sekund nový kód pomocí předem sdíleného klíče a aktuálního času (který je sledován pomocí modulu hodin reálného času) a po stisknutí tlačítka jej zobrazí na displeji. Nejběžnějším případem použití by bylo dvoufaktorové ověření založené na časovém jednorázovém hesle (TOTP) a jednorázovém hesle na základě HMAC (HOTP) pro autentizaci.

TOTP je algoritmus, který vypočítává jednorázové heslo ze sdíleného tajného klíče a aktuálního času. HTOP je algoritmus, který pomocí algoritmu HMAC generuje jednorázové heslo.

Společnosti jako Google, Microsoft a Steam již používají technologii TOTP pro své dvoufaktorové ověřování

Zajímavé odkazy

Článek vysvětlující, jak Google používá tuto technologii k ověřování uživatelů-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

Implementace HOTP a TOTP v JavaScriptu, kterou lze použít při vytváření softwaru využívajícího tento projekt -

Kryptografická knihovna pro Arduino použitá v tomto projektu -

Papír TOTP -

Úroveň odbornosti

Tento Instructable je pro nadšence, kteří se zajímají o bezpečnost a mohou chtít implementovat pěknou hardwarovou součást do generování jejich TOTP. Tento instruktáž je napsán pro publikum, které již rozumí základům interpretace elektronických diagramů a základního programování, ale pokud máte v plánu jednoduše se přesně řídit tímto Instructable, nedělejte si starosti, pokud nemáte žádné zkušenosti, a klidně se můžete ptát níže v komentáře! Kromě toho může být projekt zajímavý i pro zkušenější tvůrce, protože konečný produkt je nejen hezký kousek (podle mého názoru), ale má také velký potenciál pro rozšíření a nové funkce bez větších potíží.

Zásoby

Materiály:

  1. 1x Arduino Nano (Amazon)
  2. 1x modul DS3231 AT24C32 s hodinami reálného času (RTC) (Amazon)
  3. 1x SH5461AS Common Cathode 4 digit 7-segment (Amazon)
  4. 1x tlačítko (Amazon)
  5. 1x 10k odpor (Amazon)
  6. VOLITELNĚ 1x PCB 5x7cm (Amazon)
  7. VOLITELNÉ Vodič pro pájení na desku plošných spojů
  8. VOLITELNĚ 1x Breadboard pro testování (Amazon)

Krok 1: Montáž a testování

Montáž a testování
Montáž a testování
Montáž a testování
Montáž a testování
Montáž a testování
Montáž a testování

Sestavte všechny součásti na prkénko a zapojte je podle přiloženého schématu zapojení (soubor Fritzing je zde).

Ujistěte se, že máte nainstalované IDE Arduino (lze jej najít online, pokud ne) a nainstalujte následující knihovny:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Stáhněte si připojenou skicu (lze ji také zobrazit zde: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) a otevřete ji pomocí Arduino IDE. Otevřete tento odkaz (https://www.lucadentella.it/OTP/) a do pole názvu účtu zadejte libovolné jméno a do následujícího pole vlastní tajný klíč (dlouhý 10 znaků), přičemž obě tyto hodnoty uložte na bezpečném místě pro zálohování. Zkopírujte obsah pole „Arduino HEX array:“a přepněte zpět do editoru Arduino a pole na řádku 25 (hmacKey) nahraďte tím, které jste zkopírovali z webu.

Po dvojité kontrole každého kabelového připojení se ujistěte, že modul RTC má v sobě knoflíkový článek, a připojte Arduino k vašemu notebooku pomocí mini kabelu USB a nahrajte přiložený náčrt.

Po odeslání by se po stisknutí tlačítka mělo na obrazovce zobrazit číslo. Pokud si do smartphonu stáhnete aplikaci Google Authenticator a vrátíte se na web sloužící k vygenerování HEX pole, naskenováním QR kódu nebo zadáním „kódu Google Authenticator“do aplikace, mělo by se vám v aplikaci zobrazit číslo. Pokud vše funguje správně, po stisknutí tlačítka by se zobrazené 4 číslice měly shodovat s prvními 4 aktuálním kódem zobrazeným v aplikaci pro chytré telefony. Pokud tomu tak není, ujistěte se, že počítač používaný k odeslání kódu Arduino je nastaven na čas UTC, a zkuste to znovu.

Krok 2: Přenos na PCB

Přenos na PCB
Přenos na PCB
Přenos na PCB
Přenos na PCB

Poté, co se ujistíte, že je vše v provozuschopném stavu, můžete součásti přenést na desku plošných spojů a pájet vše dohromady, jakkoli se vám to bude zdát vhodné. Kromě souboru Fritzing (k dispozici zde) jsem připojil diagram PCB. Všimněte si toho, že jsem všechny komponenty umístil na horní část desky kvůli estetice, ale lze je také namontovat pod ně a poté uzavřít do nějakého krytu, aby byl čistší. Po stranách desky plošných spojů jsem nastříhal a zalepil nanukové tyčinky obarvené Sharpie, abych vytvořil provizorní krabici pro jednotku. Dalším volitelným krokem je připevnění 9voltové spony na baterii na piny VIN a GND Arduina, takže je napájen z baterie.

Krok 3: Hotovo

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

Takto dopadl můj dokončený generátor, pokud jste ho následovali a sami si jej vytvořili, podělte se o něj níže!

Pokud to uznáte za vhodné, hlasujte pro můj Instructable pro soutěž STEM a zanechte níže uvedený komentář/dotazy.

Doporučuje: