¿El cifrado RSA siempre carga pequeñas cantidades de datos a un tamaño mayor?

1

Si cifro 160 bits (20 bytes) de datos usando una clave privada RSA 1024, ¿el resultado siempre será de 128 bytes? Este parece ser el caso en mis experiencias, pero quiero estar seguro.

Por ejemplo,

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

parece que siempre da como resultado un archivo de 128 bytes enc.txt incluso después de generar nuevas claves públicas / privadas (la clave privada guardada en el archivo privateKey.der ).

    
pregunta lwood 20.09.2013 - 01:03
fuente

1 respuesta

4

Básicamente sí. Así es como funciona RSA, como se describe en el estándar .

En cifrado , los datos de entrada se "rellenan" primero, es decir, se expanden con cierta aleatoriedad y estructura, y luego se convierten en un valor entero grande m en el 0..n-1 rango ( n es el módulo). Ese valor se eleva entonces a la potencia e (el exponente público) módulo n , lo que produce otro entero en el rango 0..n-1 . El resultado se codifica en bytes con lo que el RFC llama I2OSP (convención sin firmar de big-endian). Para un módulo RSA de 1024 bits, siempre obtendrá un resultado de 128 bytes.

Del mismo modo, una firma RSA, para una clave de 1024 bits, siempre tiene una longitud exactamente de 128 bytes.

Recordatorio obligatorio: no, no estás "encriptando con la clave privada". La noción completa de "cifrar con la clave privada" es una analogía defectuosa, que funciona solo para RSA, y en realidad no funciona para RSA, precisamente porque falla completamente al tomar en cuenta el relleno. Estás firmando . Y, de hecho, utiliza el indicador de línea de comando -sign . RSA es dos algoritmos, que comparten una estructura matemática común, pero no toda; Las cosas serán más claras si sigues pensando en RSA encriptación y RSA firmas como un proceso distinto.

    
respondido por el Tom Leek 20.09.2013 - 13:27
fuente

Lea otras preguntas en las etiquetas