Generador Arduino TOTP: 3 passos
Generador Arduino TOTP: 3 passos
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: