¿Puede algún algoritmo asimétrico funcionar solo con una cantidad de aleatoriedad del tamaño de una clave?

1

Con 397 rollos de un dado de 6 caras (no es mi uso favorito del tiempo, pero ciertamente no es imposible), podría generar más de 1024 bits aleatorios. ¿Podría usar esos bits para generar un par de llaves que luego podría usarse en el cifrado sin volver a tocar un (p) rng?

    
pregunta Shea Levy 09.10.2013 - 04:03
fuente

2 respuestas

2

Hay dos puntos:

  1. Generación de pares de claves : este es un proceso mediante el cual se selecciona aleatoriamente un objeto con alguna estructura matemática. La estructura depende del algoritmo utilizado; por ejemplo, con RSA, necesitas dos enteros primos grandes.

    El método genérico es usar su entropía inicial como semilla para un PRNG, y luego usar el PRNG para todas las elecciones aleatorias en el algoritmo de generación de par de claves. Para que todos los rollos de dados encajen en tal semilla, simplemente júntelos a todos. Como regla general, solo necesita 128 bits de entropía (siempre que el PRNG sea criptográficamente fuerte), por lo que 50 rollos son suficientes. Más no haga daño, en caso de que el dado no sea tan justo como se asumió inicialmente.

  2. Uso clave : algunos usos de la criptografía asimétrica requieren aleatoriedad. En particular, cifrado asimétrico requiere inherentemente un relleno aleatorio, ya que el cifrado asimétrico determinista podría estar sujeto a una búsqueda exhaustiva del mensaje en sí mismo (el cifrado asimétrico utiliza la clave pública, que es pública, por lo que todos pueden cifrar mensajes y ver si el resultado coincide con una salida encriptada dada). Podría alejarse sin un relleno aleatorio si el mensaje para cifrar ya es bastante aleatorio, pero eso no resuelve el problema; simplemente lo mueve alrededor Para operar sin aleatoriedad, puede utilizar lo siguiente:

    • Para firmas , use un algoritmo de firma determinista. RSA con PKCS # 1 v1.5 es determinista (pero no el esquema de relleno "PSS" más reciente). Para DSA (y ECDSA), el algoritmo especificado por FIPS 186-4 requiere una buena aleatoriedad para cada firma, pero una variante determinista compatible puede ser definido .

    • Dado que el cifrado asimétrico requiere aleatoriedad, puede reemplazarlo con static Diffie-Hellman . El sistema A y el sistema B poseen un par de claves DH, en el mismo grupo (la misma curva para ECDH). Cada vez que A y B quieren hablar juntos, utilizan como secreto compartido el valor resultante de DH, utilizando sus dos pares de claves. Esto implica que A y B siempre terminarán con el mismo secreto compartido. Esto tiene algunos problemas adicionales a tener en cuenta: no hay Perfect Forward Secrecy , repetir ataques pueden aplicarse ...

En términos generales, la vida criptográfica sin aleatoriedad es dura. Muchos algoritmos y protocolos requieren cierta aleatoriedad (por ejemplo, el cifrado simétrico en el modo CBC debería tener un IV aleatorio). Puede tener una aleatoriedad "suficientemente buena" en un sistema dado siempre que tenga una clave secreta y un estado o un valor público no repetitivo (por ejemplo, un reloj, pero tenga cuidado con los restablecimientos). De hecho, si tiene un contador, entonces puede cifrar los valores de contador sucesivos con un cifrado de bloque (AES viene a la mente) y esto será un buen PRNG; un valor no repetitivo conocido por todos (como la hora actual) puede servir como sustituto del contador.

Si un sistema no tiene un estado para actualizar, y no es una fuente de aleatoriedad, entonces es intrínsecamente rebobinable: reinícielo, luego envíe las mismas entradas que antes, y obtendrá la misma salida . Esto es lo que significa, cuando decimos que una computadora es un sistema determinista . Los ataques de repetición son la principal preocupación aquí.

    
respondido por el Tom Leek 09.10.2013 - 13:14
fuente
3

Suponiendo que tus dados son justos, cada tirada de dados produce alrededor de 2.585 bits de entropía. Podría usar esto para generar material clave fuerte.

Sin embargo, generar claves asimétricas es un proceso matemático. Ambos RSA y DSA la generación de claves implica la selección de números primos. Por lo tanto, no puede abordar el proceso con un gran número aleatorio en la mano y esperar poder usarlo tal como está.

Hay oportunidades para 'mezclar' su material de dados de alta entropía durante el proceso de generación de claves, a saber, al seleccionar sus primos y exponente de encriptación en RSA, o al seleccionar los primos o secreto privado en DSA.

No necesitaría generar tanto, sin embargo, una clave RSA de 1024 bits contiene alrededor de 80 bits de entropía ; / p>

  

la seguridad disponible con una clave de 1024 bits que utiliza RSA asimétrico se considera aproximadamente igual en seguridad a una clave de 80 bits en un algoritmo simétrico

Por lo tanto, solo necesitaría 80 bits de entropía para generar una clave RSA de 1024 bits. Es decir, si consumieras la mayor aleatoriedad posible en cada etapa de la generación de claves, descubrirías que habías consumido alrededor de 80 bits de material de dados para cuando hubieras terminado la generación.

    
respondido por el lynks 09.10.2013 - 10:12
fuente

Lea otras preguntas en las etiquetas