¿Se protegen los mensajes muy cortos con el cifrado de clave pública? [duplicar]

2

Supongamos que Alice publica su clave pública y luego desaparece de la vista pública.

Bob luego tiene que enviarle un mensaje que dice "OK" o ":(", por lo que toma su clave pública, cifra su mensaje y luego lo publica públicamente en Internet.

¿Qué debe hacer para evitar que Eve tome el mensaje público encriptado y luego la fuerza bruta que encripta cada combinación de dos letras con la clave pública de Alice hasta que encuentre una coincidencia?

    
pregunta Shalmanese 15.06.2013 - 04:10
fuente

1 respuesta

2

No con el "libro de texto" RSA, donde codifica su mensaje como un número grande y calcula directamente el texto cifrado c del texto del mensaje my la clave pública (e, n) con c = m^e mod n y descifra utilizando la clave secreta (d , n) como m = c^d mod n .

Pero con RSA real, definitivamente sí como se introduce la aleatoriedad.

Un esquema común (estándar RSA ISO, que es un cifrado híbrido) es crear primero un número aleatorio largo (por ejemplo, si utiliza un RSA de 2048 bits que es n es 2048 bits, elija un número aleatorio (hasta 2048) bits), que se convertirá en su mensaje RSA m rsa . Este mensaje RSA se cifrará de forma asimétrica. A continuación, creará un hash criptográfico (p. ej., SHA-256) de este valor aleatorio para crear un valor 256- clave simétrica de bits. Su mensaje real se cifrará con la clave simétrica (utilizando, por ejemplo, AES-256-CBC) y estos dos textos cifrados se adjuntan.

Concedido en la práctica, el esquema de encriptación es un poco más complicado; por ejemplo, un protocolo como OAEP se utiliza para proporcionar autenticación de mensaje adicional para evitar ataques de texto cifrado adaptados más sofisticados contra un oráculo de descifrado ( que proporcionan los servidores HTTPS). De hecho, como señaló CodesInChaos, usar un buen esquema de relleno (como OAEP) directamente para un mensaje corto le permite aplicar RSA directamente al mensaje breve rellenado.

Aparte del relleno de cifrado asimétrico óptimo (OAEP)

OAEP funciona como se muestra en el diagrama a continuación. Para concretar, supongamos RSA de 2048 bits (que significa n = 2048 bits) y sea H la función hash SHA-256 y G sea una función de generación de máscara basada en una función de hash (que esencialmente crea un hash de la longitud deseada de N-k0 bits comenzando con SHA-256). La elección de la función hash significa que la longitud de r (e Y) es k0 = 256 bits. También tenga en cuenta que el ⊕ rojo (círculos con más) significa XOR .

Entonces tenemos un mensaje corto m (de longitud n-k0-k1 que es más corto que n-k0 = 2048-256 = 1792 bits) que queremos cifrar directamente mediante RSA. Creamos una versión acolchada m pad para que tenga exactamente n-k0 bits de longitud (el pad tendrá una longitud de k1 bits y comenzará con un 1 seguido de todos los ceros). Creamos un número de k0 = 256 bits al azar y lo llamamos r. Calculamos G (r) y XOR este valor con el mensaje rellenado y se convierte en X. Luego toma X y calcula H (X) y XOR este con r para proporcionar Y. Luego con su mensaje OAEP rellenado (la concatenación de X y Y), puede aplicar directamente el cifrado RSA.

O para resumir X = m pad ⊕ G (r) e Y = H (X) r, con el mensaje OAEP en RSA que es la concatenación (X, Y). Para el descifrado, primero se descifra el mensaje RSA para recuperar (X, Y). El descifrador calcula H (X) y lo empareja con Y, para encontrar r, es decir, r = Y ⊕ H (X). Luego, el desencriptador calcula G (r) y lo empareja con X para recuperar el mensaje original rellenado (y el pad puede truncarse eliminando todo desde el último 1 seguido de todos los ceros).

    
respondido por el dr jimbob 15.06.2013 - 04:19
fuente

Lea otras preguntas en las etiquetas