De acordo com man 4 random
The random device implements the Yarrow pseudo random number generator algorithm and maintains its entropy pool. Additional entropy is fed to the generator regularly by the SecurityServer daemon from random jitter measurements of the kernel. SecurityServer is also responsible for periodically saving some entropy to disk and reloading it during startup to provide entropy in early system operation.
Como uma nota lateral / dev / urandom é o mesmo que / dev / random no OSX. (também em man 4 random
)
/dev/urandom is a compatibility nod to Linux.
O gerador de números pseudo-aleatórios Yarrow usa "colheita de entropia" de atividades normais, como movimento do mouse ou entrada de teclado para gerar números aleatórios. O FreeBSD tem uma implementação que você pode ler para ver como o gerador de números pseudo-aleatórios Yarrow é implementado na prática.
No entanto, você está perguntando se o OSX está ou não usando instruções RDRAND em sua implementação, mas como o OSX é de código fechado, só podemos confiar no que eles nos dizem e não encontramos em nenhum lugar que mencione quais bibliotecas o OSX usa. seus números aleatórios.
Parece que você quer uma garantia (como a maioria de nós) de que os números dados por / dev / random serão realmente criptograficamente seguros, portanto, quando criarmos chaves DSA ou RSA, saberemos que ninguém além do público-alvo poderá obter acesso. Infelizmente, independentemente do que você possa encontrar sobre como o OSX deve gerar seus números aleatórios, nunca poderíamos verificá-lo, já que não temos a fonte.
Como tão bem colocado na fonte do Linux 3.13.0:
The arch-specific hw RNG will almost certainly be faster than what we can do in software, but it is impossible to verify that it is implemented securely (as opposed, to, say, the AES encryption of a sequence number using a key known by the NSA). So it's useful if we need the speed, but only if we're willing to trust the hardware manufacturer not to have put in a back door.
Se você quiser ler como é feito no Linux quando não depende do hardware, leia root/drivers/char/random.c no código-fonte. Os comentários são surpreendentemente úteis para ver o que está acontecendo e dar uma visão completa da teoria por trás de tudo isso.
Em suma, se você quiser uma garantia melhor de que seus números aleatórios sejam criptograficamente seguros, eu recomendaria obter seus números aleatórios com uma verdade on-line. gerador de números aleatórios ou use o Linux para fazer suas chaves (que você também pode adicionar a entrada de um verdadeiro gerador de números aleatórios).