Autenticação Segura / Teclado Inteligente de Criptografia

1

Devido à natureza de uma sub-rede pessoal (endurecida por fora, confiante / ingênua por dentro), estou iniciando um projeto em minha rede (roteado por um desktop Ubuntu 15.04 com criptografia de tráfego público / local OpenVPN) no qual Eu estou apontando para a segurança completamente paranóica e possivelmente excessiva para evitar uma violação interna (malware instalado em uma sub-rede de infecção do cliente LAN).

Entre inúmeros outros projetos em que estou prestes a participar é um "Teclado Inteligente". Estou com o objetivo de evitar certos ataques baseados em HID, como keyloggers de hardware e exploração do BadUSB. Para fazer isso, estou modificando um teclado padrão, eviscerando a placa do driver e instalando um micro-controlador, como um Teensy, para ler a voltagem de entrada, autenticar no computador usando rsa / ecdsa ou outra cifra assimétrica e criptografar as teclas no AES com um rolando código sincronizado com o computador para evitar o potencial de um ataque de repetição.

O lado do hardware parece bastante simples, assim como a criptografia e a descriptografia de dados. A parte em que preciso de ajuda é a falta de compreensão de como os dispositivos HID se comunicam com um sistema, ou seja, o Ubuntu (que tipo de dados pode ser lido por um dispositivo HID padrão?) E como anexar um processo para lidar com descriptografia de dados .

Eu li em / etc / udev / some e parece que a execução de scripts não é normalmente destinada a aplicações de longa duração como esta. Como eu faria para executar um 'handler' para o teclado e este script receberia exclusivamente os dados, ou seria apenas ler stdin, já que é um script userspace e os dispositivos HID são manipulados pelo kernel?

Por fim, seria melhor abrir um 'canal' para o Teensy em vez de usá-lo como um dispositivo HID? Estou relutante em fazer isso porque isso tornaria o teclado inutilizável durante a inicialização.

Não estou necessariamente procurando respostas diretas, mas possivelmente recursos para estudo. Eu só preciso de alguém para me apontar na direção certa.

Cumprimentos,
Lisenby

    
por alisenby94 26.09.2015 / 07:42

1 resposta

1
  • Não sou especialista, AFAIK, o melhor é criar um novo driver (módulo de kernel) para o novo teclado criptografado.

    Aqui está um projeto pequeno e fácil de entender.

      

    Nome extenso: Driver de chipset de teclado Linux Microdia
       Nome abreviado: aziokbd
       Autor: Colin Svingen (Swoogan)
       Página inicial do projeto: link

    Ele está usando o DKMS, portanto, não é necessário reconstruir o kernel do Linux.

  • Não tenho conhecimento sobre ferramentas de criptografia, por isso não posso ajudar em como lidar com o fluxo de dados criptografados.

  • udev em poucas palavras, é parte do daemon de systemd . Ele ajuda a criar configurações / configurações dinâmicas ea executar scripts personalizados sempre que as condições coincidirem quando um nó de dispositivo é criado, alterado ou removido da árvore do kernel. ( /sys é um FS virtual que mostra a mesma árvore atualmente no kernel).

    Ele irá ajudá-lo, mas não é o que você está procurando.

  • Outra opção, usando o driver / daemon do espaço do usuário. Nesse caso, você precisa acessar o dispositivo USB usando libusb . Mesma maneira que xboxdrv (driver para o controlador xbox) e xsane (ferramenta para scanners).

por user.dz 26.09.2015 / 21:33