Πίνακας περιεχομένων:

Γεννήτρια Arduino TOTP: 3 βήματα
Γεννήτρια Arduino TOTP: 3 βήματα

Βίντεο: Γεννήτρια Arduino TOTP: 3 βήματα

Βίντεο: Γεννήτρια Arduino TOTP: 3 βήματα
Βίντεο: Χρήσιμες συμβουλές για να διαλέξετε γεννήτρια 2024, Ιούλιος
Anonim
Γεννήτρια Arduino TOTP
Γεννήτρια Arduino TOTP
Γεννήτρια Arduino TOTP
Γεννήτρια Arduino TOTP
Γεννήτρια Arduino TOTP
Γεννήτρια Arduino TOTP

Εμπνευση

Έχοντας έναν φίλο με ενδιαφέρον για την κρυπτογραφία και την ασφάλεια, ήθελα να δημιουργήσω το τέλειο δώρο γενεθλίων.

*Αυτό είναι ένα έργο που έκανα ως δώρο γενεθλίων και δημιουργήθηκε μέσα σε στενούς χρονικούς περιορισμούς (συγχωρήστε την ακατάστατη εργασία)

ΣΗΜΕΙΩΣΗ: Η γενιά TOTP που χρησιμοποιείται σε αυτό το έργο δημιουργεί και χρησιμοποιεί 6ψήφιους κωδικούς, αλλά λόγω του τρέχοντος υλικού που έχω στο χέρι, επέλεξα να κόψω τα 2 ψηφία και να εμφανίσω και να χρησιμοποιήσω 4, μειώνοντας αναμφισβήτητα (αλλά όχι σε μεγάλο βαθμό) ασφάλεια.

Γενικές πληροφορίες

Αυτό το έργο δημιουργεί έναν νέο κώδικα κάθε 30 δευτερόλεπτα χρησιμοποιώντας ένα προ-κοινόχρηστο κλειδί και την τρέχουσα ώρα (η οποία παρακολουθείται από τη χρήση της μονάδας ρολογιού σε πραγματικό χρόνο) και τον εμφανίζει στην οθόνη όταν πατάτε το κουμπί. Η πιο συνηθισμένη περίπτωση χρήσης θα ήταν η επαλήθευση δύο παραγόντων με βάση τον κωδικό πρόσβασης One Time (TOTP) και τον κωδικό πρόσβασης One Time (HOTP) που βασίζεται σε HMAC για έλεγχο ταυτότητας.

Το TOTP είναι ένας αλγόριθμος που υπολογίζει έναν εφάπαξ κωδικό πρόσβασης από ένα κοινόχρηστο μυστικό κλειδί και την τρέχουσα ώρα. Το HTOP είναι ένας αλγόριθμος που χρησιμοποιεί τον αλγόριθμο HMAC για τη δημιουργία ενός εφάπαξ κωδικού πρόσβασης.

Εταιρείες όπως η Google, η Microsoft και η Steam χρησιμοποιούν ήδη την τεχνολογία TOTP για τον έλεγχο ταυτότητας δύο παραγόντων

Ενδιαφέρουσες συνδέσεις

Άρθρο που εξηγεί πώς η Google χρησιμοποιεί αυτήν την τεχνολογία για τον έλεγχο ταυτότητας χρηστών-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

Υλοποίηση JavaScript των HOTP και TOTP που μπορούν να χρησιμοποιηθούν κατά τη δημιουργία λογισμικού που χρησιμοποιεί αυτό το έργο -

Κρυογραφική βιβλιοθήκη για Arduino που χρησιμοποιείται σε αυτό το έργο -

TOTP Paper -

Επίπεδο Εξειδίκευσης

Αυτό το Instructable είναι για τους λάτρεις που ενδιαφέρονται για την ασφάλεια και μπορεί να θέλουν να εφαρμόσουν ένα ωραίο στοιχείο υλικού στη δημιουργία του TOTP τους. Αυτό το διδακτικό είναι γραμμένο για ένα κοινό που καταλαβαίνει ήδη τα βασικά της ερμηνείας των ηλεκτρονικών διαγραμμάτων και του υποτυπώδους προγραμματισμού, αλλά αν σκοπεύετε να ακολουθήσετε ακριβώς αυτό το Instructable, μην ανησυχείτε αν δεν έχετε εμπειρία και μη διστάσετε να κάνετε ερωτήσεις στο σχόλια! Επιπλέον, το έργο μπορεί να είναι ενδιαφέρον και για πιο έμπειρους κατασκευαστές καθώς το τελικό προϊόν δεν είναι μόνο ένα ωραίο κομμάτι για να το έχεις (κατά τη γνώμη μου), αλλά έχει τόσες δυνατότητες επέκτασης και νέων χαρακτηριστικών χωρίς μεγάλη ταλαιπωρία.

Προμήθειες

Υλικά:

  1. 1x Arduino Nano (Amazon)
  2. 1x μονάδα ρολογιού πραγματικού χρόνου (RTC) DS3231 AT24C32 (Amazon)
  3. 1x SH5461AS Common Cathode 4ψήφιο 7-τμήμα (Amazon)
  4. 1x κουμπί (Amazon)
  5. 1x 10k Resistor (Amazon)
  6. ΠΡΟΑΙΡΕΤΙΚΟ 1x 5x7cm PCB (Amazon)
  7. ΠΡΟΑΙΡΕΤΙΚΟ Σύρμα για συγκόλληση σε PCB
  8. ΠΡΟΑΙΡΕΤΙΚΟ 1x Breadboard για δοκιμή (Amazon)

Βήμα 1: Συναρμολόγηση και δοκιμή

Συναρμολόγηση και Δοκιμές
Συναρμολόγηση και Δοκιμές
Συναρμολόγηση και Δοκιμές
Συναρμολόγηση και Δοκιμές
Συναρμολόγηση και Δοκιμές
Συναρμολόγηση και Δοκιμές

Συγκεντρώστε όλα τα εξαρτήματα στο breadboard και συνδέστε τα σύμφωνα με το συνημμένο διάγραμμα καλωδίωσης (το αρχείο Fritzing είναι εδώ).

Βεβαιωθείτε ότι έχετε εγκαταστήσει το Arduino IDE (μπορεί να βρεθεί στο διαδίκτυο αν δεν το κάνετε) και εγκαταστήστε τις ακόλουθες βιβλιοθήκες:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Κατεβάστε το συνημμένο σκίτσο (μπορείτε επίσης να το βρείτε εδώ: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) και ανοίξτε το χρησιμοποιώντας το Arduino IDE. Ανοίξτε αυτόν τον σύνδεσμο (https://www.lucadentella.it/OTP/) και εισαγάγετε οποιοδήποτε όνομα στο πεδίο ονόματος λογαριασμού και ένα προσαρμοσμένο μυστικό κλειδί (μήκους 10 χαρακτήρων) στο παρακάτω πεδίο, φροντίζοντας να αποθηκεύσετε και τις δύο αυτές τιμές σε ασφαλές μέρος για δημιουργία αντιγράφων ασφαλείας. Αντιγράψτε τα περιεχόμενα του πεδίου "Arduino HEX array:" και επιστρέψτε στον επεξεργαστή Arduino, αντικαθιστώντας τον πίνακα στη γραμμή 25 (hmacKey) με αυτόν που αντιγράψατε από τον ιστότοπο.

Μετά τον διπλό έλεγχο κάθε καλωδιακής σύνδεσης, βεβαιωθείτε ότι η μονάδα RTC έχει ένα κελί νομίσματος και συνδέστε το Arduino στο φορητό υπολογιστή σας χρησιμοποιώντας ένα μίνι καλώδιο USB και ανεβάστε το συνημμένο σκίτσο.

Μετά τη μεταφόρτωση, όταν πατηθεί το κουμπί, ένας αριθμός θα εμφανιστεί στην οθόνη. Εάν κάνετε λήψη της εφαρμογής Google Authenticator σε smartphone και επιστρέψετε στον ιστότοπο που χρησιμοποιείται για τη δημιουργία της σειράς HEX, σάρωση του κωδικού QR ή πληκτρολόγηση του "Κωδικού Google Authenticator" στην εφαρμογή, θα πρέπει να δείτε έναν αριθμό που εμφανίζεται στην εφαρμογή. Εάν όλα λειτουργούν σωστά, όταν πατάτε το κουμπί, τα 4 ψηφία που εμφανίζονται πρέπει να ταιριάζουν με τα πρώτα 4 του τρέχοντος κωδικού που εμφανίζεται στην εφαρμογή smartphone. Εάν αυτό δεν συμβαίνει, βεβαιωθείτε ότι ο υπολογιστής που χρησιμοποιείται για τη μεταφόρτωση του κώδικα Arduino έχει οριστεί σε ώρα UTC και δοκιμάστε ξανά.

Βήμα 2: Μεταφορά στο PCB

Μεταφορά σε PCB
Μεταφορά σε PCB
Μεταφορά σε PCB
Μεταφορά σε PCB

Αφού βεβαιωθείτε ότι όλα είναι σε καλή κατάσταση, μπορείτε να μεταφέρετε τα εξαρτήματα στο PCB και να τα κολλήσετε όλα μαζί, όπως φαίνεται κατάλληλο. Έχω επισυνάψει ένα διάγραμμα PCB εκτός από το αρχείο Fritzing (διαθέσιμο εδώ). Σημειώστε ότι τοποθέτησα όλα τα εξαρτήματα στην κορυφή του πίνακα για αισθητική, αλλά μπορούν επίσης να τοποθετηθούν από κάτω και στη συνέχεια να κλειστούν σε κάποιο είδος περιβλήματος για να είναι πιο καθαρό. Έκοψα και κόλλησα ζεστά κολλημένα μπαστούνια χρωματισμένα με Sharpie στις πλευρές του PCB για να δημιουργήσω ένα αυτοσχέδιο κουτί για τη μονάδα. Ένα άλλο προαιρετικό βήμα είναι να συνδέσετε ένα κλιπ μπαταρίας 9 βολτ στις καρφίτσες VIN και GND του Arduino, καθιστώντας το με μπαταρία.

Βήμα 3: Ολοκληρώθηκε

Πεπερασμένος!
Πεπερασμένος!
Πεπερασμένος!
Πεπερασμένος!
Πεπερασμένος!
Πεπερασμένος!

Έτσι αποδείχθηκε η ολοκληρωμένη γεννήτρια μου, αν ακολουθήσατε και φτιάξατε μόνοι σας, μοιραστείτε την παρακάτω!

Βεβαιωθείτε ότι ψηφίσατε το Instructable μου για τον Διαγωνισμό STEM εάν το κρίνετε κατάλληλο και αφήστε ένα σχόλιο/τυχόν ερωτήσεις που έχετε παρακάτω!

Συνιστάται: