Entropia (computação)
Este artigo é órfão, pois não contém artigos que apontem para ele. |
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 | editar código-fonte]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 | editar código-fonte]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
- ↑ random(4) - Linux man page (die.net)
- ↑ Robotic Tendencies » Missing entropy
- ↑ Fedora Package Database - audio-entropyd
- ↑ «haveged - A simple entropy daemon». Consultado em 3 de abril de 2011
- ↑ Entropy and Random Devices | LinuxLink by TimeSys - Your Embedded Linux Resource
- ↑ High-Entropy Randomness Generator
- ↑ GPL command-line shred alternative for Windows
- ↑ Source for entropy on Windows platforms with CryptoAPI installed
- ↑ How does Windows GnuPG generate random numbers on keygen?
- ↑ http://www.cs.berkeley.edu/~daw/rnd/cryptoapi-rand http://archives.seul.org/or/cvs/Mar-2004/msg00078.html
- ↑ [1]
- ↑ https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/uefi-entropy-gathering-protocol