Table des matières:
Vidéo: Générateur Arduino TOTP : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Inspiration
Ayant un ami qui s'intéresse à la cryptographie et à la sécurité, je voulais créer le cadeau d'anniversaire parfait.
* Il s'agit d'un projet que j'ai fait comme cadeau d'anniversaire et qui a été créé dans des délais serrés (pardonnez le travail salissant)
REMARQUE: La génération TOTP qui est utilisée dans ce projet génère et utilise des codes à 6 chiffres, mais en raison de mon matériel actuel, j'ai choisi de couper les 2 chiffres de fin et d'afficher et d'utiliser 4, sans doute (mais pas considérablement) réduisant le Sécurité.
Informations générales
Ce projet génère un nouveau code toutes les 30 secondes à l'aide d'une clé prépartagée et de l'heure actuelle (qui est conservée à l'aide du module d'horloge en temps réel) et l'affiche à l'écran lorsque le bouton est enfoncé. Le cas d'utilisation le plus courant serait la vérification à deux facteurs basée sur un mot de passe à usage unique basé sur le temps (TOTP) et un mot de passe à usage unique basé sur HMAC (HOTP) pour l'authentification.
TOTP est un algorithme qui calcule un mot de passe à usage unique à partir d'une clé secrète partagée et de l'heure actuelle. HTOP est un algorithme qui utilise l'algorithme HMAC pour générer un mot de passe à usage unique.
Des entreprises telles que Google, Microsoft et Steam utilisent déjà la technologie TOTP pour leur authentification à deux facteurs
Liens intéressants
Article expliquant comment Google utilise cette technologie pour authentifier les utilisateurs -
Implémentation JavaScript de HOTP et TOTP pouvant être utilisée lors de la création de logiciels utilisant ce projet -
Bibliothèque cryptographique pour Arduino utilisée dans ce projet -
Papier TOTP -
Niveau d'expertise
Ce Instructable est destiné aux passionnés qui s'intéressent à la sécurité et peuvent vouloir implémenter un composant matériel agréable à la génération de leur TOTP. Cet instructable est écrit pour un public qui comprend déjà les bases de l'interprétation des diagrammes électroniques et de la programmation rudimentaire, mais si vous prévoyez simplement de suivre exactement cet Instructable, ne vous inquiétez pas si vous n'avez aucune expérience et n'hésitez pas à poser des questions dans le commentaires! De plus, le projet peut également être intéressant pour les fabricants plus expérimentés car le produit final n'est pas seulement une belle pièce à avoir (à mon avis), mais a tellement de potentiel d'expansion et de nouvelles fonctionnalités sans trop de tracas.
Fournitures
Matériaux:
- 1x Arduino Nano (Amazon)
- 1x module d'horloge temps réel (RTC) DS3231 AT24C32 (Amazon)
- 1x SH5461AS Common Cathode 4 chiffres 7 segments (Amazon)
- 1x bouton poussoir (Amazon)
- 1x résistance 10k (Amazon)
- OPTIONNEL 1x 5x7cm PCB (Amazon)
- Fil OPTIONNEL à souder au PCB
- 1x planche à pain en option pour les tests (Amazon)
Étape 1: Assemblage et test
Assemblez tous les composants sur la maquette et câblez-les selon le schéma de câblage ci-joint (le fichier Fritzing est ici).
Assurez-vous que l'IDE Arduino est installé (il peut être trouvé en ligne si ce n'est pas le cas) et installez les bibliothèques suivantes:
github.com/lucadentella/TOTP-Arduino
github.com/adafruit/RTClib
github.com/maniacbug/Cryptosuite
Téléchargez le croquis ci-joint (également accessible ici: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) et ouvrez-le à l'aide de l'IDE Arduino. Ouvrez ce lien (https://www.lucadentella.it/OTP/) et saisissez n'importe quel nom dans le champ du nom du compte, ainsi qu'une clé secrète personnalisée (10 caractères) dans le champ suivant, en veillant à enregistrer ces deux valeurs dans un endroit sûr pour la sauvegarde. Copiez le contenu du champ "Arduino HEX array:", et revenez à l'éditeur Arduino, en remplaçant le tableau de la ligne 25 (hmacKey) par celui que vous avez copié à partir du site.
Après avoir vérifié chaque connexion filaire, assurez-vous que le module RTC contient une pile bouton, connectez l'Arduino à votre ordinateur portable à l'aide d'un mini cordon USB et téléchargez le croquis ci-joint.
Après le téléchargement, lorsque le bouton est enfoncé, un numéro devrait apparaître à l'écran. Si vous téléchargez l'application Google Authenticator sur un smartphone et revenez sur le site utilisé pour générer la matrice HEX, en scannant le code QR ou en tapant le "code Google Authenticator" dans l'application, vous devriez voir un numéro affiché dans l'application. Si tout fonctionne correctement, lorsque vous appuyez sur le bouton poussoir, les 4 chiffres affichés doivent correspondre aux 4 premiers du code en cours affiché sur l'application smartphone. Si ce n'est pas le cas, assurez-vous que l'ordinateur utilisé pour télécharger le code Arduino est réglé sur l'heure UTC et réessayez.
Étape 2: Transfert vers PCB
Après vous être assuré que tout est en ordre de marche, vous pouvez transférer les composants sur le PCB et souder le tout comme bon vous semble. J'ai joint un schéma PCB en plus du fichier Fritzing (disponible ici). Notez que j'ai placé tous les composants sur le dessus de la carte pour l'esthétique, mais peut également être monté en dessous puis enfermé dans une sorte de boîtier pour le rendre plus propre. J'ai coupé et collé à chaud des bâtons de popsicle colorés avec Sharpie sur les côtés du PCB pour créer une boîte de fortune pour l'unité. Une autre étape facultative consiste à attacher un clip de batterie de 9 volts aux broches VIN et GND de l'Arduino, le rendant ainsi alimenté par batterie.
Étape 3: Terminé
C'est ainsi que s'est avéré mon générateur terminé, si vous avez suivi et créé un vous-même, partagez-le ci-dessous !
Assurez-vous de voter mon Instructable pour le concours STEM si vous le jugez bon, et laissez un commentaire/toutes les questions que vous pourriez avoir ci-dessous !
Conseillé:
Comment utiliser le générateur de signaux de fréquence Arduino DDS AD9850 : 7 étapes
Comment utiliser le générateur de signaux de fréquence Arduino DDS AD9850 : dans ce didacticiel, nous allons apprendre à créer un générateur de signaux de fréquence à l'aide d'un module AD9850 et d'Arduino. pire avec les fréquences plus élevées
Générateur/testeur 4-20ma utilisant Arduino : 8 étapes
Générateur/testeur 4-20ma utilisant Arduino : des générateurs 4-20mA sont disponibles sur ebay, mais pour ma part, j'aime la partie bricolage des choses et l'utilisation de pièces que j'ai autour. Je voulais tester les entrées analogiques de notre PLC pour vérifier nos lectures scada et pour tester la sortie des instruments 4-20mA. Il y a des loa
Générateur de signaux RF 100 KHz-600 MHZ sur DDS AD9910 Arduino Shield : 5 étapes
Générateur de signaux RF 100 KHz-600 MHZ sur DDS AD9910 Arduino Shield : Comment créer un générateur RF stable à faible bruit, haute précision (avec modulation AM, FM) sur Arduino
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Générateur - Générateur CC utilisant un interrupteur à lames : 3 étapes
Générateur - Générateur CC utilisant un commutateur Reed : Générateur CC simple Un générateur à courant continu (CC) est une machine électrique qui convertit l'énergie mécanique en électricité à courant continu.Important : Un générateur à courant continu (CC) peut être utilisé comme moteur à courant continu sans aucune construction changements