Aparentemente, / dev / random é baseado em interrupções de hardware ou aspectos imprevisíveis semelhantes do hardware físico. Como as máquinas virtuais não possuem hardware físico, a execução cat /dev/random
em uma máquina virtual não produz nada. Estou usando o Ubuntu Server 11.04 como host e convidado, com libvirt / KVM.
Eu preciso configurar o Kerberos dentro de uma VM, mas krb5_newrealm
trava para sempre "Carregando dados aleatórios", pois o sistema não está produzindo nenhum.
Alguém sabe como resolver isso? É possível passar o / dev / random do host (que é muito falador) para o vm para que o vm possa usar seus dados aleatórios?
Eu li que existem algumas alternativas de software, mas elas não são boas para a criptologia, pois não são aleatórias o suficiente.
EDIT: Parece que cat / dev / random na vm produz saída, muito, muito lentamente. Eu obtive minha configuração de região aguardando cerca de duas horas enquanto estava "Carregando dados aleatórios". Eventualmente, conseguiu o suficiente para continuar. Ainda estou interessado em uma maneira de acelerar isso.
cat /proc/sys/kernel/random/entropy_avail
Tudo o que aumenta que está funcionando.python -c 'while True: import time; print str(time.sleep(1))[0:0] + open("/proc/sys/kernel/random/entropy_avail", "rb").read(),'
. Sim, isso é difícil de ler, mas não vejo como inserir novas linhas nos comentários ...Eu uso o Haveged em todos os meus servidores sem cabeça que executam operações criptográficas (por exemplo, handshakes TLS, kerberos, etc.). Ele deve estar no repositório de pacotes da maioria das versões do Ubuntu: http://packages.ubuntu.com/search?keywords=haveged&searchon=names&suite=all§ion=all
O haveged usa o algoritmo HAVAGE para extrair entropia do estado interno dos processadores modernos. Aqui está uma explicação detalhada: http://www.irisa.fr/caps/projects/hipsor/
Você pode verificar a aleatoriedade da entropia gerada com o pacote ent. Nos meus sistemas, a entropia gerada a partir de Haved passou em todos os testes de aleatoriedade por ent
fonte
Sim, você pode semeá-lo, de:
http://manpages.ubuntu.com/manpages/jaunty/man4/random.4.html
Você pode simplesmente colocar isso em / dev / urandom e deve propagar o pool de entropia. Consegui confirmar isso:
Bônus se você fizer o comando ssh passar por um roteador para gerar entropia * :)
fonte
Isso funcionou para mim
A execução do krb5_newrealm dentro de uma VM pode levar muito tempo para ser concluída (depois de mostrar a mensagem "Carregando dados aleatórios"). Você pode usar o seguinte hack para acelerar um pouco as coisas.
postado em http://fossies.org/linux/john/doc/Kerberos-Auditing-HOWTO.md
fonte
A resposta do X86 é garantir que sua VM não prenda o RdRand ou o RdSeed. Você confia na sua VM para muitas coisas, este é um deles.
Um RNGd suficientemente recente em uma CPU Snady Bridge pós (ou pode ser dito para) usar RdRand ou RdSeed, e um RdRand ou RdSeed não capturado obtém entropia na VM. O / dev / random funciona então com uma fonte real (não virtual) de entropia.
Isso não é por acaso. Está ali nos documentos da arquitetura Intel.
Para uma fonte de entropia de hardware baseada em dispositivo (o IE usa um driver de kernel para compartilhá-lo), você precisa da VM para virtualizar corretamente a fonte física. Não faço idéia se eles fazem isso e, em caso afirmativo, para quais dispositivos.
Se o seu RNGd não tiver a opção drng abaixo, atualize-a. Se o seu hardware não possui um RNG de hardware rápido, você está condenado e deve considerar o uso de hardware diferente para fins de segurança.
fonte
Eu estava tendo problemas com o krb5_newrealm pendurado também. Isso funcionou bem para mim, com base na resposta acima:
Você pode querer matá-lo quando terminar de precisar de dados aleatórios. / dev / sda provavelmente possui mais dados do que você precisa.
Nota: Não tenho certeza de quão aleatórios são os dados aleatórios gerados dessa maneira.
fonte