Inhoudsopgave:
Video: Arduino TOTP-generator: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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:
- 1x Arduino Nano (Amazon)
- 1x DS3231 AT24C32 Real-Time Clock (RTC)-module (Amazon)
- 1x SH5461AS gemeenschappelijke kathode 4-cijferig 7-segment (Amazon)
- 1x Drukknop (Amazon)
- 1x 10k Weerstand (Amazon)
- OPTIONEEL 1x 5x7cm PCB (Amazon)
- OPTIONEEL Draad om op PCB te solderen
- OPTIONEEL 1x Breadboard voor testen (Amazon)
Stap 1: 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
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
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:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)