La verificación de archivos es el proceso de utilizar un algoritmo para verificar la integridad de un archivo informático , generalmente mediante una suma de comprobación . Esto se puede hacer comparando dos archivos bit a bit, pero requiere dos copias del mismo archivo y puede pasar por alto corrupciones sistemáticas que podrían ocurrir en ambos archivos. Un enfoque más popular es generar un hash del archivo copiado y compararlo con el hash del archivo original.
La integridad de los archivos puede verse comprometida, lo que generalmente se conoce como corrupción del archivo . Un archivo puede corromperse por diversas razones: medios de almacenamiento defectuosos , errores en la transmisión, errores de escritura durante la copia o el traslado, errores de software , etc.
La verificación basada en hash garantiza que un archivo no se haya dañado al comparar el valor hash del archivo con un valor calculado previamente. Si estos valores coinciden, se presume que el archivo no ha sido modificado. Debido a la naturaleza de las funciones hash, las colisiones de hash pueden dar lugar a falsos positivos , pero la probabilidad de colisiones suele ser insignificante en el caso de una corrupción aleatoria.
A menudo es deseable verificar que un archivo no haya sido modificado durante la transmisión o el almacenamiento por terceros no confiables, por ejemplo, para incluir código malicioso como virus o puertas traseras . Para verificar la autenticidad, una función hash clásica no es suficiente, ya que no están diseñadas para ser resistentes a colisiones ; es computacionalmente trivial para un atacante causar colisiones de hash deliberadas, lo que significa que un cambio malicioso en el archivo no se detecta mediante una comparación de hash. En criptografía, este ataque se denomina ataque de preimagen .
Para este fin, se emplean a menudo funciones hash criptográficas . Siempre que las sumas hash no puedan ser alteradas (por ejemplo, si se comunican a través de un canal seguro), se puede suponer que los archivos están intactos. Alternativamente, se pueden emplear firmas digitales para garantizar la resistencia a la manipulación .
Un archivo de suma de comprobación es un archivo pequeño que contiene las sumas de comprobación de otros archivos.
Existen algunos formatos de archivos de suma de comprobación bien conocidos. [1]
Varias utilidades, como md5deep , pueden utilizar dichos archivos de suma de comprobación para verificar automáticamente un directorio completo de archivos en una sola operación.
El algoritmo hash particular utilizado a menudo se indica mediante la extensión del archivo de suma de comprobación.
La extensión de archivo ".sha1" indica un archivo de suma de comprobación que contiene hashes SHA-1 de 160 bits en formato sha1sum .
La extensión de archivo ".md5", o un archivo llamado "MD5SUMS", indica un archivo de suma de comprobación que contiene hashes MD5 de 128 bits en formato md5sum .
La extensión de archivo ".sfv" indica un archivo de suma de comprobación que contiene sumas de comprobación CRC32 de 32 bits en formato de verificación de archivos simple .
El archivo "crc.list" indica un archivo de suma de comprobación que contiene sumas de comprobación CRC de 32 bits en formato brik.
A partir de 2012, las recomendaciones de mejores prácticas son utilizar SHA-2 o SHA-3 para generar nuevos compendios de integridad de archivos y aceptar los compendios MD5 y SHA-1 para compatibilidad con versiones anteriores si no hay compendios más fuertes disponibles. Anteriormente, se utilizaban comúnmente SHA-1, que es teóricamente más débil, MD5 más débil o CRC mucho más débil para las comprobaciones de integridad de archivos. [2] [3] [4] [5] [6] [7] [8] [9] [10]
Las sumas de comprobación CRC no se pueden utilizar para verificar la autenticidad de los archivos, ya que CRC32 no es una función hash resistente a colisiones ; incluso si el archivo de suma hash no se altera, es computacionalmente trivial para un atacante reemplazar un archivo con el mismo resumen CRC que el archivo original, lo que significa que un cambio malicioso en el archivo no se detecta mediante una comparación CRC. [ cita requerida ]