A juzgar por la pregunta y los comentarios, parafrasearé tu pregunta como:
Me gustaría cifrar un archivo, pero parte de mi archivo tiene un formato predecible. ¿Esto hará que sea más fácil descifrar el cifrado? ¿Debo dejar las partes estructuradas y cifrar solo el mínimo?
Primero que nada: esa no es una pregunta tonta. Intuitivamente, usted pensaría que conocer la estructura del mensaje lo ayudaría a descifrarlo, y esto es cierto, hasta cierto punto.
Afortunadamente, este problema ha sido anticipado por la criptografía. Los algoritmos de encriptación 'modernos' tienen un alto factor de ramificación : un pequeño cambio en la entrada, un solo bit cambiado, creará una salida irreconociblemente diferente. Debido a esto, conocer la estructura de parte de su archivo no me ayudará mucho, ya que cualquier variación en el contenido conducirá a un resultado muy diferente.
Los factores de alta ramificación son esenciales para un cifrado fuerte. Aquí hay un breve ejemplo (1) de esto en acción:
> echo HELO1 | openssl aes-128-cbc -k meep -S 0
∙╞X╟ε╜i§B÷FÄ│Γat
> echo HELO2 | openssl aes-128-cbc -k meep -S 0
╩ ëhnw²╜╗ç1L▀≡☼·
(1) Sintaxis: openssl <algorithm> -k <passphrase> -S <salt>
Tenga en cuenta que HELO1
y HELO2
tienen una estructura similar, difieren solo en dos bits, pero producen una salida muy diferente. Esto lo hace de modo que, si comienzo a adivinar su clave de cifrado, no tendré idea de cuán "cerca" estoy. Básicamente, a menos que obtenga un golpe exacto y adivine su frase de contraseña, me costará mucho descifrar cualquier cosa de su archivo.
A menos que, por supuesto, me des información dejando sus encabezados expuestos. Ahora no solo conozco el tipo de archivo, sino que también tengo acceso al árbol de Huffman, que se creó a partir del mensaje codificado y, por lo tanto, contiene información sobre él. Es posible que pueda hacer una suposición educada sobre el contenido sin intentar descifrarlo.
Analogía: HTTP (S)
HTTP también es un protocolo estructurado: cada solicitud comienza con un 'método' (GET, POST, PUT ...) y termina con HTTP/1.X
con X algún número. Aún más: cada línea que sigue tiene una estructura predecible, así como algunas líneas que podrían adivinarse con precisión ( Host:
). Eso suena como mucha información para mi uso.
Sin embargo, HTTPS cifra toda la conversación, porque no hacerlo me brindaría mucha más información. Diablos, con todos los encabezados, es posible que ni siquiera necesite para descifrar la carga útil: puedo chantajearte solo con los datos del encabezado.