La crittografia RSA riempie sempre piccole quantità di dati con dimensioni maggiori?

1

Se crittografo 160 bit (20 byte) di dati utilizzando una chiave RSA 1024 privata , il risultato sarà sempre 128 byte? Questo sembra essere il caso nei miei esperimenti, ma voglio essere sicuro.

Ad esempio,

/bin/echo -n "foo" | openssl dgst -sha1 -sign privateKey.der -keyform DER > enc.txt

sembra sempre generare un file di 128 byte enc.txt anche dopo aver generato nuove chiavi pubbliche / private (la chiave privata salvata nel file privateKey.der ).

    
posta lwood 20.09.2013 - 01:03
fonte

1 risposta

4

Fondamentalmente si. Ecco come funziona RSA, come descritto in lo standard .

On encryption , i dati di input vengono prima "riempiti", ovvero espansi con un po 'di casualità e struttura, e poi trasformati in un grande valore intero m nella 0..n-1 ( n è il modulo). Tale valore viene quindi elevato alla potenza e (l'esponente pubblico) modulo n , producendo un altro intero nell'intervallo 0..n-1 . Il risultato è codificato in byte con ciò che RFC chiama I2OSP (convention non firmata big-endian). Per un modulo RSA a 1024 bit, otterrai sempre un risultato di 128 byte.

Allo stesso modo, una firma RSA , per una chiave a 1024 bit, ha sempre una lunghezza esattamente di 128 byte.

Promemoria obbligatorio: no, non stai "crittografando con la chiave privata". L'intera nozione di "crittografia con la chiave privata" è un'analogia imperfetta, che funziona solo per RSA, e in realtà non funziona per RSA, proprio perché fallisce completamente nel prendere in considerazione il padding. Hai firma . E, in effetti, usi il flag di riga di comando -sign . RSA è due algoritmi, che capita di condividere alcune strutture matematiche comuni, ma non tutte; le cose saranno più chiare se continui a pensare a RSA encryption e RSA firme come processo distinto.

    
risposta data 20.09.2013 - 13:27
fonte

Leggi altre domande sui tag