El Checksum es una sencilla función criptográfica que nos permite verificar y saber con exactitud si una dirección de Bitcoin está escrita de forma correcta. Una sencilla utilidad que nos permite identificar errores de tipeo o de otro tipos. Todo con el fin de evitar perder nuestros fondos por enviar nuestros bitcoins a una dirección que está mal formada.

La suma de verificación o CheckSum, es una sencilla función que se utiliza para detectar que una serie de datos o archivos no ha sido modificados. Una función muy útil para garantizar la integridad y la protección de la información cuando es almacenada o compartida con otros usuarios en la red.

Su funcionalidad está basada en un sencillo algoritmo de verificación que permite crear pequeños hash o cadenas de caracteres que luego pueden ser usados para verificar antes o después de una transmisión de datos, la validez de los datos transmitidos. Dicho hash generalmente está ubicado en la parte final del archivo o cadena verificado. Y de esta forma, sirven como una firma que ayudar a verificar la integridad de la información.

Muy útil por ejemplo, cuando deseamos incluir una verificación automática que nos permita saber si lo que escribimos o los datos que nos han llegado realmente representan la información deseada.

En tal sentido, el checksum en Bitcoin (y en otras criptomonedas) son ampliamente utilizados, y acá conoceremos más sobre esta pequeña pero potente función, y como nos ayuda a hacer de Bitcoin, un desarrollo mucho más seguro para todos.

William Wesley Petterson creador de las funciones checksum

Origen de los CheckSum

La aparición de la primeras funciones CheckSum datan de los trabajos iniciales de William Wesley Peterson, un científico computacional y matemático que dedicó varios años a la investigación, diseño e implementación de las primeras CheckSum del mundo. Más específicamente, Peterson diseño la primera función CheckSum o de suma de verificación, en el año de 1961, la conocida CRC (Verificación por redundancia cíclica), que luego daría vida a estándares industriales como CRC8 o CRC32C, entre otras derivadas de muy amplio uso.

Desde entonces, las funciones CheckSum o de suma de verificación han sido parte esencial de nuestras vidas. Desde un simple reproductor de CD, pasando por los televisores, los sistema de conversión digital-analógico y viceversa, las transmisiones de datos por cable (como el Ethernet de nuestros computadores) o por radio (como las que realizan nuestros celulares). En fin, la utilidad de las checksum es gigantesca y seguramente está presente en cosas que ni remotamente pensarías que la tienen aplicadas.

Por otro lado, William W. Peterson fue un grandioso desarrollador de tecnologías y mejora de lenguajes de programación, hasta su muerte el 6 de mayo de 2009. En su honor, las empresas Intel y AMD, agregaron a sus respectivos procesadores la función CRC32c. Está es la función checksum más ampliamente conocida de Peterson, y que todavía es ampliamente utilizada en la industria.

¿Cómo funciona CheckSum?

La función CheckSum fue creada a partir de la aplicación de un algoritmo sencillo. Este tiene como objetivo utilizar una serie de operaciones matemáticas y lógicas complejas para convertir una la secuencia de datos en una cadena de números fija conocida como hash de suma de verificación.

Este pequeño hash se utiliza luego para verificar de forma muy rápida si una determinada data ha sufrido daños. Bien sea por almacenamiento (datos escritos o leídos de forma incorrecta) o por transmisión de los mismo (las redes de transmisión siempre tienen una pérdida relacionada a distintos factores). O inclusive si algun actor malicioso la ha modificado de forma premeditada.

Entonces, cómo esta función permite verificar la integridad de una información, es ampliamente utilizada al momento de compartir o almacenar datos en la red. Puesto que los datos, al estar acompañados de los valores hash generados a partir de ellos mismos mediante una función hash, adquieren algunas propiedades extras que les permiten ser verificados y validados a sí mismos cuando son compartidos o almacenados.

Por ejemplo, si un usuario desea compartir un archivo en la red con otro usuario, debe suministrar un valor hash del archivo de manera que este mismo valor pueda ser obtenido al momento de aplicar la función hash sobre ese archivo. Garantizando entonces que el archivo compartido sí llegó de forma correcta y sin alteraciones a su destinatario.

Así mismo, al momento de archivar y almacenar una información, ésta puede ser verificada posteriormente calculando y guardando el resultado del valor hash obtenido. Así, cuando se necesite hacer una comprobación, puede usarse el valor hash guardado para saber si la información ha sido alterada o no, por cualquier motivo.

Casos de uso de la función CheckSum

Los casos de uso de las funciones CheckSum son ampliamente variados. Como ya hemos mencionado son partes muy fundamentales en los aparatos electrónicos y de la informática en general. Pero con el fin de que puedas comprender con mayor claridad el alcance de las mismas veremos a continuación algunos casos de uso reales y muy cotidianos de estas funciones:

Tecnología GSM

La tecnología GSM que hace posible que podamos usar la mayoría de nuestros celulares en la actualidad hace un amplio uso de las funciones checksum en sus sistemas de transmisión digital de voz y datos. Recordemos que la información digital que se envía a la red celular va codificada, comprimida y modulada de tal forma que la misma pueda llegar de un punto a otro en la red celular con la menor pérdida de información y calidad.

Pero al ser una red de datos del tipo inalámbrica existen diversos factores que alteran la calidad de la información enviada. Cualquier tipo de interferencia puede causar pérdidas de información y con ello, perderemos calidad en los servicios. Para hacer frente a esta situación se utilizan las funciones checksum. Gracias a estas funciones la red puede verificar de forma rápida que la información enviada y recibida esté en perfectas  condiciones, y de no estarlos, si se detecta un error, la mis red es capaz de tratar de corregirlo, la mayor parte del tiempo con éxito.

Así que si, gracias a las funciones checksum es que tienes llamadas de voz, mensajería y datos de alta calidad en nuestras redes celulares actuales.

Checksum aplicado en telefonos GSM

Cuentas bancarias

Otro uso muy común de las funciones de checksum es el de verificar que la información de una cuenta bancaria es correcta. Cada vez que vez un número de cuenta bancaria no solo ves un grupo de números que te identifican dentro de ese banco. Sino que también está un dato que les permite verificar que esos números que has entregado son los correctos.

Por ejemplo, en las cuentas bancarias del tipo IBAN, estos números de control o checksum son los primero cuatro dígitos. Los primeros dos indican el país de origen de la cuenta, y los otros dos indican el número de control. Este número de control está relacionado con los últimos 10 números que identifican la cuenta bancaria. Y esto nos garantizan que, no nos equivocaremos al introducir un número de cuenta bancaria.

¿Cuánto sabes, criptonauta?

¿Los checksum pueden ser utilizados para romper la seguridad de las direcciones de criptomonedas?

¡FALSO!

Los checksum son solo una función adicional que se aplica para mejorar la seguridad de uso de una dirección, y su impacto en la seguridad de generación es inexistente. Esto quiere decir, que las checksum en ningún momento se usan para generar datos dentro de una clave privada o pública, solo se usan para chequear de forma bidireccional que dicha información es correcta y no ha sufrido alteraciones, por lo tanto, las checksum no suponen un riesgo de seguridad en ningún momento.

Direcciones de criptomonedas

A través de la función CheckSum o suma de verificación usted podrá comprobar rápida y fácilmente que la dirección que está utilizando es la correcta. O si por el contrario, está alterada de alguna manera. Evitando enviar de forma inconsciente sus criptomonedas a una dirección falsa, incorrecta o inexistente.

Aunque, en teoría, sería imposible enviar bitcoins a una dirección que no existe o que este escrita de forma incorrecta. Debido a que estas direcciones cuando son generadas incorporan un código de suma de control. Este dato representa el valor hash de la dirección y los datos de la suma conforman un esquema alfanumérico propio conocido como Base58Check.

Este guarda la suma de verificación de forma directa dentro de la dirección. Y con ello, si se introduce una dirección de forma incorrecta, las sumas de verificación de ambas direcciones no coinciden. De esta forma, el monedero impide realizar una transacción cuando las direcciones se introduzcan de forma errónea.

En Bitcoin la función hash SHA-256 se aplica dos veces para generar un hash de 32 bytes, donde los primeros 4 bytes (32 bits) son tomados como el checksum para detectar los errores de tipografía en las direcciones. Y, aunque a través de esta suma de verificación no se podrán obtener las claves asociadas a la dirección, si permite la verificación de dichas claves. Con lo que se logra evitar que se cometa un error al realizar una transacción.

Este sencillo procedimiento garantiza que no puedas equivocarte al introducir una dirección de Bitcoin. De hecho, la probabilidad de que te equivoques es de 1 en 4.294.967.295.

Checksum en Bitcoin y su uso en la generación de direcciones