Tabla de contenido:

Generador Arduino TOTP: 3 pasos
Generador Arduino TOTP: 3 pasos

Video: Generador Arduino TOTP: 3 pasos

Video: Generador Arduino TOTP: 3 pasos
Video: Amazing arduino project 2024, Noviembre
Anonim
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP
Generador Arduino TOTP

Inspiración

Como tenía un amigo interesado en la criptografía y la seguridad, quería crear el regalo de cumpleaños perfecto.

* Este es un proyecto que hice como regalo de cumpleaños y fue creado dentro de las limitaciones de tiempo (perdón por la desordenada mano de obra)

NOTA: La generación TOTP que se usa en este proyecto genera y utiliza códigos de 6 dígitos, pero debido a mi hardware actual disponible, opté por cortar los 2 dígitos finales y mostrar y utilizar 4, posiblemente (pero no mucho) reduciendo el seguridad.

Información general

Este proyecto genera un nuevo código cada 30 segundos usando una tecla previamente compartida y la hora actual (que se mantiene al día del uso del módulo de reloj en tiempo real) y lo muestra en la pantalla cuando se presiona el botón. El caso de uso más común sería la verificación de dos factores basada en la contraseña única basada en el tiempo (TOTP) y la contraseña única basada en HMAC (HOTP) para la autenticación.

TOTP es un algoritmo que calcula una contraseña de un solo uso a partir de una clave secreta compartida y la hora actual. HTOP es un algoritmo que utiliza el algoritmo HMAC para generar una contraseña de un solo uso.

Empresas como Google, Microsoft y Steam ya utilizan la tecnología TOTP para su autenticación de dos factores

Enlaces interesantes

Artículo que explica cómo Google usa esta tecnología para autenticar a los usuarios:

Implementación de JavaScript de HOTP y TOTP que se puede usar al crear software utilizando este proyecto:

Biblioteca critográfica para Arduino utilizada en este proyecto:

Papel TOTP -

Nivel de experiencia

Este Instructable es para entusiastas que están interesados en la seguridad y pueden querer implementar un buen componente de hardware para la generación de su TOTP. Este instructivo está escrito para una audiencia que ya comprende los conceptos básicos de la interpretación de diagramas electrónicos y programación rudimentaria, pero si planea simplemente seguir este Instructable exactamente, no se preocupe si no tiene experiencia y no dude en hacer preguntas en el comentarios! Además, el proyecto también puede ser interesante para los creadores más experimentados, ya que el producto final no solo es una pieza agradable para tener a mano (en mi opinión), sino que tiene mucho potencial de expansión y nuevas funciones sin muchos problemas.

Suministros

Materiales:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Módulo de reloj en tiempo real (RTC) (Amazon)
  3. 1x SH5461AS Cátodo común de 4 dígitos y 7 segmentos (Amazon)
  4. 1x pulsador (Amazon)
  5. 1 resistencia de 10 k (Amazon)
  6. OPCIONAL 1x PCB de 5x7cm (Amazon)
  7. Cable OPCIONAL para soldar a PCB
  8. OPCIONAL 1x Placa de pruebas para pruebas (Amazon)

Paso 1: Montaje y prueba

Montaje y prueba
Montaje y prueba
Montaje y prueba
Montaje y prueba
Montaje y prueba
Montaje y prueba

Ensamble todos los componentes en la placa y conéctelos de acuerdo con el diagrama de cableado adjunto (el archivo Fritzing está aquí).

Asegúrese de tener instalado el IDE de Arduino (se puede encontrar en línea si no lo tiene) e instale las siguientes bibliotecas:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Descargue el boceto adjunto (también se puede acceder aquí: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) y ábralo usando el IDE de Arduino. Abra este enlace (https://www.lucadentella.it/OTP/) e ingrese cualquier nombre en el campo de nombre de cuenta, y una clave secreta personalizada (10 caracteres de largo) en el siguiente campo, asegurándose de guardar ambos valores. en un lugar seguro como respaldo. Copie el contenido del campo "Arduino HEX array:" y vuelva al editor Arduino, reemplazando la matriz en la línea 25 (hmacKey) con la que copió del sitio.

Después de verificar dos veces la conexión de cada cable, asegúrese de que el módulo RTC tenga una celda de moneda y conecte el Arduino a su computadora portátil con un mini cable USB y cargue el boceto adjunto.

Después de la carga, cuando se presiona el botón, debería aparecer un número en la pantalla. Si descarga la aplicación Google Authenticator en un teléfono inteligente y vuelve al sitio utilizado para generar la matriz HEX, escaneando el código QR o escribiendo el "código Google Authenticator" en la aplicación, debería ver un número que se muestra en la aplicación. Si todo funciona correctamente, cuando presione el botón, los 4 dígitos que se muestran deben coincidir con los primeros 4 del código actual que se muestra en la aplicación del teléfono inteligente. Si este no es el caso, asegúrese de que la computadora que se está utilizando para cargar el código Arduino esté configurada en la hora UTC y vuelva a intentarlo.

Paso 2: Transferencia a PCB

Transferencia a PCB
Transferencia a PCB
Transferencia a PCB
Transferencia a PCB

Después de asegurarse de que todo funciona correctamente, puede transferir los componentes a la PCB y soldar todo junto como le parezca adecuado. He adjuntado un diagrama de PCB además del archivo Fritzing (disponible aquí). Tenga en cuenta que coloqué todos los componentes en la parte superior de la placa por motivos de estética, pero también se pueden montar debajo y luego encerrar en algún tipo de carcasa para que quede más limpio. Corté y pegué palitos de helado coloreados con Sharpie en los lados del PCB para crear una caja improvisada para la unidad. Otro paso opcional es conectar un clip de batería de 9 voltios a los pines VIN y GND del Arduino, para que funcione con batería.

Paso 3: ¡Terminado

¡Finalizado!
¡Finalizado!
¡Finalizado!
¡Finalizado!
¡Finalizado!
¡Finalizado!

Así es como resultó mi generador completo, si lo siguió e hizo uno usted mismo, ¡compártalo a continuación!

¡Asegúrese de votar mi Instructable para el Concurso STEM si lo considera oportuno, y deje un comentario / cualquier pregunta que pueda tener a continuación!

Recomendado: