Inhaltsverzeichnis:

Arduino TOTP-Generator - Gunook
Arduino TOTP-Generator - Gunook

Video: Arduino TOTP-Generator - Gunook

Video: Arduino TOTP-Generator - Gunook
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, November
Anonim
Arduino TOTP-Generator
Arduino TOTP-Generator
Arduino TOTP-Generator
Arduino TOTP-Generator
Arduino TOTP-Generator
Arduino TOTP-Generator

Inspiration

Da ich einen Freund mit Interesse an Kryptographie und Sicherheit hatte, wollte ich das perfekte Geburtstagsgeschenk kreieren.

*Dies ist ein Projekt, das ich als Geburtstagsgeschenk gemacht habe und innerhalb kurzer Zeit erstellt wurde (verzeihen Sie die unordentliche Verarbeitung)

HINWEIS: Die in diesem Projekt verwendete TOTP-Generation generiert und verwendet 6-stellige Codes, aber aufgrund meiner aktuellen Hardware habe ich mich dafür entschieden, die folgenden 2 Stellen zu schneiden und anzuzeigen und 4 zu verwenden, was wohl (aber nicht stark) die Sicherheit.

Allgemeine Informationen

Dieses Projekt generiert alle 30 Sekunden einen neuen Code unter Verwendung eines vorinstallierten Schlüssels und der aktuellen Uhrzeit (die bei Verwendung des Echtzeituhrmoduls verfolgt wird) und zeigt ihn auf dem Display an, wenn die Taste gedrückt wird. Der häufigste Anwendungsfall wäre die Zwei-Faktor-Verifizierung basierend auf einem zeitbasierten Einmalpasswort (TOTP) und einem HMAC-basierten Einmalpasswort (HOTP) zur Authentifizierung.

TOTP ist ein Algorithmus, der aus einem gemeinsamen geheimen Schlüssel und der aktuellen Uhrzeit ein Einmalpasswort berechnet. HTOP ist ein Algorithmus, der den HMAC-Algorithmus verwendet, um ein Einmalpasswort zu generieren.

Unternehmen wie Google, Microsoft und Steam verwenden bereits die TOTP-Technologie für ihre Zwei-Faktor-Authentifizierung

Interessante Links

Artikel, der erklärt, wie Google diese Technologie verwendet, um Benutzer zu authentifizieren –

JavaScript-Implementierung von HOTP und TOTP, die beim Erstellen von Software unter Verwendung dieses Projekts verwendet werden kann -

Kryptografische Bibliothek für Arduino, die in diesem Projekt verwendet wird -

TOTP-Papier -

Kompetenzniveau

Dieses Instructable ist für Enthusiasten, die an Sicherheit interessiert sind und eine schöne Hardwarekomponente für die Generierung ihres TOTP implementieren möchten. Dieses instructable ist für ein Publikum geschrieben, das bereits die Grundlagen der Interpretation von Elektronikdiagrammen und rudimentärer Programmierung versteht, aber wenn Sie einfach nur diesem Instructable genau folgen möchten, machen Sie sich keine Sorgen, wenn Sie keine Erfahrung haben, und stellen Sie gerne Fragen in der Kommentare! Darüber hinaus kann das Projekt auch für erfahrenere Hersteller interessant sein, da das Endprodukt nicht nur ein schönes Stück ist (meiner Meinung nach), sondern auch so viel Potenzial für Erweiterungen und neue Funktionen ohne großen Aufwand bietet.

Lieferungen

Materialien:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Echtzeituhr (RTC) Modul (Amazon)
  3. 1x SH5461AS Common Cathode 4-stellig 7-Segment (Amazon)
  4. 1x Taster (Amazon)
  5. 1x 10k Widerstand (Amazon)
  6. OPTIONAL 1x 5x7cm Platine (Amazon)
  7. OPTIONAL Draht zum Löten auf PCB
  8. OPTIONAL 1x Steckbrett zum Testen (Amazon)

Schritt 1: Montage und Prüfung

Montage und Prüfung
Montage und Prüfung
Montage und Prüfung
Montage und Prüfung
Montage und Prüfung
Montage und Prüfung

Montieren Sie alle Komponenten auf dem Steckbrett und verdrahten Sie sie gemäß dem beigefügten Schaltplan (Fritzing-Datei ist hier).

Stellen Sie sicher, dass Sie die Arduino IDE installiert haben (sie kann online gefunden werden, wenn Sie dies nicht tun) und installieren Sie die folgenden Bibliotheken:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Laden Sie die angehängte Skizze herunter (auch hier abrufbar: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) und öffnen Sie sie mit der Arduino IDE. Öffnen Sie diesen Link (https://www.lucadentella.it/OTP/) und geben Sie einen beliebigen Namen in das Feld für den Kontonamen und einen benutzerdefinierten geheimen Schlüssel (10 Zeichen lang) in das folgende Feld ein. Stellen Sie sicher, dass Sie beide Werte speichern an einem sicheren Ort zur Sicherung. Kopieren Sie den Inhalt des Feldes "Arduino HEX array:" und wechseln Sie zurück zum Arduino-Editor, wobei Sie das Array in Zeile 25 (hmacKey) durch das von der Site kopierte ersetzen.

Nachdem Sie jede Drahtverbindung doppelt überprüft haben, stellen Sie sicher, dass das RTC-Modul eine Knopfzelle enthält, und verbinden Sie das Arduino mit einem USB-Minikabel mit Ihrem Laptop und laden Sie die beigefügte Skizze hoch.

Nach dem Hochladen sollte beim Drücken der Schaltfläche eine Zahl auf dem Bildschirm angezeigt werden. Wenn Sie die Google Authenticator-App auf ein Smartphone herunterladen und zu der Website zurückkehren, die zum Generieren des HEX-Arrays verwendet wurde, den QR-Code scannen oder den "Google Authenticator-Code" in die App eingeben, sollte in der App eine Nummer angezeigt werden. Wenn alles richtig funktioniert, sollten beim Drücken der Taste die 4 angezeigten Ziffern mit den ersten 4 des aktuellen Codes übereinstimmen, der in der Smartphone-App angezeigt wird. Wenn dies nicht der Fall ist, stellen Sie sicher, dass der Computer, der zum Hochladen des Arduino-Codes verwendet wird, auf UTC-Zeit eingestellt ist und versuchen Sie es erneut.

Schritt 2: Übertragen auf PCB

Übertragen auf PCB
Übertragen auf PCB
Übertragen auf PCB
Übertragen auf PCB

Nachdem Sie sichergestellt haben, dass alles in Ordnung ist, können Sie die Komponenten auf die Platine übertragen und alles zusammenlöten, wie es Ihnen passt. Ich habe zusätzlich zur Fritzing-Datei (hier erhältlich) ein PCB-Diagramm beigefügt. Beachten Sie, dass ich alle Komponenten aus ästhetischen Gründen auf der Oberseite der Platine platziert habe, sie aber auch darunter montiert und dann in eine Art Gehäuse eingeschlossen werden können, um sie sauberer zu machen. Ich schneide und heiß geklebte Popsicle-Sticks, die mit Sharpie an den Seiten der Platine eingefärbt sind, um eine provisorische Box für das Gerät zu schaffen. Ein weiterer optionaler Schritt besteht darin, einen 9-Volt-Batterieclip an die VIN- und GND-Pins des Arduino anzuschließen, wodurch er batteriebetrieben wird.

Schritt 3: Fertig

Fertig!
Fertig!
Fertig!
Fertig!
Fertig!
Fertig!

So ist mein fertiger Generator geworden, wenn Sie mitgemacht und selbst einen gemacht haben, teilen Sie ihn unten!

Stellen Sie sicher, dass Sie mein Instructable für den STEM-Wettbewerb abstimmen, wenn Sie dies für richtig halten, und hinterlassen Sie einen Kommentar / alle Fragen, die Sie möglicherweise unten haben!

Empfohlen: