Este artículo explora la generación de números aleatorios en las plataformas de Apple, desde las funciones de la biblioteca estándar hasta los mecanismos subyacentes del sistema operativo. Inicialmente, se considera rand(3), pero rápidamente se descarta debido a que está obsoleta y se recomienda su reemplazo por arc4random(3). arc4random(3) utiliza un generador de números pseudoaleatorios criptográficamente seguro y es la opción preferida para la mayoría de los casos de uso, ofreciendo una alta calidad y velocidad. Se explica que arc4random(3) se basa en una capa inferior llamada ccrng, que forma parte del proyecto corecrypto, un componente fundamental del sistema operativo que proporciona funciones criptográficas. Aunque corecrypto es una API privada, su existencia explica cómo arc4random(3) puede acceder a sus funciones. El artículo también menciona brevemente /dev/random y /dev/urandom, pero indica que en las plataformas de Apple, ambos dispositivos son idénticos y proporcionan un generador de números aleatorios criptográficamente seguro basado en el algoritmo Fortuna. La principal conclusión es que arc4random(3) es la mejor opción para la mayoría de las aplicaciones que requieren números aleatorios en macOS e iOS, debido a su rendimiento, seguridad y la recomendación explícita de Apple. El artículo también advierte sobre el uso de APIs privadas como corecrypto para fines distintos a la investigación de seguridad, ya que su licencia lo prohíbe. Finalmente, se destaca que las funciones rand(3), random(3) y rand48(3) requieren una siembra explícita, a diferencia de arc4random(3), lo que simplifica su uso.
Números aleatorios en Apple: guía y alternativas
Fuentes:
Randomness on Apple Platforms
