
Generazione di numeri casuali
I generatori di numeri pseudocasuali crittograficamente sicuri (CPRNG) sono una componente estremamente importante del software sicuro. Per questo motivo Apple ha dotato i kernel iOS, iPadOS, macOS, tvOS, visionOS e watchOS di un software CPRNG attendibile, che si incarica di unire l’entropia del sistema e di fornire numeri casuali sicuri ai consumatori sia nel kernel che nello spazio utente.
Sorgenti di entropia
Il CPRNG del kernel è alimentato da più sorgenti di entropia durante l’avvio e la vita del dispositivo, tra cui (in base alla disponibilità):
Il generatore di numeri casuali hardware (TRNG) di Secure Enclave
I valori del jitter del momento raccolti durante l’avvio
I valori relativi all’entropia raccolti dagli interrupt hardware
Un file seed usato per far perdurare l’entropia tra gli avvii
Istruzioni casuali Intel, come ad esempio RDSEED e RDRAND (solo sui Mac dotati di processore Intel)
Il CPRNG del kernel
Il CPRNG del kernel è un design di tipo Fortuna che punta a un livello di sicurezza a 256 bit. Fornisce numeri casuali di alta qualità ai consumatori dello spazio utente tramite le seguenti API:
La chiamata di sistema
getentropy(2)Il dispositivo casuale (
/dev/random)
Il CPRNG del kernel accetta l’entropia fornita dall’utente scrivendo sul dispositivo casuale.