El formato de archivo específico es irrelevante en el cifrado. Lo que importa son factores como el medio en el que se encuentra el archivo, el mecanismo de acceso y, en cierta medida, el tamaño del archivo (que se aplica más a la diferencia entre una imagen de disco duro y un archivo de documento pequeño, no tanto a la diferencia entre un PDF y un DOCX). Si el archivo es extremadamente grande, los cifrados con un tamaño de bloque pequeño (como Blowfish, IDEA y CAST5) comienzan a ser menos seguros. Encriptar más de 4 GiB de datos con estos cifrados puede ser peligroso.
Si bien el cifrado en sí puede ser bastante sólido, el modo de operación puede hacer o deshacer un sistema criptográfico, y estos modos son muy dependientes del contexto:
-
ECB - Esencialmente no hay modo. Cada bloque está encriptado con la misma clave. A menos que esté cifrando un solo bloque, este modo es peligroso y puede dar lugar al pingüino del BCE .
-
CBC : brinda poca protección de maleabilidad, pero generalmente es buena para una confidencialidad simple. Hay muchos ataques contra CBC, pero solo se aplican en contextos específicos.
-
CTR : es muy sensible a los ataques de reutilización y maleabilidad, pero es rápido y es bueno para la paralelización. Este modo convierte un cifrado de bloque en un cifrado de flujo. CTR realmente utiliza cifrado tanto para el cifrado como para el descifrado, por lo que se cancelan dos cifrados CTR con la misma clave.
-
GCM : similar a CTR, pero autenticado. Esto proporciona integridad además de la confidencialidad a expensas de un espacio adicional para cada mensaje. Esto se utiliza en redes.
-
XTS : un "modo de bloque estrecho que se puede modificar" que se usa comúnmente para la encriptación de dispositivos de bloque. Requiere el doble del tamaño de la llave para funcionar, pero proporciona cierta resistencia a la maleabilidad mínima.
Estos son los más comunes. Algunos menos comunes son XEX, LRW, PCBC, CFB, OCB, OFB, CTS, EME, EME2 y muchos más. Tienen un propósito mucho más limitado (PCBC, por ejemplo, es como CBC, pero están diseñados de tal manera que un solo error en el cifrado o descifrado se propaga y maneja toda la producción futura), o están patentados o son difíciles de usar en un contexto amplio legalmente (como como EME2 y OCB).
Para responder a tu pregunta actual, usaría CBC para eso. Si su modelo de amenaza no implica que alguien intencionalmente juegue con los archivos cifrados, y solo evitando que alguien vea el contenido, CBC está bien. Es el modo más común para el cifrado de archivos.
No implementes crypto por tu cuenta
Los matices específicos son muy difíciles de entender, y puedes terminar fácilmente con un esquema muy roto a pesar de usar primitivos bien establecidos. Debe usar una biblioteca o programa existente para cifrar sus archivos, como GnuPG. Incluso utilizar la función de cifrado de 7zip sería suficiente.