Entropia (computação)

Na computação, entropia é a aleatoriedade coletada por um sistema operacional ou aplicativo para uso em criptografia ou outros usos que requerem dados aleatórios. Essa aleatoriedade é frequentemente coletada de fontes de hardware (variação no ruído do ventilador ou no HDD), tanto aquelas preexistentes como movimentos do mouse ou geradores de aleatoriedade especialmente fornecidos. A falta de entropia pode ter um impacto negativo no desempenho e na segurança.

Núcleo do Linux editar

O núcleo do Linux gera entropia a partir do pressionamento de teclas do teclado, movimentos do mouse e interações da interface IDE e disponibiliza os dados de caracteres aleatórios para outros processos do sistema operacional por meio dos arquivos especiais /dev/random e /dev/urandom. Esse recurso foi introduzido na versão 1.3.30 do Linux.[1]

Existem alguns patches do kernel do Linux que permitem usar mais fontes de entropia.[2] O projeto audio_entropyd, que está incluído em alguns sistemas operacionais, como o Fedora, permite que dados de áudio sejam usados ​​como fonte de entropia.[3] Também estão disponíveis o video_entropyd, que calcula dados aleatórios de uma fonte de vídeo, e o entropybroker que inclui esses três e pode ser usado para distribuir os dados de entropia para sistemas que não são capazes de executar nenhum deles (por exemplo, máquinas virtuais). Além disso, pode-se usar o algoritmo HAVEGE, por meio do haveged, para agrupar a entropia.[4] Em alguns sistemas, as interrupções de rede também podem ser usadas como fonte de entropia.[5]

Em sistemas que usam o núcleo do Linux, os programas que precisam de quantidades significativas de dados aleatórios de /dev/urandom não podem coexistir com programas que leem pequenos dados de /dev/random, pois /dev/urandom esgota /dev/random sempre que está sendo lido.[6]

Windows editar

Os lançamentos do Microsoft Windows mais recentes que o Windows 95 usam a CryptoAPI para reunir a entropia de maneira semelhante ao /dev/random do núcleo do Linux.[7]

A CryptoAPI do Windows usa a chave binária de registro do Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed para armazenar um valor semeado de todas as fontes de entropia.[8]

Como a CryptoAPI é de código fechado, alguns aplicativos de software livre e de código aberto executados na plataforma Windows usam outras medidas para obter aleatoriedade. Por exemplo, o GnuPG, a partir da versão 1.06, usa uma variedade de fontes, como o número de bytes livres na memória que, combinados com uma semente aleatória, gera a aleatoriedade desejada.[9]

Programadores que usam a CAPI podem obter entropia chamando CryptGenRandom() da CAPI, após inicializá-la corretamente.[10]

O CryptoAPI foi descontinuado do NT 6.0 e superior. A nova API é chamada de Cryptography API: Next Generation (CNG).[11]

A versão mais recente do Windows é capaz de usar uma variedade de fontes de entropia:

  • TPM se disponível e ativado na placa-mãe
  • Entropia da interface UEFI (se inicializada pela UEFI)[12]
  • Instrução da CPU RdRand, se disponível
  • Relógio do sistema de hardware (RTC)
  • Conteúdo da tabela OEM0 ACPI

Referências

Ligações externas editar