Je lis beaucoup sur l'entropie sur macOS ...
Je sais qu'il n'utilise plus Yarrow selon this FIPS 140-02 doc un DRBG compatible NIST).
Je lis beaucoup:
https://github.com/briansmith/ring/pull/398Comment puis-je mesurer (et augmenter) l'entropie sur Mac OS X?https://stackoverflow.com/questions/5832941/how-good-is-secrandomcopybyteshttp://serverascode.com/2014/03/04/yarrow.htmlhttps://stackoverflow.com/questions/3170500/random-number-generator-dev-randomhttps://stackoverflow.com/questions/42197958/secrandomcopybytes-provider-sha1prng-or-nativeprng-type-in -objc
Même envoyé par courrier électronique Craig F: https://Apple.stackexchange.com/questions/362531/does-macos-still-use-yarrow-as-its-cryptographically-secure-pseudorandom-number
Je constate que SecRandomCopyBytes
utilise désormais efficacement:
Tandis que /dev/urandom
les usages:
https://opensource.Apple.com/source/xnu/xnu-4570.41.2/osfmk/prng/random.c.auto.html
J'ai beaucoup de vieux code utilisant /dev/urandom
, sur Catalina est-il toujours valable d'utiliser /dev/urandom/
pour le matériel clé, est-il cryptographiquement sécurisé?
Je ne veux pas tout porter sur une bibliothèque spécifique à macOS.
Même libsodium
semble utiliser /dev/urandom
, donc je suppose que ça va?
Donc, quelque peu fortuitement, Apple a publié une mise à jour guide de sécurité de la plate-forme en décembre vient de disparaître (décembre 2019).
Qui couvre directement génération de nombres aléatoires à des fins cryptographiques:
Génération de nombres aléatoires
Les générateurs de nombres pseudo-aléatoires cryptographiques (CPRNG) sont un élément important pour les logiciels sécurisés. À cette fin, Apple fournit un logiciel de confiance CPRNG fonctionnant dans les noyaux iOS, iPadOS, macOS, tvOS et watchOS. Il est chargé d'agréger l'entropie brute du système et de fournir des numéros aléatoires sécurisés aux consommateurs. dans le noyau et l'espace utilisateur.
Sources d'entropie
Le noyau CPRNG est issu de plusieurs sources d'entropie pendant le démarrage et pendant la durée de vie de l'appareil. Ceux-ci comprennent (sous réserve de disponibilité):
* The Secure Enclave’s hardware RNG * Timing-based jitter collected during boot * Entropy collected from hardware interrupts * A seed file used to persist entropy across boots * Intel random instructions, i.e. RDSEED and RDRAND (macOS-only)
Le noyau CPRNG
Le noyau CPRNG est une conception dérivée de Fortuna ciblant un niveau de sécurité
256-bit
. Il fournit des nombres aléatoires de haute qualité aux consommateurs de l'espace utilisateur à l'aide des API suivantes:* The getentropy(2) system call * The random device, i.e. `/dev/random`
Le noyau CPRNG accepte l'entropie fournie par l'utilisateur via des écritures sur le périphérique aléatoire.
Donc, la réponse est Oui , il est toujours valide d'utiliser/dev/urandom/pour générer du matériel clé sur macOS Catalina (10.15.2 (19C57)
).
Cela met également fin à mes spéculations sur la question de savoir si 160-bit Yarrow
Ou 256-bit Fortuna
Était au cœur du CSPRNG.