Con openssl, ¿por qué un archivo descifrado y re-cifrado difiere de la copia cifrada original?

2

Tengo una clave privada 2048 que puedo usar para descifrar 2056 bits de datos encriptados. Salgo de 128 bits de datos sin cifrar. He verificado que esta información es correcta. (No sé el comando de cifrado original).

openssl rsautl -decrypt -inkey private.pem -in data.2056bits.enc.bin -out data.128bits.dec.bin

Supongo que la reducción de la entrada de 2056 bits a la salida de 128 bits se realiza mediante algún tipo de relleno.

Lo que me gustaría hacer ahora es revertir el descifrado. Cifrando datos.128bits.dec.bin me gustaría terminar con los mismos datos.2056bits.enc.bin con los que comencé. Pensé que las siguientes líneas harían esto:

opendssl rsa -in private.pem -pubout > pub.pem
openssl rsautl -encrypt -inkey pub.pem -pubin -in data.128bits.dec.bin -out data.2056bits.enc.bin 

Sin embargo, data.2056bits.enc.bin es diferente al con el que empecé.

Sin embargo, es un cifrado válido. Puedo hacer un

openssl rsautl -decrypt -inkey private.pem -in data.2056bits.enc.bin -out data.128bits.dec.bin

de nuevo y termina con los mismos datos.128bits.dec.bin.

¿En qué me equivoco? ¿Puede haber 2 datos diferentes.2056bits.enc.bin que produzcan los mismos datos.128bits.dec.bin?

    
pregunta Konrad Eisele 26.08.2016 - 14:29
fuente

1 respuesta

3

Uno de los objetivos básicos de la criptografía es que alguien que intercepta mensajes cifrados no debería poder aprender nada sobre los originales no cifrados. Si puedes determinar si dos mensajes cifrados tienen el mismo contenido sin descifrarlos, entonces has encontrado una debilidad.

Para evitar eso, un esquema de cifrado debe producir resultados diferentes al cifrar el mismo mensaje dos veces. El relleno que se agrega cuando haces un cifrado RSA es diferente cada vez.

Si quieres estudiar RSA sin relleno (a.k.a. "libro de texto RSA") puedes usar la opción -raw para rsautl . La entrada debe ser exactamente del tamaño del módulo de clave, ya que no hay relleno. Solo asegúrate de no usarlo para ninguna aplicación seria.

    
respondido por el Wumpus Q. Wumbley 26.08.2016 - 15:29
fuente

Lea otras preguntas en las etiquetas