Suma de verificación


Un checksum es un bloque de datos de pequeño tamaño derivado de otro bloque de datos digitales con el fin de detectar errores que puedan haberse introducido durante su transmisión o almacenamiento . Por sí mismas, las sumas de verificación a menudo se usan para verificar la integridad de los datos, pero no se confía en ellas para verificar la autenticidad de los datos .

El procedimiento que genera esta suma de verificación se denomina función de suma de verificación o algoritmo de suma de verificación . Dependiendo de sus objetivos de diseño, un buen algoritmo de suma de verificación generalmente genera un valor significativamente diferente, incluso para pequeños cambios realizados en la entrada. Esto es especialmente cierto en el caso de las funciones hash criptográficas , que pueden usarse para detectar muchos errores de corrupción de datos y verificar la integridad general de los datos ; si la suma de verificación calculada para la entrada de datos actual coincide con el valor almacenado de una suma de verificación calculada anteriormente, existe una probabilidad muy alta de que los datos no se hayan alterado o corrompido accidentalmente.

Las funciones de suma de comprobación están relacionadas con funciones hash , huellas dactilares , funciones de aleatorización y funciones hash criptográficas . Sin embargo, cada uno de esos conceptos tiene diferentes aplicaciones y, por lo tanto, diferentes objetivos de diseño. Por ejemplo, una función que devuelve el inicio de una cadena puede proporcionar un hash apropiado para algunas aplicaciones, pero nunca será una suma de verificación adecuada. Las sumas de verificación se utilizan como primitivas criptográficas en algoritmos de autenticación más grandes. Para sistemas criptográficos con estos dos objetivos de diseño específicos, consulte HMAC .

Los dígitos de control y los bits de paridad son casos especiales de sumas de control, apropiados para pequeños bloques de datos (como números de seguridad social, números de cuentas bancarias , palabras informáticas , bytes individuales , etc.). Algunos códigos de corrección de errores se basan en sumas de verificación especiales que no solo detectan errores comunes, sino que también permiten recuperar los datos originales en ciertos casos.

El algoritmo de suma de verificación más simple es el llamado control de paridad longitudinal , que divide los datos en "palabras" con un número fijo n de bits, y luego calcula el exclusivo o (XOR) de todas esas palabras. El resultado se adjunta al mensaje como una palabra adicional. Para verificar la integridad de un mensaje, el receptor calcula la exclusiva o de todas sus palabras, incluida la suma de verificación; si el resultado no es una palabra que consta de n ceros, el receptor sabe que ocurrió un error de transmisión.

Con esta suma de verificación, cualquier error de transmisión que cambie un solo bit del mensaje, o un número impar de bits, se detectará como una suma de verificación incorrecta. Sin embargo, no se detectará un error que afecte a dos bits si esos bits se encuentran en la misma posición en dos palabras distintas. Tampoco se detectará el intercambio de dos o más palabras. Si los bits afectados se eligen de forma independiente al azar, la probabilidad de que no se detecte un error de dos bits es 1/ n .


Efecto de una función de suma de comprobación típica (la cksumutilidad de Unix)