OpenSSL encriptando los gastos generales de ancho de banda de paquetes pequeños

1

Tengo un programa c / c ++ utilizado para cifrar datos para la comunicación entre dos extremos. El cifrado se realiza mediante OpenSSL (0.9.8d-fips, septiembre de 2006). Creo que vale la pena mencionar que no estoy muy familiarizado con el uso de OpenSSL.

El programa funciona bien para paquetes más grandes. Pero la sobrecarga de tamaño es muy alta cuando se cifran paquetes de tamaño más pequeño. He hecho una prueba para demostrar el problema.

+-------------+-----------------+-------------------+
| Input Chars | Encrypted Chars | Input/Encrypted % |
+-------------+-----------------+-------------------+
|           1 |              74 | 1.351351351       |
|           2 |              74 | 2.702702703       |
|           3 |              74 | 4.054054054       |
|           4 |              74 | 5.405405405       |
|           5 |              74 | 6.756756757       |
|           6 |              74 | 8.108108108       |
|           7 |              74 | 9.459459459       |
|           8 |              74 | 10.81081081       |
|           9 |              74 | 12.16216216       |
|          10 |              74 | 13.51351351       |
|          11 |              74 | 14.86486486       |
|          12 |              90 | 13.33333333       |
|          13 |              90 | 14.44444444       |
|          14 |              90 | 15.55555556       |
|          15 |              90 | 16.66666667       |
+-------------+-----------------+-------------------+

La prueba se realizó incrementando el número de caracteres de entrada de 1 a 10000. Los siguientes gráficos ilustran los resultados con mayor claridad.

Gráfico 1: Tamaño encriptado vs Tamaño de entrada

Gráfico2:proporciónvstamañodeentrada

Desde el segundo gráfico, es claramente visible que la sobrecarga de cifrado es muy alta para entradas más pequeñas (tamaño inferior a 300 bytes).

¿Esto es normal / aceptable? Si es así, ¿hay alguna alternativa (con menos gastos generales)? Debido a que la aplicación utiliza paquetes más pequeños en gran medida (agruparlos no es una opción).

Como se mencionó anteriormente, se usa OpenSSL 0.9.8d, que es una versión un poco más antigua (1.0.1g, abril de 2014, ya está disponible). ¿Se solucionará el problema si lo actualizo?

    
pregunta Anubis 29.05.2014 - 13:05
fuente

3 respuestas

3

: Hola, esta es la línea directa de TastyChef. ¿En qué puedo ayudarlo?

- Hola. Estoy cocinando. Necesito saber cuánto tiempo debo colocar mi comida en el horno.

: depende de lo que esté cocinando, señor.

- Oh, es un horno Miele-Samsung 1200+. El número de serie es X67NQ-56D3034.

- No es el horno, señor.

: ¿Crees que reemplazar el horno con un 1500+ cambiaría el tiempo de cocción?

- ...

Lo que importa es el protocolo que está utilizando, que se reduce a los algoritmos y formatos de codificación involucrados. Tienes que entender lo que estás tratando de hacer. En este momento, parece que "usa OpenSSL" como una especie de condimento criptográfico, con la esperanza salvaje de que el cifrado por aspersión hará que la seguridad de alguna manera suceda. No sucede así.

Dicen que la ingeniería del software comienza con la arquitectura, luego el análisis, luego la especificación, luego (y solo entonces) la implementación. Si omite los primeros tres pasos, el cuarto llevará a la perdición.

    
respondido por el Tom Leek 29.05.2014 - 13:31
fuente
1

Los datos SSL se colocan en registros y cada registro tiene una sobrecarga de aproximadamente 25..40 bytes (consulte enlace ). Cuanto más pequeños sean los fragmentos de datos, más notable será esta sobrecarga. Además de SSL, también hay más sobrecarga por paquete de las otras capas, por ejemplo. TCP, IP, Ethernet ...

La sobrecarga no es específica de OpenSSL, pero es común para todas las implementaciones de SSL.

    
respondido por el Steffen Ullrich 29.05.2014 - 15:15
fuente
1

Esta sobrecarga también podría resultar útil (no me atrevería a decir que es por diseño, aunque): por ejemplo, si tuviera un mapeo 1-a-1, un adversario podría determinar qué tipo de tráfico que está enviando al observar la longitud del paquete sin tener que descifrarlo.

Esto, a su vez, podría filtrar algunos bits de información y dependiendo de las circunstancias. Consulte, por ejemplo, este documento :

  

Los encabezados de paquetes identifican las direcciones de destino y de origen y la   Tamaño de los datos de carga útil, junto con otra información. La dirección   y la información del tamaño del paquete suele ser suficiente para identificar qué   las descargas de un usuario objetivo

    
respondido por el lorenzog 29.05.2014 - 18:29
fuente

Lea otras preguntas en las etiquetas