¿Cómo se “agita” la entropía en el TPM de Microsoft?

0

Página 14 de La abstracción del TPM de Microsoft dice que se permite" agitar "

  

Una llamada a BCryptGenRandom llenará el búfer proporcionado por la persona que llama con   datos aleatorios. El tamaño máximo de un número aleatorio está limitado a 4,096 bytes.   por llamada. El proveedor puede hacer varios viajes de ida y vuelta al TPM para completar   el búfer de la persona que llama y la llamada se bloqueará hasta que la solicitud sea   satisfecho.

     

El proveedor también admite "revolver" el RNG en el TPM,   proporcionando la bandera BCRYPT_RNG_USE_ENTROPY_IN_BUFFER con la llamada   BCryptGenRandom. Si se establece esta bandera, el proveedor agitará la   generador de entropía en el TPM con los datos en el búfer de la persona que llama. Si   el búfer es más grande que 256 bytes, solo los primeros 256 bytes serán   utilizado.

(nota para el lector, "bcrypt" al que se hace referencia anteriormente no tiene relación con el algoritmo de hash, es un descriptor de una tecnología MSFT)

Pregunta

  • ¿Cómo se utiliza esta entrofinía en el búfer y por qué alguien querría mejorar la entropía?

Recuerdo una pregunta anterior en SE que dice que la combinación de RNG de dos fuentes diferentes (sistema proporcionado + BouncyCastle) no fue aconsejable y dará lugar a una disminución neta en la seguridad.

¿En qué se diferencia esta "agitación de entropía"?

    
pregunta random65537 04.08.2016 - 14:04
fuente

2 respuestas

1

Los RNG miden la aleatoriedad verdadera, pero deben "blanquear" su salida usando un PRNG. El PRNG tiene un estado interno (se inicializa durante la siembra y se muta después de que se genera cada nuevo lote de datos) de un tamaño fijo, por ejemplo, de 256 bits. El RNG también mantiene un contador de cuánta entropía representa ese estado en realidad. Cada vez que lee N bits del "pool", sale del PRNG y el contador de entropía disminuye. (Si no queda ninguno, la llamada se bloquea hasta que la cantidad solicitada esté allí). Cada vez que se produce un nuevo lote de verdadera aleatoriedad, se acumula en el estado de PRNG, y el contador de entropía aumenta en la cantidad de bits de entropía que lote de aleatoriedad representa. (Esto suele ser una estimación conservadora.)

En este contexto, "agitar" significa agregar un nuevo valor al estado PRNG sin aumentar el contador de entropía. Esto no es un riesgo de seguridad, porque el RNG no confía en que esto representa la entropía adicional real. OTOH, si su RNG es pobre y está entregando menos entropía de lo que se supone, "protegerlo" de otra parte lo protegerá.

    
respondido por el Reid Rankin 03.09.2016 - 15:38
fuente
0

Yo mismo estoy confuso acerca de cómo Microsoft reúne la entropía para el cifrado, pero puedo responder la última parte de su pregunta. La entropía es esencialmente datos "aleatorios" utilizados por los algoritmos de cifrado. Digo "aleatorio" porque las computadoras convencionales no tienen forma de generar datos verdaderamente aleatorios, por lo que dependen de otros métodos. Por ejemplo, el kernel de Linux se basa en cosas como el movimiento del mouse y los tiempos del teclado para generar 4096 bytes de datos pseudoaleatorios en / dev / random (deja que comience la guerra de llamas aleatoria contra urandom).

La aleatoriedad de los datos afecta directamente la fuerza del cifrado. Por ejemplo, en los parches de una vez, cada letra en un mensaje se desplaza en una cantidad aleatoria de espacios, según lo determine el parche. Si un atacante puede predecir los datos "aleatorios", puede decodificar la clave.

Ahora, en cuanto a por qué alguien querría mejorar la entropía en el búfer, esencialmente tiene que ver con esta preocupación. El cifrado seguro se basa en la aleatoriedad. Si un usuario no cree que el grupo de entropía de Microsoft sea lo suficientemente aleatorio para sus propósitos, podría decir que instale un contador Geiger en un isótopo radioactivo y confíe en la mecánica cuántica para proporcionar datos verdaderamente aleatorios.

¿Esto es una exageración? sí. Pero la capacidad subyacente para agregar entropía es grande. Por ejemplo, un servidor de Linux puede no tener muchos clics de ratón o eventos de teclado, por lo que un desarrollador tendría que construir sus propias fuentes de entropía. Supongo que el concepto es similar con los productos de Microsoft.

En cuanto a lo que significa "agitar" significa exactamente que no estoy seguro. Podría significar usar un algoritmo hash para crear un grupo más grande de datos, o podría significar XORing bytes de su entropía con las fuentes existentes de Microsoft.

    
respondido por el Verbal Kint 04.08.2016 - 14:45
fuente

Lea otras preguntas en las etiquetas