¿Se puede repetir RSA (o cualquier algoritmo de clave pública / privada) para grandes cantidades de datos?

5

Estoy trabajando en una pequeña asignación de seguridad y se me indicó que implementara un cifrado / descifrado simple de archivos utilizando RSA en C #.

Al intentar cifrar / descifrar archivos grandes, el compilador me informó que el tamaño del archivo no puede exceder la longitud de la clave. Puedo resolver este problema dividiendo los archivos en bloques del tamaño de una clave y repitiendo el cifrado, pero ¿esto pondría en peligro mi clave RSA? ¿Por qué o por qué no?

    
pregunta Joshc1107 08.04.2011 - 18:55
fuente

2 respuestas

11

El cifrado RSA funciona en mensajes que no superan el tamaño del módulo de clave pública (en realidad, el límite está ligeramente por debajo de eso, por ejemplo, 117 bytes para una clave RSA de 1024 bits). El método habitual para cifrar cosas con RSA es utilizar un modo híbrido: creas una clave simétrica aleatoria (un grupo de bytes aleatorios, con un generador de números aleatorios criptográficamente seguros), cifras simétricamente tus datos con esa clave (usando un cifrado simétrico como AES), y usted cifra la clave simétrica con RSA. Los cifrados simétricos pueden tratar con datos de longitud arbitraria. Una clave simétrica es bastante corta, normalmente de 16 o 32 bytes, por lo que no hay ningún problema para cifrar eso con RSA.

Tenga en cuenta que está diseñando su propio protocolo criptográfico, lo cual es una muy mala idea. En realidad, la primera y más importante de todas las malas ideas relacionadas con la criptografía. Incluso para algo tan simple como el cifrado asimétrico de un blob, las personas que han tratado de diseñar un protocolo de este tipo han pasado por años de múltiples versiones y agujeros de seguridad, que se han conectado uno por uno. Debería realmente usar un protocolo existente para eso. Uno de estos protocolos es OpenPGP . Bouncy Castle es una biblioteca de código abierto que tiene una versión de C #, y que incluye una implementación de OpenPGP. Úsalo, y vivirás más y más feliz.

    
respondido por el Thomas Pornin 08.04.2011 - 19:21
fuente
1

Una cosa que pierdes con este método es que un atacante puede eliminar o reproducir cualquier bloque que desee; No hay verificación. Esto podría resolverse cifrando un hash de los contenidos como el último bloque, pero es probable que también haya otros problemas con este esquema.

    
respondido por el cobbal 12.04.2011 - 18:23
fuente

Lea otras preguntas en las etiquetas