12 votos

¿Sigue utilizando MacOS Yarrow como generador de números pseudoaleatorios criptográficamente seguro?

Estoy tratando de entender si los fundamentos XNU de MacOS (BSD) todavía utilizan el generador de números pseudoaleatorios criptográficamente seguro Yarrow?

He mirado la fuente y parece que han cambiado a un generador DRBG NIST?

https://opensource.apple.com/source/xnu/xnu-4903.221.2/osfmk/corecrypto/ccdbrg/src/ccdrbg_nisthmac.c.auto.html

Hay muy pocas referencias a Yarrow en el código XNU de la 10.14 en comparación con versiones anteriores del Kernel, pero la 10.14 todavía contiene esta cadena en key.c :

/* Our PRNG is based on Yarrow and doesn't need to be seeded */

Dicho esto, si se mira el XNU más antiguo, la Milenrama aparece por todas partes.

Código fuente de XNU:

Muchas referencias a Yarrow en XNU 2782 - MacOS 10.11

Muy pocas referencias a Yarrow en XNU 4903 - MacOS 10.14

Entonces, ¿Apple sigue usando Aquilea?

Lo pregunto porque Yarrow sólo es capaz de generar claves fuertes de 160 bits.

6voto

Woodstock Puntos 589

Yarrow se ha ido.

El núcleo CPRNG es un diseño derivado de Fortuna con un nivel de seguridad de 256 bits.

https://support.apple.com/en-ie/guide/security/seca0c73a75b/1/web/1

¡Bien! Hace poco envié un correo a Craig Federighi sobre esto, preocupado porque MacOS no era capaz de generar claves de calidad >128bit.

¡Respondió!

'La fuente a la que te referías está desfasada. Puede encontrar información más actualizada aquí: Certificación FIPS documento En la sección 7: "El NDRNG alimenta entropía del pool en el DRBG bajo demanda. El NDRNG proporciona 256 bits de entropía".

Qué leyenda.

enter image description here

Así que sí, tanto MacOS como iOS son capaces de generar entropía de 256 bits y crear claves CS de calidad tanto para ECC como para criptografía de clave simétrica.

EDIT: Apple ha confirmado que el kernel CPRNG es un diseño derivado de Fortuna con un nivel de seguridad de 256 bits.

1voto

Michael Puntos 193

Parece que a partir del 10.14 Apple son sigue usando Milenrama.

La fuente de xnu-4903.221.2/osfmk/prng/random.h dice "...retenemos a Yarrow. " y el código posterior está condicionado a que Flecha esté codificada como verdadera:

void early_random_cpu_init(int cpu);

/*
 * Wrapper for requesting a CCKPRNG operation.
 * This macro makes the DRBG call with pre-emption disabled to ensure that
 * any attempt to block will cause a panic. And the operation is timed and
 * cannot exceed 10msec (for development kernels).
 * But skip this while we retain Yarrow.
 */
#define YARROW 1
#if YARROW
#define PRNG_CCKPRNG(op) \
    MACRO_BEGIN          \
    op;                  \
    MACRO_END
#else

Suponiendo que esté actualizado, man random en 10.14.5 lo confirma:

 The random device implements the Yarrow pseudo random number generator algorithm and maintains
 its entropy pool.  The kernel automatically seeds the algorithm with additional entropy during
 normal execution.

Si la Milenrama es suficiente o no, parece que está contemplada en su otra pregunta .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X