Inhoudsopgave:

Arduino TOTP-generator: 3 stappen
Arduino TOTP-generator: 3 stappen

Video: Arduino TOTP-generator: 3 stappen

Video: Arduino TOTP-generator: 3 stappen
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

Inspiratie

Omdat ik een vriend had die geïnteresseerd was in cryptografie en beveiliging, wilde ik het perfecte verjaardagscadeau maken.

* Dit is een project dat ik heb gemaakt als verjaardagscadeau en is gemaakt binnen strakke tijdsdruk (excuseer het rommelige vakmanschap)

OPMERKING: de TOTP-generatie die in dit project wordt gebruikt, genereert en gebruikt 6-cijferige codes, maar vanwege mijn huidige hardware bij de hand, heb ik ervoor gekozen om de achterste 2 cijfers te knippen en weer te geven en 4 te gebruiken, aantoonbaar (maar niet sterk) het verminderen van de veiligheid.

Algemene informatie

Dit project genereert elke 30 seconden een nieuwe code met behulp van een vooraf gedeelde sleutel en de huidige tijd (die wordt bijgehouden met behulp van de realtime klokmodule) en geeft deze weer op het display wanneer de knop wordt ingedrukt. De meest voorkomende use-case is tweestapsverificatie op basis van Time-based One Time Password (TOTP) en HMAC-based One Time Password (HOTP) voor authenticatie.

TOTP is een algoritme dat een eenmalig wachtwoord berekent uit een gedeelde geheime sleutel en de huidige tijd. HTTP is een algoritme dat het HMAC-algoritme gebruikt om een eenmalig wachtwoord te genereren.

Bedrijven zoals Google, Microsoft en Steam gebruiken al TOTP-technologie voor hun tweefactorauthenticatie

Interessante links

Artikel waarin wordt uitgelegd hoe Google deze technologie gebruikt om gebruikers te authenticeren -

JavaScript-implementatie van HOTP en TOTP die kan worden gebruikt bij het maken van software met behulp van dit project -

Crytografische bibliotheek voor Arduino gebruikt in dit project -

TOTP-papier -

Expertiseniveau

Deze Instructable is voor liefhebbers die geïnteresseerd zijn in beveiliging en die misschien een mooie hardwarecomponent willen implementeren voor het genereren van hun TOTP. Deze instructable is geschreven voor een publiek dat de basisprincipes van het interpreteren van elektronische diagrammen en rudimentaire programmering al begrijpt, maar als je van plan bent om deze Instructable precies precies te volgen, maak je dan geen zorgen als je geen ervaring hebt, en voel je vrij om vragen te stellen in de opmerkingen! Bovendien kan het project ook interessant zijn voor meer ervaren makers, omdat het eindproduct niet alleen een leuk stuk is om in de buurt te hebben (naar mijn mening), maar zoveel potentieel heeft voor uitbreiding en nieuwe functies zonder veel gedoe.

Benodigdheden

Materialen:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Real-Time Clock (RTC)-module (Amazon)
  3. 1x SH5461AS gemeenschappelijke kathode 4-cijferig 7-segment (Amazon)
  4. 1x Drukknop (Amazon)
  5. 1x 10k Weerstand (Amazon)
  6. OPTIONEEL 1x 5x7cm PCB (Amazon)
  7. OPTIONEEL Draad om op PCB te solderen
  8. OPTIONEEL 1x Breadboard voor testen (Amazon)

Stap 1: Montage en testen

Montage en testen
Montage en testen
Montage en testen
Montage en testen
Montage en testen
Montage en testen

Monteer alle componenten op het breadboard en sluit ze aan volgens het bijgevoegde bedradingsschema (Fritzing-bestand is hier).

Zorg ervoor dat je de Arduino IDE hebt geïnstalleerd (deze is online te vinden als je dat niet doet) en installeer de volgende bibliotheken:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Download de bijgevoegde schets (kan ook hier worden geopend: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), en open deze met behulp van de Arduino IDE. Open deze link (https://www.lucadentella.it/OTP/) en voer een naam in het veld accountnaam in, en een aangepaste geheime sleutel (10 tekens lang) in het volgende veld, zorg ervoor dat u beide waarden opslaat op een veilige plaats voor back-up. Kopieer de inhoud van het veld "Arduino HEX array:" en schakel terug naar de Arduino-editor, waarbij u de array op regel 25 (hmacKey) vervangt door degene die u van de site hebt gekopieerd.

Nadat u elke draadverbinding dubbel heeft gecontroleerd, moet u ervoor zorgen dat de RTC-module een knoopcel bevat en sluit u de Arduino aan op uw laptop met behulp van een USB-minikabel en uploadt u de bijgevoegde schets.

Na het uploaden, wanneer de knop wordt ingedrukt, moet er een nummer op het scherm verschijnen. Als u de Google Authenticator-app op een smartphone downloadt en teruggaat naar de site die is gebruikt om de HEX-array te genereren, de QR-code scant of de "Google Authenticator-code" in de app typt, zou u een nummer moeten zien dat in de app wordt weergegeven. Als alles correct werkt, moeten de 4 weergegeven cijfers, wanneer u op de drukknop drukt, overeenkomen met de eerste 4 van de huidige code die wordt weergegeven op de smartphone-app. Als dit niet het geval is, zorg er dan voor dat de computer die wordt gebruikt om de Arduino-code te uploaden is ingesteld op UTC-tijd en probeer het opnieuw.

Stap 2: Overzetten naar PCB

Overzetten naar PCB
Overzetten naar PCB
Overzetten naar PCB
Overzetten naar PCB

Nadat u ervoor heeft gezorgd dat alles in orde is, kunt u de componenten op de PCB overbrengen en alles aan elkaar solderen zoals u dat wilt. Ik heb een PCB-diagram bijgevoegd naast het Fritzing-bestand (hier beschikbaar). Merk op dat ik alle componenten op de bovenkant van het bord heb geplaatst voor esthetiek, maar ze kunnen ook eronder worden gemonteerd en vervolgens worden ingesloten in een soort behuizing om het schoner te maken. Ik sneed en warm gelijmde ijslollystokjes gekleurd met Sharpie aan de zijkanten van de PCB om een geïmproviseerde doos voor het apparaat te maken. Een andere optionele stap is om een 9-volt batterijclip aan de VIN- en GND-pinnen van de Arduino te bevestigen, waardoor deze op batterijen werkt.

Stap 3: Klaar

Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!
Afgewerkt!

Dit is hoe mijn voltooide generator is geworden, als je het hebt gevolgd en er zelf een hebt gemaakt, deel hem dan hieronder!

Zorg ervoor dat je mijn Instructable stemt voor de STEM-wedstrijd als je dat nodig vindt, en laat hieronder een opmerking / eventuele vragen achter!

Aanbevolen: