Índice:

Gerador Arduino TOTP: 3 etapas
Gerador Arduino TOTP: 3 etapas

Vídeo: Gerador Arduino TOTP: 3 etapas

Vídeo: Gerador Arduino TOTP: 3 etapas
Vídeo: TOTP Arduino authenticator with USB keyboard emulation 2024, Novembro
Anonim
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator

Inspiração

Tendo um amigo interessado em criptografia e segurança, eu queria criar o presente de aniversário perfeito.

* Este é um projeto que fiz como um presente de aniversário e foi criado dentro de um prazo apertado (desculpe o trabalho confuso)

NOTA: A geração TOTP que é usada neste projeto gera e utiliza códigos de 6 dígitos, mas devido ao meu hardware disponível atualmente, optei por cortar os 2 dígitos finais e exibir e utilizar 4, discutivelmente (mas não muito) reduzindo o segurança.

Informações gerais

Este projeto gera um novo código a cada 30 segundos usando uma chave pré-compartilhada e a hora atual (que é registrada usando o módulo de relógio em tempo real) e o exibe no display quando o botão é pressionado. O caso de uso mais comum seria a verificação de dois fatores com base em senha única baseada em tempo (TOTP) e senha única baseada em HMAC (HOTP) para autenticação.

TOTP é um algoritmo que calcula uma senha descartável a partir de uma chave secreta compartilhada e a hora atual. HTOP é um algoritmo que usa o algoritmo HMAC para gerar uma senha descartável.

Empresas como Google, Microsoft e Steam já usam a tecnologia TOTP para sua autenticação de dois fatores

Links interessantes

Artigo que explica como o Google usa essa tecnologia para autenticar usuários -

Implementação de JavaScript de HOTP e TOTP que pode ser usada ao criar software utilizando este projeto -

Biblioteca criptográfica para Arduino usada neste projeto -

Artigo TOTP -

Nível de especialização

Este Instructable é para entusiastas que estão interessados em segurança e podem querer implementar um bom componente de hardware para a geração de seu TOTP. Este Instructable foi escrito para um público que já entende os fundamentos da interpretação de diagramas eletrônicos e programação rudimentar, mas se você planeja simplesmente seguir exatamente este Instructable, não se preocupe se não tiver experiência e sinta-se à vontade para fazer perguntas no comentários! Além disso, o projeto também pode ser interessante para fabricantes mais experientes, já que o produto final não é apenas uma boa peça de se ter por perto (na minha opinião), mas tem muito potencial de expansão e novos recursos sem muitos problemas.

Suprimentos

Materiais:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Módulo de Relógio em Tempo Real (RTC) (Amazon)
  3. 1x SH5461AS Cátodo Comum de 4 dígitos e 7 segmentos (Amazon)
  4. 1x botão (Amazon)
  5. 1x resistor de 10k (Amazon)
  6. PCB OPCIONAL 1x 5x7cm (Amazon)
  7. Fio OPCIONAL para soldar em PCB
  8. OPCIONAL 1x breadboard para teste (Amazon)

Etapa 1: montagem e teste

Montagem e Teste
Montagem e Teste
Montagem e Teste
Montagem e Teste
Montagem e Teste
Montagem e Teste

Monte todos os componentes na placa de ensaio e conecte-os de acordo com o diagrama de fiação anexado (arquivo Fritzing está aqui).

Certifique-se de ter o IDE do Arduino instalado (ele pode ser encontrado online se você não tiver) e instale as seguintes bibliotecas:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Baixe o esboço em anexo (também pode ser acessado aqui: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) e abra-o usando o IDE Arduino. Abra este link (https://www.lucadentella.it/OTP/) e insira qualquer nome no campo do nome da conta e uma chave secreta personalizada (10 caracteres) no campo a seguir, certificando-se de salvar ambos os valores em um local seguro para backup. Copie o conteúdo do campo "Arduino HEX array:" e volte para o editor do Arduino, substituindo o array na linha 25 (hmacKey) pelo que você copiou do site.

Depois de verificar cada conexão de fio, certifique-se de que o módulo RTC tenha uma célula tipo moeda e conecte o Arduino ao seu laptop usando um mini cabo USB e carregue o esboço em anexo.

Após o upload, quando o botão é pressionado, um número deve aparecer na tela. Se você baixar o aplicativo Google Authenticator em um smartphone e voltar ao site usado para gerar a matriz HEX, digitalizando o código QR ou digitando o "código Google Authenticator" no aplicativo, você verá um número mostrado no aplicativo. Se tudo estiver funcionando corretamente, ao pressionar o botão, os 4 dígitos exibidos devem corresponder aos 4 primeiros do código atual mostrado no aplicativo do smartphone. Se este não for o caso, certifique-se de que o computador que está sendo usado para fazer o upload do código do Arduino esteja configurado para a hora UTC e tente novamente.

Etapa 2: Transferência para PCB

Transferindo para PCB
Transferindo para PCB
Transferindo para PCB
Transferindo para PCB

Depois de verificar se tudo está funcionando bem, você pode transferir os componentes para a placa de circuito impresso e soldar tudo da maneira que achar melhor. Anexei um diagrama de PCB além do arquivo Fritzing (disponível aqui). Observe que coloquei todos os componentes na parte superior da placa para fins estéticos, mas também podem ser montados por baixo e, em seguida, colocados em algum tipo de caixa para torná-lo mais limpo. Cortei e colei palitos de picolé coloridos com caneta Sharpie nas laterais do PCB para criar uma caixa improvisada para a unidade. Outra etapa opcional é conectar um clipe de bateria de 9 volts aos pinos VIN e GND do Arduino, tornando-o operado por bateria.

Etapa 3: Concluído

Finalizado!
Finalizado!
Finalizado!
Finalizado!
Finalizado!
Finalizado!

Este é o resultado do meu gerador completo, se você acompanhou e fez um você mesmo, compartilhe abaixo!

Certifique-se de votar no meu Instructable para o Concurso STEM se você achar necessário, e deixe um comentário / qualquer pergunta que você possa ter abaixo!

Recomendado: