2011-05-03 23 views

Respuesta

12

En el algoritmo RSA básico (sin relleno) que no es muy seguro, el tamaño del mensaje se limita a ser menor que el módulo

Para mejorar la seguridad de RSA, debe usar esquemas de relleno como se define en PKCS1. Dependiendo del esquema que elija, el tamaño del mensaje puede ser significativamente menor que el módulo. http://en.wikipedia.org/wiki/PKCS1

73

RSA encripta un solo mensaje que tiene una longitud que es algo menor que el módulo. Específicamente, el mensaje primero se "rellena", lo que da como resultado una secuencia de bytes que luego se interpreta como un entero grande entre 0 y n-1, donde n es el módulo (una parte de la clave pública) - por lo que el mensaje relleno no puede ser más largo que el módulo, lo que implica una longitud máxima estricta en el mensaje sin formato.

Específicamente, con el esquema de relleno más común (PKCS#1 "antiguo", también conocido como "v1.5"), el relleno agrega al menos 11 bytes al mensaje, y la longitud total del mensaje acolchado debe ser igual al longitud del módulo, por ejemplo 128 bytes para una clave RSA de 1024 bits. Por lo tanto, la longitud máxima del mensaje es de 117 bytes. Tenga en cuenta que la longitud del mensaje cifrado resultante tiene el mismo tamaño que el módulo, por lo que el cifrado expande necesariamente el tamaño del mensaje en al menos 11 bytes.

La manera normal de uso de RSA para cifrado un mensaje grande (por ejemplo, un e-mail) es el uso de un esquema híbrido:

  • Una clave simétrica K se elige (una secuencia en bruto aleatoria de , por ejemplo, de 128 a 256 bits aleatorios).
  • El mensaje grande se cifra simétricamente con K, utilizando un esquema de cifrado simétrico adecuado y eficiente como AES.
  • K se cifra de forma asimétrica con RSA.

"División" un gran mensaje en tantos bloques de 117 bytes, cada uno a cifrar con RSA, no se hace normalmente, por una variedad de razones: es difícil hacerlo bien sin añadir debilidades adicionales; cada bloque se expandiría en 11 bytes, lo que implica un aumento del tamaño total del mensaje no despreciable (el ancho de banda de la red puede ser un recurso escaso); la encriptación simétrica es mucho más rápida.

+2

Para extender esto un poco. Hoy en día, OAEP (PKCS # 1 v2.1) se debe utilizar para rellenar los mensajes antes del cifrado RSA. El relleno usa una función hash internamente (MGF) dos veces y otra información. Digamos 'hlen' es el tamaño de salida de la función hash, luego la sobrecarga es' 2 * hlen + 2'. SHA-1 es la función hash más comúnmente utilizada para esto. Significa que una ** clave RSA de 1024 bits ** solo puede encriptar hasta ** 86 bytes ** para SHA-1 y ** 62 bytes ** para SHA-256. –

+0

Supongo que "RSA encripta un solo mensaje que tiene una longitud algo menor que el módulo". Esto se debe a que los algoritmos RSA dependen de los resultados del módulo, por lo que si la regla se rompe, dos mensajes diferentes pueden dar como resultado un texto cifrado similar. ¿derecho? – Yerken