Πίνακας περιεχομένων:
Βίντεο: Γεννήτρια Arduino TOTP: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Εμπνευση
Έχοντας έναν φίλο με ενδιαφέρον για την κρυπτογραφία και την ασφάλεια, ήθελα να δημιουργήσω το τέλειο δώρο γενεθλίων.
*Αυτό είναι ένα έργο που έκανα ως δώρο γενεθλίων και δημιουργήθηκε μέσα σε στενούς χρονικούς περιορισμούς (συγχωρήστε την ακατάστατη εργασία)
ΣΗΜΕΙΩΣΗ: Η γενιά 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, μην ανησυχείτε αν δεν έχετε εμπειρία και μη διστάσετε να κάνετε ερωτήσεις στο σχόλια! Επιπλέον, το έργο μπορεί να είναι ενδιαφέρον και για πιο έμπειρους κατασκευαστές καθώς το τελικό προϊόν δεν είναι μόνο ένα ωραίο κομμάτι για να το έχεις (κατά τη γνώμη μου), αλλά έχει τόσες δυνατότητες επέκτασης και νέων χαρακτηριστικών χωρίς μεγάλη ταλαιπωρία.
Προμήθειες
Υλικά:
- 1x Arduino Nano (Amazon)
- 1x μονάδα ρολογιού πραγματικού χρόνου (RTC) DS3231 AT24C32 (Amazon)
- 1x SH5461AS Common Cathode 4ψήφιο 7-τμήμα (Amazon)
- 1x κουμπί (Amazon)
- 1x 10k Resistor (Amazon)
- ΠΡΟΑΙΡΕΤΙΚΟ 1x 5x7cm PCB (Amazon)
- ΠΡΟΑΙΡΕΤΙΚΟ Σύρμα για συγκόλληση σε PCB
- ΠΡΟΑΙΡΕΤΙΚΟ 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 εκτός από το αρχείο Fritzing (διαθέσιμο εδώ). Σημειώστε ότι τοποθέτησα όλα τα εξαρτήματα στην κορυφή του πίνακα για αισθητική, αλλά μπορούν επίσης να τοποθετηθούν από κάτω και στη συνέχεια να κλειστούν σε κάποιο είδος περιβλήματος για να είναι πιο καθαρό. Έκοψα και κόλλησα ζεστά κολλημένα μπαστούνια χρωματισμένα με Sharpie στις πλευρές του PCB για να δημιουργήσω ένα αυτοσχέδιο κουτί για τη μονάδα. Ένα άλλο προαιρετικό βήμα είναι να συνδέσετε ένα κλιπ μπαταρίας 9 βολτ στις καρφίτσες VIN και GND του Arduino, καθιστώντας το με μπαταρία.
Βήμα 3: Ολοκληρώθηκε
Έτσι αποδείχθηκε η ολοκληρωμένη γεννήτρια μου, αν ακολουθήσατε και φτιάξατε μόνοι σας, μοιραστείτε την παρακάτω!
Βεβαιωθείτε ότι ψηφίσατε το Instructable μου για τον Διαγωνισμό STEM εάν το κρίνετε κατάλληλο και αφήστε ένα σχόλιο/τυχόν ερωτήσεις που έχετε παρακάτω!
Συνιστάται:
Γεννήτρια Turbo Trainer: 6 Βήματα
Γεννήτρια Turbo Trainer: Η παραγωγή ηλεκτρικής ενέργειας με πεντάλ πάντα με γοήτευε. Ιδού η άποψή μου για αυτό
Πώς να χρησιμοποιήσετε τη γεννήτρια σήματος συχνότητας Arduino DDS AD9850: 7 βήματα
Πώς να χρησιμοποιήσετε τη γεννήτρια σημάτων συχνότητας Arduino DDS AD9850: Σε αυτό το σεμινάριο θα μάθουμε πώς να φτιάχνουμε μια γεννήτρια σημάτων συχνότητας χρησιμοποιώντας μια μονάδα AD9850 και Arduino. Δείτε το βίντεο! Σημείωση: Κατάφερα να έχω συχνότητα έως +50MHz, αλλά η ποιότητα του σήματος γίνεται χειρότερα με τις υψηλότερες συχνότητες
Διαδραστική γεννήτρια φύλλων λέιζερ με Arduino: 11 βήματα (με εικόνες)
Διαδραστική γεννήτρια φύλλων λέιζερ με Arduino: Τα λέιζερ μπορούν να χρησιμοποιηθούν για τη δημιουργία απίστευτων οπτικών εφέ. Σε αυτό το έργο, κατασκεύασα ένα νέο τύπο οθόνης λέιζερ που είναι διαδραστικό και παίζει μουσική. Η συσκευή περιστρέφει δύο λέιζερ για να σχηματίσει δύο φύλλα φωτός που μοιάζουν με δίνη. Συμπεριέλαβα αισθητήρα απόστασης
Γεννήτρια κυματομορφής Arduino: 5 βήματα (με εικόνες)
Arduino Waveform Generator: Ενημέρωση Φεβρουαρίου 2021: ελέγξτε τη νέα έκδοση με 300 φορές το ρυθμό δειγματοληψίας, με βάση το Raspberry Pi Pico. Στο εργαστήριο, χρειάζεται συχνά ένα επαναλαμβανόμενο σήμα συγκεκριμένης συχνότητας, σχήματος και πλάτους. Μπορεί να είναι να δοκιμάσετε έναν ενισχυτή, να ελέγξετε ένα κύκλωμα
Φορητή γεννήτρια λειτουργιών στο Arduino: 7 βήματα (με εικόνες)
Φορητή γεννήτρια λειτουργιών στο Arduino: Η γεννήτρια λειτουργιών είναι ένα πολύ χρήσιμο εργαλείο, ειδικά όταν εξετάζουμε τον έλεγχο της απόκρισης του κυκλώματός μας σε ένα συγκεκριμένο σήμα. Σε αυτό το διδακτικό θα περιγράψω τη δομή της μικρής, εύχρηστης, φορητής γεννήτριας λειτουργιών. Χαρακτηριστικά