De hecho, la afirmación de que la criptografía asimétrica es más lenta que la criptografía simétrica no tiene mucho sentido. No hacen lo mismo. Lo que hace la criptografía asimétrica, la criptografía simétrica no puede hacer; De manera menos intuitiva, esto también funciona al revés: lo que hace la criptografía simétrica, la criptografía asimétrica no puede hacer.
El cifrado asimétrico permite hacer pública la clave de cifrado, sin revelar la clave de descifrado; Esta es la ventaja obvia del cifrado asimétrico sobre el cifrado simétrico, y la razón por la que se inventó en primer lugar.
En la otra dirección: el cifrado asimétrico solo procesa mensajes de un tamaño limitado, e incurre inherentemente en una sobrecarga de tamaño no fijo. Por ejemplo, con una clave RSA de 2048 bits y siguiendo el estándar PKCS # 1 ( RSAES-PKCS1-v1_5
), los mensajes de entrada no pueden exceder los 245 bytes de longitud y, sin embargo, producir una salida de 256 bytes. No está claro cómo un mensaje más largo debe dividirse en sub-mensajes para ser procesados individualmente con RSA; superficialmente se parece al problema de "encadenamiento" con cifrados de bloque, para los cuales se han definido los modos de operación , lo que permite un procesamiento masivo de datos de entrada. Sin embargo, los cifrados en bloque son fáciles: funcionan en secuencias de bits agradables, y los bloques encriptados son indistinguibles de la aleatoriedad uniforme. Lo mismo no sería válido para, digamos, RSA, donde los mensajes cifrados son números enteros módulo un entero grande que no es una potencia de 2, lo que induce sesgos. Este problema de encadenar los cifrados RSA no está bien estudiado y no parece tener soluciones obviamente seguras.
La sobrecarga de tamaño para el cifrado asimétrico es consustancial a su asimetría: como la clave de cifrado es pública, todos pueden intentar cifrar los datos con la clave de cifrado. Si el cifrado es determinista, esto permite un ataque inmediato de fuerza bruta en el texto sin formato (el atacante intenta posibles valores de texto sin formato hasta que se encuentra una coincidencia). Para evitar eso, el cifrado DEBE ser no determinista, lo que a su vez implica un aumento de tamaño (debido a pigeonholes ).
La consecuencia cruda es que el cifrado asimétrico no es bueno para el cifrado masivo. Cuando los datos para cifrar son más grandes que el tamaño elemental del algoritmo, entonces realmente no sabemos cómo hacerlo de forma segura, pero tenemos razones fundamentales para creer que sería costoso en términos de ancho de banda de red.
Ninguna de las anteriores es sobre el costo computacional. Para hacer una comparación significativa que tenga en cuenta el costo computacional, uno debe estar en un contexto donde, de hecho, se debe realizar una elección entre el cifrado simétrico y el asimétrico. Básicamente, esta sería una situación donde:
- Desea cifrado asimétrico para un mensaje m .
- Es posible que desee utilizar el denominado "cifrado híbrido": cifrado asimétrico para cifrar una clave aleatoria K , que luego utiliza para procesar los datos con un algoritmo de cifrado simétrico.
- El mensaje m se podría procesar directamente con el algoritmo de cifrado asimétrico.
La tercera condición significa que m es lo suficientemente pequeño como para ser la entrada de una sola invocación del algoritmo de cifrado asimétrico, ya que de lo contrario no sabría cómo procesarlo. En ese caso, el cifrado asimétrico en bruto necesariamente gana, ya que la elección es entre "un cifrado asimétrico" y "un cifrado asimétrico más algunas cosas de cifrado simétrico". Por otro lado, si el tamaño de m puede exceder el que puede procesarse con una sola llamada al algoritmo de cifrado, entonces volverá al problema del encadenamiento, y lo mejor es hablar de rendimiento. prematuro: primero defina lo que quiere hacer, vea si es seguro y luego (solo entonces) podemos hablar de velocidad.
Para hacer una analogía: puedes preguntar qué vehículo es más rápido, entre este:
yese:
Si crees que la respuesta es obvia, conduce tu Ferrari a un lago ...