
Generación de números aleatorios
Los generadores pseudoaleatorios de números criptográficos (CPRNG) son un componente fundamental para un software seguro. Para ello, Apple proporciona un CPRNG de software de confianza que se ejecuta en los kernels de iOS, iPadOS, macOS, tvOS, visionOS y watchOS. Se encarga de recopilar la entropía en formato nativo del sistema y proporcionar números aleatorios seguros a los consumidores, tanto en el kernel como en el espacio del usuario.
Fuentes de entropía
El CPRNG del kernel recibe semillas de software de varias fuentes de entropía durante el arranque y a lo largo de la vida útil del dispositivo. Entre ellas se incluyen (dependiendo de la disponibilidad):
el generador de números aleatorios verdaderos del hardware de Secure Enclave;
jitter basado en los tiempos recopilado durante el arranque;
entropía recopilada de las interrupciones del hardware;
un archivo de semilla de software que se usa para que la entropía no cambie de un arranque a otro;
instrucciones aleatorias de Intel, como RDSEED y RDRAND (solo en un Mac basado en Intel).
El CPRNG del kernel
El CPRNG del kernel es un diseño derivado de Fortuna cuyo objetivo es conseguir un nivel de seguridad de 256 bits. Proporciona números aleatorios de alta calidad a los consumidores del espacio del usuario usando las siguientes API:
la llamada al sistema
getentropy(2);el dispositivo aleatorio (
/dev/random).
El CPRNG del kernel acepta entropía proporcionada por el usuario a través de escrituras en el dispositivo aleatorio.