
cksumutilidad de Unix)Una suma de verificación es un pequeño bloque de datos 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í solas, las sumas de verificación se utilizan a menudo para verificar la integridad de los datos, pero no se confía en ellas para verificar su autenticidad . [ 1 ]
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 . Según sus objetivos de diseño, un buen algoritmo de suma de verificación suele generar un valor significativamente diferente, incluso para pequeños cambios realizados en la entrada. [ 2 ] Esto es especialmente cierto en el caso de las funciones hash criptográficas , que pueden utilizarse 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 previamente, existe una probabilidad muy alta de que los datos no hayan sido alterados o corrompidos accidentalmente.
Las funciones de suma de verificación están relacionadas con las funciones hash , las huellas digitales , las funciones de aleatorización y las funciones hash criptográficas . Sin embargo, cada uno de estos conceptos tiene aplicaciones diferentes y, por lo tanto, objetivos de diseño distintos. Por ejemplo, una función que devuelve el inicio de una cadena puede proporcionar un hash adecuado para algunas aplicaciones, pero nunca será una suma de verificación apropiada. Las sumas de verificación se utilizan como primitivas criptográficas en algoritmos de autenticación más complejos. 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 verificación, apropiados para pequeños bloques de datos (como números de la Seguridad Social , números de cuenta bancaria , palabras de computadora , 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.
Algoritmos
Byte de paridad o palabra de paridad
El algoritmo de suma de verificación más simple es la llamada verificación de paridad longitudinal , que divide los datos en "palabras" con un número fijo n de bits y luego calcula la operación OR exclusiva (XOR) bit a bit de todas esas palabras. El resultado se agrega al mensaje como una palabra adicional. En términos más sencillos, para n = 1, esto significa agregar un bit al final de los bits de datos para garantizar que haya un número par de '1'. Para verificar la integridad de un mensaje, el receptor calcula la operación OR exclusiva bit a bit de todas sus palabras, incluida la suma de verificación; si el resultado no es una palabra compuesta por n ceros, el receptor sabe que se produjo un error de transmisión. [ 3 ]
Con esta suma de verificación, cualquier error de transmisión que altere un solo bit del mensaje, o un número impar de bits, se detectará como una suma de verificación incorrecta. Sin embargo, un error que afecte a dos bits no se detectará si estos 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 y aleatoria, la probabilidad de que un error de dos bits no se detecte es 1/ n .
Suma complemento
Una variante del algoritmo anterior consiste en sumar todas las "palabras" como números binarios sin signo, descartando los bits de desbordamiento, y añadir el complemento a dos del total como suma de verificación. Para validar un mensaje, el receptor suma todas las palabras de la misma manera, incluyendo la suma de verificación; si el resultado no es una palabra llena de ceros, debe haber ocurrido un error. Esta variante también detecta cualquier error de un solo bit, pero en SAE J1708 se utiliza la suma modular pro . [ 4 ]
Dependiente de la posición
Las sumas de verificación simples descritas anteriormente no detectan algunos errores comunes que afectan a muchos bits a la vez, como cambiar el orden de las palabras de datos o insertar o eliminar palabras con todos los bits a cero. Los algoritmos de suma de verificación más utilizados en la práctica, como la suma de verificación de Fletcher , Adler-32 y las comprobaciones de redundancia cíclica (CRC), solucionan estas deficiencias al considerar no solo el valor de cada palabra, sino también su posición en la secuencia. Esta característica generalmente aumenta el costo de calcular la suma de verificación.
Suma de verificación difusa
La idea de la suma de verificación difusa se desarrolló para la detección de correo no deseado mediante la creación de bases de datos cooperativas de múltiples proveedores de servicios de Internet (ISP) con correos electrónicos sospechosos de ser spam. El contenido de dicho spam a menudo puede variar en sus detalles, lo que haría que la suma de verificación normal sea ineficaz. Por el contrario, una "suma de verificación difusa" reduce el texto del cuerpo a su mínimo característico y luego genera una suma de verificación de la manera habitual. Esto aumenta considerablemente las posibilidades de que correos electrónicos de spam ligeramente diferentes produzcan la misma suma de verificación. El software de detección de spam de los ISP, como SpamAssassin , de los ISP cooperativos, envía las sumas de verificación de todos los correos electrónicos al servicio centralizado como DCC . Si el recuento de una suma de verificación difusa enviada supera un cierto umbral, la base de datos indica que probablemente se trata de spam. Los usuarios del servicio ISP generan de manera similar una suma de verificación difusa para cada uno de sus correos electrónicos y solicitan al servicio una probabilidad de spam. [ 5 ]
Consideraciones generales
Un mensaje de m bits puede considerarse como un vértice del hipercubo m -dimensional . El efecto de un algoritmo de suma de verificación que produce una suma de verificación de n bits es asignar cada mensaje de m bits a un vértice de un hipercubo mayor, de dimensión m + n . Los 2 m + n vértices de este hipercubo representan todos los mensajes recibidos posibles. Los mensajes recibidos válidos (aquellos que tienen la suma de verificación correcta) comprenden un conjunto más pequeño, con solo 2 m vértices.
Un error de transmisión de un solo bit corresponde a un desplazamiento desde una esquina válida (el mensaje y la suma de verificación correctos) a una de las m esquinas adyacentes. Un error que afecta a k bits mueve el mensaje a una esquina que se encuentra a k pasos de su esquina correcta. El objetivo de un buen algoritmo de suma de verificación es dispersar las esquinas válidas lo máximo posible, para aumentar la probabilidad de que los errores de transmisión "típicos" terminen en una esquina inválida.
Véase también
Tema general
- Algoritmo
- Dígito de control
- Algoritmo de Damm
- Corrupción de datos
- Verificación de archivos
- Suma de verificación de Fletcher
- secuencia de comprobación de fotogramas
- suma de verificación
- suma MD5
- suma de sha1
- Párrafo
- Suma (Unix)
- Suma de verificación de SYSV
- Suma de comprobación BSD
- xxHash
Corrección de errores
Funciones hash
- Lista de funciones hash
- Algoritmo de Luhn
- Bit de paridad
- Suma de verificación móvil
- Algoritmo de Verhoeff
Sistemas de archivos
- Bcachefs , Btrfs , ReFS y ZFS : sistemas de archivos que realizan comprobaciones automáticas de la integridad de los archivos mediante sumas de comprobación.
Conceptos relacionados
Referencias
- ↑ "Definición de CHECKSUM" . Merriam-Webster . Archivado del original el 10 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ Hoffman, Chris (30 de septiembre de 2019). "¿Qué es una suma de verificación (y por qué debería importarte)?" . How-To Geek . Archivado del original el 9 de marzo de 2022. Consultado el 10 de marzo de 2022 .
- ↑ Fairhurst, Gorry (2014). "Checksums & Integrity Checks" . Archivado del original el 8 de abril de 2022. Recuperado el 11 de marzo de 2022 .
- ↑ "SAE J1708" . Kvaser.com. Archivado del original el 11 de diciembre de 2013.
- ↑ "IXhash" . Apache. Archivado del original el 31 de agosto de 2020. Consultado el 7 de enero de 2020 .
Lecturas adicionales
- Koopman, Philip; Driscoll, Kevin; Hall, Brendan (marzo de 2015). "Código de redundancia cíclica y algoritmos de suma de verificación para garantizar la integridad de los datos críticos" (PDF) . Administración Federal de Aviación. DOT/FAA/TC-14/49. Archivado (PDF) del original el 18 de mayo de 2015.
- Koopman, Philip (2023). "Algoritmos de suma de verificación de adición modular de bloques grandes". arXiv : 2302.13432 [ cs.DS ].
Enlaces externos
- Teoría de sumas de verificación aditivas (C) del Grupo Barr
- Aplicación práctica de sumas de verificación criptográficas * A4 * Carta estadounidense * Carta estadounidense de dos columnas
- Calculadora de suma de verificación
- Aplicación de código abierto basada en Python con interfaz gráfica de usuario (GUI) utilizada para verificar las descargas.
- Algoritmos de suma de verificación