Puntos de referencia de cifrado asimétrico y simétrico

5

He encontrado estos puntos de referencia en el sitio de Crypto ++. enlace

Pero, honestamente, no estoy del todo seguro de cómo interpretarlos.

Realmente estoy buscando un conjunto de puntos de referencia, o un estudio, que muestre cómo el cifrado asimétrico es más lento (y más costoso desde el punto de vista informático) que el cifrado simétrico.

Básicamente, algo que los enfrenta directamente y muestra el rendimiento más lento de los cifrados asimétricos.

¿Podría alguien vincularme a algo así? Mis búsquedas en Google han resultado inútiles.

    
pregunta zer0 08.05.2014 - 02:01
fuente

3 respuestas

6

Fuera de la parte superior de mi cabeza:

  • Un mensaje RSA sin procesar puede ser a lo sumo, siempre y cuando el módulo.
  • Un mensaje RSA cocinado necesita relleno para estar seguro. RSA PKCS # 1.5 necesita relleno (al menos) 11 bytes de relleno.

Y voy a asumir rsa2048. 2048 bits es 256 bytes en bruto. Menos 11 para el relleno da 245 bytes utilizables.

El sitio CryptoPP da:

  • RSA 2048 Signature 6.05 milisegundos / operación
  • Verificación RSA 2048 0.16 milisegundos / operación

Cálculo

  • RSA 2048 Signature 6.05 milisegundos / operación

    • (1000 ms / s) / (6.08 ms / op) == 164.47 op / s
    • 164.47 op / s * 245 byte / op == 40,296 byte / s
  • Verificación RSA 2048 0.16 milisegundos / operación

    • (1000 ms / s) / (0.16 ms / op) == 6,250 op / s
    • 6250 op / s * 245 byte / op == 1,531,250 byte / s

Entonces: Acerca de 1.5 MByte / s para verificar (/ cifrar). Y 40kByte / s para firmar (/ descifrar).

Y para "AES / CTR (clave de 128 bits)" la tabla CryptoPP enumera alrededor de 100 MiB / s.

    
respondido por el StackzOfZtuff 16.07.2015 - 16:09
fuente
8

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 ...

    
respondido por el Tom Leek 26.09.2015 - 17:18
fuente
2

Los cifrados simétricos (incluso los descritos como "cifrados de bloque") se utilizan generalmente de forma similar a una secuencia, cifrando o descifrando una secuencia de bytes de longitud arbitraria. En consecuencia, medir su velocidad en MB / s es algo útil de hacer.

Los cifrados asimétricos se utilizan generalmente en forma de bloque, cifrando o desencriptando una pequeña parte de datos. Esta operación lleva la misma cantidad de tiempo independientemente de si se trata de un bit simple, un hash de 32 bytes o un bloque de tamaño máximo. En consecuencia, medir su velocidad en operaciones / s es algo útil que hacer.

Puede calcular la velocidad de flujo de un cifrado asimétrico si descubre el tamaño máximo de bloque y multiplica por su velocidad en operaciones / s. Dado que los cifrados asimétricos casi nunca se usan en forma de flujo, esto no es algo muy útil de hacer.

    
respondido por el Mark 17.12.2014 - 06:51
fuente

Lea otras preguntas en las etiquetas