Estou no processo de projetar e construir um gerador de números aleatórios quânticos para aplicativos de alta segurança (e potencialmente data centers). Como parte disso, gostaria de alimentar os números aleatórios gerados pelo meu dispositivo /dev/random/
para que os usuários finais não precisem modificar seus aplicativos para usar uma nova fonte RN. Eles seriam capazes de conectá-lo e melhorar a entropia em `/dev/random/'.
Obviamente, terei que escrever um driver de dispositivo para lidar com a obtenção de dados aleatórios do meu dispositivo por USB ou PCI-E (ainda não decidi qual interface usarei). No entanto, não tenho ideia de como poderia adicionar esses dados aleatórios ao pool de entropia disponível para /dev/random/
qualquer ideia?
A outra opção (eu acho) seria substituir /dev/random/
pelo driver do meu dispositivo e garantir que ele tenha todos os comportamentos necessários, mas isso não parece uma boa ideia ...
Isso é extremamente difícil de conseguir, pois você também teria que replicar todas as interfaces atuais e futuras, ou quebraria muitas coisas. Talvez dê uma olhada no código-fonte para obter uma impressão dele (interfaces de saída e entrada documentadas em comprimento em um comentário de código-fonte).
Depende. Por exemplo, existem "geradores aleatórios" que apenas fingem ser teclados USB e enviam dados aleatórios (ou senhas, chaves de criptografia, almofadas de tempo, ...) em drivers existentes.
Em geral, a entropia do sistema pode ser influenciada a partir do espaço do usuário, veja
systemd-random-seed.service
ou oRNDADDENTROPY
ioctl que foram usados e outras ferramentas desse tipo.Com todos esses métodos, no entanto, o kernel ainda está no controle dos dados retornados pelos
/dev/[u]random
dispositivos. Você não pode prever isso. Se você quiser que ele use literalmente os dados aleatórios que você mesmo produziu, você terá que lê-los diretamente do seu dispositivo sem passar pelo dispositivo aleatório do kernel.