Generación de claves simétricas

4

Supongamos que tengo una fuente que genera claves simétricas. Esta fuente podría ser un dispositivo HSM muy sólido, un PRNG algo confiable, un generador de claves comprometido o un valor codificado que devuelve la misma secuencia de bytes cada vez.

Por lo tanto, no estoy seguro de si la clave que recibo es realmente confiable. Entonces, lo que planeo hacer es generar otra clave aleatoria localmente, y XOR estas dos.

Mi generador de PRNG sería más confiable que un sistema comprometido, pero menos confiable que un dispositivo HSM adecuado.

Mi pregunta es, ¿"XOR'ing estas claves" reduce mi seguridad de alguna manera? ¿Qué pasa si tengo que agregar un par de claves más en la mezcla? ¿XORing eliminará el nivel de seguridad inferior al ideal de algunas claves (pero no todas) en la mezcla?

ACTUALIZACIÓN Permítame ponerlo de otra manera: suponga que tengo varias fuentes de generador de claves e idealmente todas deberían generar claves seguras. Pero siempre existe la posibilidad de que algunos de estos generadores de claves no sean ideales para la seguridad.

Esta condición no ideal podría deberse a un error en el generador de claves (como el caso Debian), podría ser una puerta trasera colocada por un tercero (NSA, Gobernador de China, Corea del Norte, niño vecino, script, ...), o un problema muy diferente que afecta el nivel de seguridad.

Mientras que al menos uno de los generadores de claves genere claves "aceptablemente seguras", ¿XORing reducirá el nivel de seguridad de alguna manera?

Mi intuición es que, dado que todas las claves son prácticamente secuencias aleatorias de bytes, el hecho de que XOR sea una secuencia aleatoria no cambia la aleatoriedad. Pero no tengo nada que respalde esto.

Entonces, si tienes algo que apoye mi instinto o esté en contra, sería genial. Si no lo haces, también me gustaría escuchar tus pensamientos.

gracias

    
pregunta xycf7 03.06.2015 - 16:30
fuente

2 respuestas

4

Estás en terreno firme con tu idea básica de XOR. Una de las varias técnicas que se incluyen en el encabezado general de "blanqueamiento de software" es una de las diversas técnicas que se incluyen en el XOR para reducir el sesgo.

enlace

(El enlace wiki de John Deters estaba completamente en punto; este es solo un poco más "aplicado".)

El uso de un PRNG criptográficamente seguro para crear el material para XOR'ing es una de las formas más confiables de garantizar una eliminación del sesgo relacionada con la desconexión.

    
respondido por el Jonathan Braunhut 04.06.2015 - 01:58
fuente
-3

Tal vez debería usar una función de derivación de claves como PBKDF2 para generar la clave real (final). enlace La clave de una fuente no confiable puede ser la contraseña para esta función, con algo de sal aleatoria.

Esto sería criptográficamente más seguro que XORing dos claves. Teóricamente, podría tener colisiones, es decir, dos números XORing para obtener el mismo resultado.

    
respondido por el Prasad Chawak 04.06.2015 - 05:08
fuente

Lea otras preguntas en las etiquetas