Quais fontes de entropia são usadas pelo kernel do Linux?


14

man 4 random tem uma descrição muito vaga das fontes de entropia do kernel do Linux:

O gerador de números aleatórios reúne ruído ambiental de drivers de dispositivo e outras fontes em um pool de entropia.

As transferências de Entropia em papel no Gerador de Números Aleatórios do Linux também não são muito mais específicas. Ele lista:

  • add_disk_randomness(),
  • add_input_randomness()e
  • add_interrupt_randomness().

Estas funções são de random.c, o que inclui o seguinte comentário:

As fontes de aleatoriedade do ambiente incluem temporizações no teclado, temporizações entre interrupções de algumas interrupções e outros eventos que são (a) não determinísticos e (b) difíceis para um observador externo medir.

Mais abaixo, existe uma função add_hwgenerator_randomness(...)indicando suporte para geradores de números aleatórios de hardware.

Todas essas informações são bastante vagas (ou, no caso do código-fonte, exigem um conhecimento profundo do kernel do Linux para entender). Quais são as fontes de entropia atuais usadas e o kernel Linux suporta qualquer gerador de números aleatórios de hardware pronto para uso?

Respostas:


4

Atualmente, a maioria dos hardwares para PC de commodities possui um gerador de números aleatórios. A VIA Semiconductor os coloca em seus processadores há muitos anos; o kernel do Linux possui o driver via-rng para isso. Conto 34 módulos de origem no drivers/char/hw_random/diretório da árvore de origem mais recente, incluindo drivers para hardware Intel e AMD e para sistemas que possuem um dispositivo TPM. Você pode executar o daemon rng (rngd) para enviar dados aleatórios ao pool de entropia do kernel.


Parece uma grande parte da resposta que eu estava procurando. Vou dar uma olhada mais profunda no que está contido lá assim que eu fizer isso. Juntamente com as informações já contidas na pergunta, parece uma lista abrangente de fontes de entropia.
precisa saber é o seguinte

E para ver o que está disponível em um PC específico cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Sim, ele suporta geradores de entropia de hardware prontos para uso. Isso é necessário para servidores SSL de alta carga com muitas conexões simultâneas iniciadas por segundo (Gmail, Facebook, Microsoft, etc.). Realmente não é necessário para servidores domésticos ou servidores de pequenas organizações. Lembre-se de que os geradores de entropia de hardware geralmente usam interfaces PCI, nada sofisticado lá, para que ele possa ser suportado facilmente. Não tenho certeza se existem geradores de entropia de hardware proprietários que exigem drivers de código fechado, provavelmente não, pois não é muito difícil e não é um setor muito lucrativo (de qualquer maneira, diferente das placas gráficas).

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
Servidores de alto volume não requerem um RNG de hardware mais do que servidores de baixo volume. Uma vez que a máquina foi semeada com entropia suficiente, ela pode continuar funcionando em um PRNG para sempre (ou pelo menos por bilhões de anos, o que é o mesmo na prática). Os tipos de computadores que realmente precisam de um RNG de hardware são dispositivos incorporados que não podem salvar seu estado atual de RNG com segurança quando desligados.
Gilles 'SO- stop be evil'

@ Gilles: isso é válido para outros sistemas além do Linux? Eu sei que o Linux faz isso, mas nunca ouvi falar de * BSDs, incluindo o OS X (nem o Windwos).
precisa saber é o seguinte

1
@JensErat eu não sei. É fácil de implementar e muito útil, então eu ficaria surpreso se o BSD não fizesse isso.
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.