Índice:
Vídeo: Gerador Arduino TOTP: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
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:
- 1x Arduino Nano (Amazon)
- 1x DS3231 AT24C32 Módulo de Relógio em Tempo Real (RTC) (Amazon)
- 1x SH5461AS Cátodo Comum de 4 dígitos e 7 segmentos (Amazon)
- 1x botão (Amazon)
- 1x resistor de 10k (Amazon)
- PCB OPCIONAL 1x 5x7cm (Amazon)
- Fio OPCIONAL para soldar em PCB
- OPCIONAL 1x breadboard para teste (Amazon)
Etapa 1: 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
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
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:
Como usar o gerador de sinal de frequência Arduino DDS AD9850: 7 etapas
Como usar o Arduino DDS Frequency Signal Generator AD9850: Neste tutorial, aprenderemos como fazer um gerador de sinais de frequência usando um módulo AD9850 e Arduino. Assistir ao vídeo! Nota: Consegui obter a frequência de até + 50 MHz, mas a qualidade do sinal fica pior com as frequências mais altas
Gerador / testador de 4-20ma usando Arduino: 8 etapas
Gerador / testador de 4-20ma usando Arduino: geradores de 4-20mA estão disponíveis no ebay, mas eu adoro a parte DIY das coisas e usar as peças que tenho por aí. Eu queria testar as entradas analógicas do nosso PLC para verificar nossas leituras de scada e para testar a saída de instrumentos de 4-20 mA. Existem loa
Gerador de sinal RF 100 KHz-600 MHZ no DDS AD9910 Escudo Arduino: 5 etapas
Gerador de sinais RF 100 KHz-600 MHZ no DDS AD9910 Arduino Shield: Como fazer baixo ruído, alta precisão e gerador de RF estável (com AM, modulação FM) no Arduino
Gerador de folha a laser interativo com Arduino: 11 etapas (com imagens)
Gerador de folha de laser interativo com Arduino: Os lasers podem ser usados para criar efeitos visuais incríveis. Neste projeto, construí um novo tipo de display a laser que é interativo e toca música. O dispositivo gira dois lasers para formar duas folhas de luz semelhantes a vórtices. Incluí sensor de distância
Gerador - Gerador DC usando chave Reed: 3 etapas
Gerador - Gerador DC usando interruptor Reed: Gerador DC simples Um gerador de corrente contínua (DC) é uma máquina elétrica que converte energia mecânica em eletricidade de corrente contínua. Importante: Um gerador de corrente contínua (DC) pode ser usado como um motor DC sem qualquer tipo de construção alterar