Table des matières:

Générateur Arduino TOTP : 3 étapes
Générateur Arduino TOTP : 3 étapes

Vidéo: Générateur Arduino TOTP : 3 étapes

Vidéo: Générateur Arduino TOTP : 3 étapes
Vidéo: Реализация двухфакторной аутентификации TOTP для Google Authenticator с помощью PHP и AJAX 2024, Novembre
Anonim
Générateur Arduino TOTP
Générateur Arduino TOTP
Générateur Arduino TOTP
Générateur Arduino TOTP
Générateur Arduino TOTP
Générateur Arduino TOTP

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:

  1. 1x Arduino Nano (Amazon)
  2. 1x module d'horloge temps réel (RTC) DS3231 AT24C32 (Amazon)
  3. 1x SH5461AS Common Cathode 4 chiffres 7 segments (Amazon)
  4. 1x bouton poussoir (Amazon)
  5. 1x résistance 10k (Amazon)
  6. OPTIONNEL 1x 5x7cm PCB (Amazon)
  7. Fil OPTIONNEL à souder au PCB
  8. 1x planche à pain en option pour les tests (Amazon)

Étape 1: Assemblage et test

Assemblage et test
Assemblage et test
Assemblage et test
Assemblage et test
Assemblage et test
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

Transfert vers PCB
Transfert vers PCB
Transfert vers PCB
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é

Fini!
Fini!
Fini!
Fini!
Fini!
Fini!

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é: