Pregunta

Me gustaría agregar cifrado AES a un producto de software, pero me preocupa aumentar el tamaño de los datos.Supongo que los datos aumentan de tamaño y luego tendré que agregar un algoritmo de compresión para compensar.

¿Fue útil?

Solución

AES no amplía datos.Además, la salida generalmente no será comprimible;Si tiene intención de comprimir sus datos, hágalo antes de cifrarlos.

Sin embargo, tenga en cuenta que el cifrado AES generalmente se combina con relleno, cual voluntad aumentar el tamaño de los datos (aunque sólo en unos pocos bytes).

Otros consejos

AES no expande los datos, excepto unos pocos bytes de relleno al final del último bloque.

Los datos resultantes no son comprimibles, en cualquier caso, porque son básicamente aleatorios; ningún algoritmo basado en diccionario es capaz de comprimirlos de manera efectiva.Una buena práctica es comprimir los datos primero y luego cifrarlos.

Es común comprimir los datos antes de cifrarlos.Comprimirlo después no funciona, porque los datos cifrados con AES parecen aleatorios (como ocurre con cualquier buen cifrado, aparte de los encabezados y demás).

Sin embargo, la compresión puede introducir ataques de canal lateral en algunos contextos, por lo que debes analizar tu propio uso.Recientemente se han informado ataques de este tipo contra VOIP cifrado:La esencia es que diferentes sílabas crean variaciones características en la tasa de bits cuando se comprimen con VBR, porque algunos sonidos se comprimen mejor que otros.Por lo tanto, algunas (o todas) las sílabas pueden recuperarse con un análisis suficiente, ya que los datos se transmiten al ritmo en que se generan.La solución es utilizar compresión CBR (menos eficiente) o utilizar un búfer para transmitir a una velocidad constante independientemente de la velocidad de datos que sale del codificador (aumentando la latencia).

AES convierte bloques de entrada de 16 bytes en bloques de salida de 16 bytes.La única expansión es redondear los datos a un número entero de bloques.

Estoy bastante seguro de que el cifrado AES no añade nada a los datos que se cifran, ya que eso revelaría información sobre las variables de estado, y eso es algo malo cuando se trata de criptografía.

Si desea combinar compresión y cifrado, hágalo en ese orden.La razón es que los datos cifrados (idealmente) parecen datos totalmente aleatorios, y los algoritmos de compresión terminarán haciendo que los datos sean más grandes, debido a su incapacidad para comprimirlos y a la sobrecarga de contabilidad que viene con cualquier formato de archivo comprimido.

Si es necesaria la compresión, hágalo antes de cifrar.

No.El único cambio será una pequeña cantidad de relleno para alinear los datos al tamaño de un bloque.

Sin embargo, si está comprimiendo el contenido, tenga en cuenta que debe hacer esto antes cifrando.Los datos cifrados generalmente no deberían distinguirse de los datos aleatorios, lo que significa que no se comprimirán.

@freespace y otros:Una de las cosas que recuerdo de mis clases de criptografía es que no debes comprimir tus datos antes del cifrado, porque algunos fragmentos repetibles de flujo comprimido (como encabezados de sección, por ejemplo) pueden hacer que sea más fácil descifrar tu cifrado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top