Innehållsförteckning:

Arduino TOTP Generator: 3 steg
Arduino TOTP Generator: 3 steg

Video: Arduino TOTP Generator: 3 steg

Video: Arduino TOTP Generator: 3 steg
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Juli
Anonim
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator

Inspiration

Med en vän med intresse för kryptografi och säkerhet ville jag skapa den perfekta födelsedagspresenten.

*Detta är ett projekt jag gjorde som en födelsedagspresent och skapades inom snäva tidsbegränsningar (förlåt det stökiga utförandet)

OBS: TOTP-generationen som används i detta projekt genererar och använder sexsiffriga koder, men på grund av min nuvarande hårdvara valde jag att klippa efter de två siffrorna och visa och använda 4, utan tvekan (men inte mycket) att minska säkerhet.

Allmän information

Detta projekt genererar en ny kod var 30: e sekund med hjälp av en fördelad tangent och den aktuella tiden (som hålls i spår för att använda realtidsklockemodulen) och visar den på displayen när knappen trycks in. Det vanligaste användningsfallet skulle vara tvåfaktorsverifiering baserat på tidsbaserat engångslösenord (TOTP) och HMAC-baserat engångslösenord (HOTP) för autentisering.

TOTP är en algoritm som beräknar ett engångslösenord från en delad hemlig nyckel och den aktuella tiden. HTOP är en algoritm som använder HMAC-algoritmen för att generera ett engångslösenord.

Företag som Google, Microsoft och Steam använder redan TOTP-teknik för sin tvåfaktorsautentisering

Intressanta länkar

Artikel som förklarar hur Google använder denna teknik för att autentisera användare-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript -implementering av HOTP och TOTP som kan användas när du skapar programvara som använder detta projekt -

Krytografiskt bibliotek för Arduino som används i detta projekt -

TOTP Paper -

Expertnivå

Denna instruktionsbok är för entusiaster som är intresserade av säkerhet och kanske vill implementera en trevlig hårdvarukomponent för generationen av deras TOTP. Denna instruerbara är skriven för en publik som redan förstår grunderna i att tolka elektronikdiagram och rudimentär programmering, men om du planerar att helt enkelt följa denna instruerbara exakt, oroa dig inte om du inte har någon erfarenhet och ställ gärna frågor nedan i kommentarer! Dessutom kan projektet också vara intressant för mer erfarna tillverkare eftersom slutprodukten inte bara är en trevlig bit att ha runt (enligt min mening), men har så mycket potential för expansion och nya funktioner utan mycket krångel.

Tillbehör

Material:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Realtidsklocka (RTC) -modul (Amazon)
  3. 1x SH5461AS gemensam katod 4-siffrig 7-segment (Amazon)
  4. 1x tryckknapp (Amazon)
  5. 1x 10k motstånd (Amazon)
  6. VALFRITT 1x 5x7cm PCB (Amazon)
  7. VALFRITT Tråd för lödning till kretskort
  8. TILLVAL 1x brödbräda för testning (Amazon)

Steg 1: Montering och testning

Montering och testning
Montering och testning
Montering och testning
Montering och testning
Montering och testning
Montering och testning

Montera alla komponenter på brödbrädan och dra dem enligt det bifogade kopplingsschemat (Fritzing -filen finns här).

Se till att du har Arduino IDE installerat (det kan hittas online om du inte gör det) och installera följande bibliotek:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Ladda ner den bifogade skissen (kan också nås här: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) och öppna den med Arduino IDE. Öppna denna länk (https://www.lucadentella.it/OTP/) och mata in alla namn i fältet för kontonamn och en anpassad hemlig nyckel (10 tecken lång) i följande fält, se till att spara båda dessa värden på en säker plats för säkerhetskopiering. Kopiera innehållet i fältet "Arduino HEX array:" och växla tillbaka till Arduino -redigeraren och ersätt matrisen på rad 25 (hmacKey) med den du kopierade från webbplatsen.

Efter att du har kontrollerat varje trådanslutning, se till att RTC-modulen har en myntcell i den, och anslut Arduino till din bärbara dator med en USB-minisladd och ladda upp den bifogade skissen.

Efter uppladdning, när knappen trycks in, bör ett nummer visas på skärmen. Om du laddar ner Google Authenticator -appen på en smartphone och går tillbaka till webbplatsen som används för att generera HEX -matrisen, skannar QR -koden eller skriver "Google Authenticator -koden" i appen ska du se ett nummer som visas i appen. Om allt fungerar korrekt, när du trycker på tryckknappen, ska de fyra siffrorna som visas stämma överens med de första 4 av den aktuella koden som visas i smartphone -appen. Om så inte är fallet, se till att datorn som används för att ladda upp Arduino -koden är inställd på UTC -tid och försök igen.

Steg 2: Överföring till kretskort

Överföring till kretskort
Överföring till kretskort
Överföring till kretskort
Överföring till kretskort

Efter att ha kontrollerat att allt är i funktionsdugligt skick kan du överföra komponenterna till kretskortet och lödda ihop allt som du tycker passar. Jag har bifogat ett PCB -diagram utöver Fritzing -filen (finns här). Observera att jag placerade alla komponenter på toppen av brädet för estetik, men kan också monteras under och sedan inneslutas i något slags hus för att göra det renare. Jag klippte och hetlimmade popsicle -pinnar färgade med Sharpie på sidorna av kretskortet för att skapa en provisorisk låda för enheten. Ett annat valfritt steg är att fästa en 9-volts batteriklämma på VIN- och GND-stiften på Arduino, vilket gör den batteridriven.

Steg 3: Avslutad

Färdiga!
Färdiga!
Färdiga!
Färdiga!
Färdiga!
Färdiga!

Så här blev min färdiga generator, om du följde med och gjorde en själv, dela den nedan!

Var noga med att rösta min Instructable för STEM -tävlingen om du tycker det är lämpligt och lämna en kommentar/eventuella frågor du kan ha nedan!

Rekommenderad: