RSA y generador de números psicoaleatorios

1

Quiero dar una presentación en la escuela sobre el cifrado y descifrado RSA. Entiendo lo básico de calcular una clave pública y privada con dos números primos pequeños. Y cómo usar esas claves para codificar y decodificar un mensaje simple.

Después de demostrar lo anterior, quiero hablar brevemente sobre seguridad, ya que es un tema muy grande y complejo. En mi opinión, 2048 claves son seguras, incluso para la NSA. Todo el mundo ha escuchado acerca de la noticia de que NSA puede (podría) leer correos electrónicos, etc. Me di cuenta de que construyeron una puerta trasera en el DUAL_EC_DRBG PRNG (Generador de números aleatorios) que es (¿fue?) Utilizado por un montón de compañías, como RSA .

Pueden predecir el resultado de esos números aleatorios. Pero, ¿qué tiene eso que ver con el cifrado y descifrado de RSA? Eso se basa en multiplicar dos números primos masivamente grandes, ¿qué compañía puede elegir por sí misma?

¿Qué me estoy perdiendo aquí, espero que alguien pueda indicarme el camino correcto?

¡Gracias!

    
pregunta Justin 10.11.2015 - 17:55
fuente

2 respuestas

4

Nadie utiliza RSA para cifrar directamente los datos transmitidos a través de http (web) o SMTP (correo electrónico). El RSA de 2048 bits solo le permitiría cifrar 245 bytes a la vez, y cada una de estas operaciones es costosa.

Los protocolos reúnen a una de las partes o a ambas partes para generar un nuevo número aleatorio que sea lo suficientemente largo como para que sea indiscutible y único. 128 bits son suficientes, aunque TLS utiliza más. Luego usan este número como una clave de cifrado simétrica (técnicamente, semilla para KDF), lo que les permite cifrar rápidamente una gran cantidad de datos.

Si el CSPRNG es backdoor-ed, el adversario puede predecir la clave secreta compartida. Si la clave compartida no es secreta, rompe completamente la seguridad.

Si una de las partes generó la clave secreta compartida, debe transmitirla a la otra parte, de manera que sea inmune a las escuchas ilegales. Una forma sencilla es cifrar la clave secreta compartida utilizando la clave pública del destinatario. PGP hace esto, y SSL / TLS anterior hizo esto.

Un problema con la transmisión de la clave secreta aleatoria compartida encriptada con la clave pública del destinatario es que, si tiene en sus manos la clave privada del destinatario, quizás años más tarde cuando ya no usen este par de claves, puede descifrar los textos cifrados previamente grabados. Por lo tanto, un disco duro desechado con la clave privada hace mucho tiempo que el certificado del servidor TLS caducado permitiría, por ejemplo. La NSA para descifrar años de tráfico antiguo.

Los protocolos más nuevos exigen el uso de un mejor esquema: Diffie Hellman para establecer un secreto compartido anónimo, y las firmas digitales para demostrar que la otra parte es quien dicen ser.

En los protocolos modernos, RSA solo se utiliza para firmar y verificar firmas.

Nota: Es posible que haya leído una explicación de las firmas RSA como un tipo de cifrado. Es una muy mala explicación, no la uses .

Tenga en cuenta que el libro de texto RSA es inseguro y no debe utilizarse. Debe usar esquemas de relleno seguro para el cifrado RSA y para las firmas RSA. Los esquemas de relleno para los dos casos de uso tienen objetivos diferentes y son diferentes. Mezclarlos es inseguro.

Tenga en cuenta que el antiguo TLS usó pkcs # 1v1.5, ahora se considera inseguro, use RSASSA-PSS en su lugar.

Como ha notado, implementar RSA de forma segura es difícil, la recomendación moderna es usar mejores primitivos criptográficos, como los de libsodium (o mejor aún, el propio libsodium).

    
respondido por el Z.T. 10.11.2015 - 19:56
fuente
0

PRNG es la clave aquí (en comparación con CSPRNG o True RNG). Es un generador de números psico-aleatorios; tiene que usar un algoritmo para determinar el primo dado para RNG independientemente del umbral mínimo de la agrupación de entropía. Si el algoritmo tiene debilidades conocidas o un posible método para aplicar ingeniería inversa al método para RNG, hace que la fuente de la agrupación de entropía sea discutible y permite métodos fáciles para determinar los números primos generados a partir de la entropía del kernel.

Un PSRNG debe poder generar números aleatorios incluso en el caso de que un grupo de entropía esté por debajo de los umbrales de entropía mínimos (argumento aleatorio clásico / dev / (u)) para poder crear un evento de números primos conocidos o adivinar fácilmente primos, es más fácil de lo que la mayoría de la gente piensa cuando A) utilizando un algoritmo con puertas traseras. DUAL_EC_DRBG fue considerado un gran RNG debido a los factores de validación requeridos para que PRNG crypto sea seguro, pero el algoritmo de origen estaba comprometido. Aunque no se requería su uso, era un RNG atractivo debido a su uso de la CE y los requisitos para las aplicaciones DoD. La idea era si es lo suficientemente bueno para el Departamento de Defensa, entonces es lo suficientemente bueno para mí. Así que la NSA se salió con una mentalidad de reglas de mob, a pesar de que comprometieron solo 1 de los 4 RNG recomendados.

La puerta trasera realizada fue específicamente la razón por la cual el NIST eliminó el soporte para eso como un método para generar RNG desde SP800-90A. Ese fue el documento NIST más rápido y revisado que he visto en mucho tiempo. Si no lo has leído todo, es bastante interesante.

Aquí hay un artículo interesante sobre este tema si aún no lo has leído. enlace

    
respondido por el user89449 10.11.2015 - 19:30
fuente

Lea otras preguntas en las etiquetas