Taula de continguts:

Generador Arduino TOTP: 3 passos
Generador Arduino TOTP: 3 passos

Vídeo: Generador Arduino TOTP: 3 passos

Vídeo: Generador Arduino TOTP: 3 passos
Vídeo: TOTP Arduino authenticator with USB keyboard emulation 2024, De novembre
Anonim
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP

Inspiració

Tenint un amic interessat en la criptografia i la seguretat, volia crear el regal d’aniversari perfecte.

* Aquest és un projecte que he fet com a regal d'aniversari i que he estat creat amb limitacions de temps ajustades (perdoneu la mà d'obra desordenada)

NOTA: La generació TOTP que s’utilitza en aquest projecte genera i utilitza codis de 6 dígits, però a causa del meu maquinari actual, he optat per reduir els 2 dígits finals i mostrar-ne i utilitzar-ne 4, sens dubte (però no gaire) seguretat.

Informació general

Aquest projecte genera un nou codi cada 30 segons mitjançant una tecla precompartida i l’hora actual (que es fa un seguiment de l’ús del mòdul de rellotge en temps real) i el mostra a la pantalla quan es prem el botó. El cas d’ús més comú seria la verificació de dos factors basada en la contrasenya única d’una vegada (TOTP) i la contrasenya única d’una vegada (HOTP) basada en l’HMAC per a l’autenticació.

TOTP és un algorisme que calcula una contrasenya única a partir d’una clau secreta compartida i l’hora actual. HTOP és un algorisme que utilitza l'algorisme HMAC per generar una contrasenya única.

Empreses com Google, Microsoft i Steam ja utilitzen la tecnologia TOTP per a la seva autenticació de dos factors

Enllaços d’interès

Article que explica com Google utilitza aquesta tecnologia per autenticar els usuaris:

Implementació de JavaScript d’HOTP i TOTP que es poden utilitzar en crear programari amb aquest projecte -

Biblioteca criptogràfica per a Arduino utilitzada en aquest projecte -

Paper TOTP:

Nivell d’expertesa

Aquesta instrucció és per a entusiastes que estiguin interessats en la seguretat i que vulguin implementar un bon component de maquinari per a la generació del seu TOTP. Aquest instructiu està escrit per a un públic que ja entén els conceptes bàsics d’interpretació de diagrames d’electrònica i programació rudimentària, però si teniu previst seguir aquest instructiu exactament, no us preocupeu si no teniu experiència i no dubteu a fer preguntes a la secció comentaris! A més, el projecte pot ser interessant per a fabricants amb més experiència, ja que el producte final no només és una peça agradable (al meu entendre), sinó que té molt potencial d’expansió i noves funcions sense gaire molèsties.

Subministraments

Materials:

  1. 1x Arduino Nano (Amazon)
  2. 1 mòdul DS3231 AT24C32 Rellotge en temps real (RTC) (Amazon)
  3. 1 x SH5461AS càtode comú de 4 dígits de 7 segments (Amazon)
  4. 1 botó de pulsació (Amazon)
  5. 1x 10k resistència (Amazon)
  6. PCB OPCIONAL 1x 5x7cm (Amazon)
  7. Cable OPCIONAL per soldar a PCB
  8. OPCIONAL 1x Taula de pa per provar (Amazon)

Pas 1: Muntatge i proves

Muntatge i proves
Muntatge i proves
Muntatge i proves
Muntatge i proves
Muntatge i proves
Muntatge i proves

Muntar tots els components de la placa de connexió i connectar-los segons el diagrama de cablejat adjunt (el fitxer Fritzing és aquí).

Assegureu-vos que teniu instal·lat l’IDE Arduino (es pot trobar en línia si no ho feu) i instal·leu les biblioteques següents:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Descarregueu l'esbós adjunt (també es pot accedir aquí: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) i obriu-lo mitjançant l'IDE Arduino. Obriu aquest enllaç (https://www.lucadentella.it/OTP/) i introduïu qualsevol nom al camp del nom del compte i una clau secreta personalitzada (de 10 caràcters) al camp següent, assegureu-vos de desar tots dos valors. en un lloc segur per fer còpies de seguretat. Copieu el contingut del camp "Arduino HEX array:" i torneu a l'editor Arduino, substituint el array de la línia 25 (hmacKey) pel que heu copiat del lloc.

Després de comprovar cada connexió de cable, assegureu-vos que el mòdul RTC tingui una cel·la de monedes i connecteu l'Arduino al vostre ordinador portàtil mitjançant un mini cable USB i pengeu l'esbós adjunt.

Després de carregar-lo, quan es prem el botó, apareixerà un número a la pantalla. Si descarregueu l'aplicació Google Authenticator en un telèfon intel·ligent i torneu al lloc utilitzat per generar la matriu HEX, escanejant el codi QR o escrivint el "codi Google Authenticator" a l'aplicació, hauríeu de veure un número que apareix a l'aplicació. Si tot funciona correctament, quan premeu el botó, els 4 dígits que es mostren haurien de coincidir amb els 4 primers del codi actual que es mostra a l'aplicació del telèfon intel·ligent. Si no és així, assegureu-vos que l’ordinador que s’utilitza per carregar el codi Arduino estigui configurat a l’hora UTC i torneu-ho a provar.

Pas 2: transferència al PCB

Transferència a PCB
Transferència a PCB
Transferència a PCB
Transferència a PCB

Després d'assegurar-vos que tot està en bon estat, podeu transferir els components al PCB i soldar-ho tot junts, segons vulgueu. He adjuntat un diagrama de PCB a més del fitxer Fritzing (disponible aquí). Tingueu en compte que he col·locat tots els components a la part superior del tauler per obtenir estètica, però també es poden muntar a sota i després tancar-los en algun tipus de carcassa per fer-lo més net. Vaig tallar i varetes de palets enganxats en calent de colors amb Sharpie als costats del PCB per crear una caixa improvisada per a la unitat. Un altre pas opcional és connectar un clip de bateria de 9 volts als pins VIN i GND de l’Arduino, de manera que funciona amb bateria.

Pas 3: acabat

Acabat!
Acabat!
Acabat!
Acabat!
Acabat!
Acabat!

Així és com va resultar el meu generador complet, si el vau seguir i el vau fer vosaltres mateixos, compartiu-lo a continuació.

Assegureu-vos de votar el meu instructiu per al concurs STEM si ho considereu oportú i deixeu un comentari / qualsevol pregunta que tingueu a continuació.

Recomanat: