alg: drbg: could not allocate DRNG handle for ...
Só vejo esse erro no console durante o processo de inicialização das máquinas virtuais que criamos. EDIT: 05/02/16 - Também vejo isso em algumas instalações bare-metal. (Ele continua inicializando completamente.) Presumo que tenha algo a ver com o hardware virtualizado e a falta de um gerador de números aleatórios (compatível). O problema é que não consigo avaliar a gravidade. A força da criptografia está comprometida? (Devo me importar com esse erro?) Como posso corrigi-lo?
Estamos usando QEMU/KVM no CentOS 6.7. Posso fazer um virsh dumpxml
exemplo de sistema se você realmente achar que isso ajudará. Estamos usando o tamanho de chave/cifra padrão do Anaconda . (aes-xts-plain64/512)
Esta é a referência mais antiga que encontrei na lista de discussão linux-crypto . Infelizmente, é um pouco sobre a minha cabeça.
http://www.mail-archive.com/linux-crypto%40vger.kernel.org/msg10398.html
Conscientemente, não acredito que isso afete a força de sua criptografia.
Eu verifiquei o código-fonte e, desde que eu esteja interpretando o que li corretamente, você não precisa necessariamente se preocupar com isso.
Este código pertence ao módulo 'stdrng'. Pelo menos no Fedora 23, isso é incorporado ao kernel, em vez de exportado como um módulo do kernel.
Quando stdrng é inicializado pela primeira vez, ocorrem as seguintes chamadas.
Em crypto/drbg.c, a inicialização começa aqui.
Isso registra todos os drbgs conhecidos pelo sistema.
Em seguida, ele passa para uma função auxiliar que executa a inicialização:
Neste
crypto/rng.c
apenas itera através de cada rng para registrá-lo.Essa função faz várias etapas de inicialização e chama outra função para alocação.
O que não é tão óbvio é o que acontece durante o registro.
Outro módulo chamado
tcrypt
também embutido no kernel recebe notificações de novos algoritmos sendo inseridos. Uma vez que ele vê um novo algoritmo registrado, ele agenda um teste dele. Isso é o que produz a saída que você vê na tela.Quando o teste termina, o algoritmo entra no estado TESTADO. Se o teste falhar, imagino (não consegui encontrar o bit que produz esse comportamento) que não é selecionável para pesquisa se você passar os sinalizadores corretos.
Se o teste passa ou não, é definitivamente armazenado internamente.
Além disso, chamar o psudeo gerador de números aleatórios faz com que uma lista de algoritmos seja iterada de prngs em ordem de força, conforme ditado por esta nota em
crypto/drbg.c
Como o mais forte não falha (hmac sha256), é improvável que você esteja usando os com falha, mesmo que possam ser selecionados.
Para resumir -
stdrng
módulo é necessário para algo.stdrng
esperançosamente não devem usar esses algoritmos como base para sua fonte PRNG.Você pode ver quais algoritmos tiveram sucesso e passaram nos testes usando o seguinte comando:
Você também pode ver a prioridade de seleção com o campo 'prioridade'. Quanto maior o valor, mais forte é o PRNG de acordo com o autor do módulo.
Então, feliz por estar errado aqui, pois não me considero um programador de kernel, mas, em conclusão -
Quando
stdrng
carregado, parece selecionar outros algoritmos da lista de algoritmos aceitáveis que são considerados mais fortes do que os com falha, e os com falha provavelmente não são selecionados de qualquer maneira.Como tal, acredito que não há risco adicional para você ao usar luks.
De acordo com a Base de Conhecimento da Red Hat , você deve adicionar o módulo 'ctr' do Kernel ao seu initrd. Suas instruções também dizem para incluir 'ecb', embora pareça que o problema é que o módulo 'ctr' não está sendo carregado.
Os assinantes podem ver as informações completas. Não tenho certeza se tenho permissão para republicar o resto aqui, então parafraseei a solução completa.
https://access.redhat.com/solutions/2249181
Editar 29/09/2016:
Você também pode adicionar esses drivers para
/etc/dracut.conf
que sejam adicionados ao novo initramfs nas atualizações do Kernel. Caso contrário, seus sintomas reaparecem misteriosamente muitos meses depois. ;)