Con openssl, perché un file decrittografato e crittografato differisce dalla copia crittografata originale?

2

Ho una chiave privata 2048 che posso usare per decrittografare 2056 bit di dati crittografati. Ottengo 128 bit di dati non criptati. Ho verificato che questi dati sono corretti. (Non conosco il comando di crittografia originale).

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

Suppongo che il restringimento da 2056 bit di input a 128 bit di output venga eseguito utilizzando una sorta di padding.

Quello che vorrei fare ora è invertire la decrittazione. Crittografia data.128bits.dec.bin vorrei finire con lo stesso data.2056bits.enc.bin con cui ho iniziato. Ho pensato che le righe seguenti avrebbero fatto questo:

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 

Tuttavia data.2056bits.enc.bin è diverso da quello con cui ho iniziato.

È comunque una crittografia valida. Posso fare un

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

di nuovo e termina con lo stesso data.128bits.dec.bin.

Che cosa non sbaglio? Possono esserci 2 dati diversi.2056bits.enc.bin che producono gli stessi dati.128bits.dec.bin?

    
posta Konrad Eisele 26.08.2016 - 14:29
fonte

1 risposta

3

Uno degli obiettivi fondamentali della crittografia è che chi intercetta messaggi crittografati non dovrebbe essere in grado di imparare qualcosa sugli originali non criptati. Se riesci a stabilire se due messaggi crittografati hanno lo stesso contenuto senza decrittografarli, hai trovato un punto debole.

Per evitare ciò, uno schema di crittografia deve produrre risultati diversi quando si crittografa lo stesso messaggio due volte. Il padding che viene aggiunto quando si esegue una crittografia RSA è diverso ogni volta.

Se vuoi studiare RSA senza padding (a.k.a. "textbook RSA") puoi usare l'opzione -raw a rsautl . L'input deve essere esattamente la dimensione del modulo chiave poiché non c'è padding. Assicurati di non utilizzarlo per nessuna applicazione seria.

    
risposta data 26.08.2016 - 15:29
fonte

Leggi altre domande sui tag