¿Qué es un Hash?
2021-04-15 17:56¿Qué es un Hash?
¿Qué es un Hash?
Cuando hablamos de Hash nos referimos al resultado de lo que llamamos función Hash. Una función Hash es una operación criptográfica generada por identificadores únicos derivados de una información sacada de cada bloque blockchain. Debido a esta gran importancia, hoy os explicaremos qué es un hash y para qué sirve.
El hash viene a ser una función criptográfica que juega un papel clave en la informática. Estas funciones son las encargadas de codificar los datos que forman una cadena de bloques única. Este Hash está representado por una cadena de números y letras con longitud fija en un orden único e irrepetible.
Gracias a una función Hash podemos asegurar la autenticidad de datos en la red, para encriptar contraseñas y que sean completamente seguras y para las firmas de documentos electrónicos. Estas funciones son empleadas constantemente en la tecnología blockchain para volverla más segura.
Historia de los Hashes
La historia de los hashes se remonta al año 1953, cuando el investigador del IBM, Hans Peter Luhn pensó en una vía para buscar y validar de forma rápida documentos. Esto sería lo que hoy conocemos por función resumen o Hash.
Una vez planteada la idea se llevó a cabo un intenso trabajo de investigación que se convirtió en “Indexing for rapid form random-access memory” dirigido por Arnold I. Dumey en el año 1956. Entre los años 1957 y 1961, el investigador Peterson trabajó en una aproximación práctica a lo que estaban buscando. Así fue como por primera vez, en el año 1961 se produjo la aparición de la primera función Hash. Esta se llamó Comprobación de Redundancia Cíclica (Cyclic Redundancy Check en inglés) o CRC.
El objetivo de esta función era comprobar los datos transmitidos en redes como Internet y en sistema de almacenamiento digital. En esta etapa, el uso de dicha función quedaba limitado a espacios académicos y militares. Por su gran utilidad y fácil implementación acabó ocupando el sector civil y actualmente forma parte de un estándar industrial.
Entre los años 70 y 80 tuvo lugar un gran avance tecnológico que se manifestó sobre todo en la informática y la computación. Gracias a esto muchos investigadores pudieron permitirse investigar más sobre este tipo de funciones. En 1973 estas investigaciones comenzaron a dar frutos cuando se presentó el trabajo llevado a cabo por Knuth, “The Art of Computer Programming”. Este no fue el único avance, ya que poco después Knott publicó “Hashing Functions”.
Estos dos libros se encargaron de mostrar al mundo las bases del diseño de funciones hash en la informática. Para el año 1977 Lawrence Carter y Mark N. publicaron “The universal hash functions”. Otro avance fueron las definiciones publicadas en el año 1979 por Ralph Merkle.
A través de todos estos estudios, investigaciones y descubrimientos, en el año 1989 tiene lugar la primera función hash diseñada específicamente para computadoras. Hablamos de la función MD2 creada por, claramente, Ralph Merkle. Este adelanto marcó un antes y un después en la historia de las funciones hash, ya que fue aquí donde comenzó la verdadera revolución.
Ahora la CRC se ha convertido en la función más utilizada en todo el mundo y podemos encontrarla en cualquier aparato electrónico actual. Esto se debe a que con la evolución de la informática y la tecnología este sistema se fue especializando cada vez más.
¿Cómo funciona una función Hash?
Las funciones hash basan su funcionamiento en una serie de procesos matemáticos complejos y lógicos. Su objetivo es tomar una serie de datos consecutivos y organizarlos en una serie de bloques de datos. Dichos bloques se someten a un conjunto de procesos matemáticos y lógicos con el objetivo de convertirse en una cadena alfanumérica, única y de longitud fija. En esta cadena quedan plasmados todos los datos de los bloques sometidos al proceso.
Todo este proceso es trasladado a un software de ordenador para ser usados desde este mismo software y poder practicar el hashing con cualquier serie de datos. Es casi imposible realizar un proceso contrario, es decir, es casi imposible conseguir los datos iniciales a través de la cadena alfanumérica ya creada. Esto nos lleva a la conclusión de que el hashing es un proceso de un solo sentido.
Esto es una ventaja, ya que gracias a que hablamos de un proceso de un solo sentido, podemos crear un documento y someterlo al hashing. Y seguro estaréis pensando, ¿qué ganamos con ello? Pues podemos usar la cadena resultante como una prueba de autenticidad de dicho documento. Esto significa que si alguien modifica el documento el resultado del hashing será una cadena alfanumérica distinta y nos daremos cuenta de que ha sido manipulado.
¿Son seguras las funciones hash?
Sería un sin sentido que una función creada para garantizar la seguridad de la información digital no fuese segura. Están diseñadas para impedir que un ciberdelincuente pueda efectuar sus ataques en la información que protegen. Las funciones hash actuales están preparadas para ofrecer un alto nivel de seguridad, aunque no son 100% inquebrantables.
Para lograr estos altos niveles de seguridad se utilizan características muy similares al caso de la criptografía. Tanto es así que se desarrollan ambas tecnologías sobre prácticamente los mismos principios. Este tipo de seguridad es bastante confiable.
Un claro ejemplo de funciones confiables sería la función MD5. Desde sus inicios ofrecía una seguridad muy alta. Estuvo en auge hasta el año 1996 cuando en su expansión por todo internet acabó siendo obsoleta debido a que se logró quebrantar su seguridad.
Para garantizar una mayor seguridad llegaron funciones hash como RIPEMD-160 y SHA-256. Estas funciones cuentan con un nivel de complejidad tan alto que su seguridad queda totalmente garantizada. Para hacernos una idea, en caso de querer romper la seguridad de SHA-256 necesitaríamos miles de años usando los supercomputadores modernos para conseguir el suficiente poder computacional. Esto nos lleva a la conclusión de que estas funciones hash pueden utilizarse con completa confianza.
Aunque ya existen estas potentes funciones, la tecnología no deja de avanzar. Actualmente se siguen investigando la posibilidad de usar otras opciones. Gracias a esto podemos confiar en que siempre dispondremos de funciones completamente seguras para cada ocasión.
Función Hash en la Blockchain
Uno de los usos más importantes de la función Hash se encuentra en la tecnología blockchain. Gracias a esta tecnología la blockchain se vuelve más eficiente, rápida y segura. El papel del Hash en esta tecnología comenzó con la creación de Bitcoin, en el año 2009.
Satoshi Nakamoto explicó en su withepaper de Bitcoin el por qué usar las funciones hash SHA-256 y RIPEMD-160 en su nueva criptomoneda. Desde entonces esta tecnología sumada a la criptografía han jugado un papel importante en el desarrollo de la Blockchain. Veamos en qué consiste su uso y cuáles son sus beneficios.
Generar direcciones de criptomonedas
Las direcciones de los wallets son elementos que representan de forma segura las claves públicas. Estas claves suelen ser bastante largas y complejas. Aquí es donde entran los hashes. Estos se encargan de convertir una larga combinación en una dirección más corta y segura. Este proceso, muchas veces es utilizado para aportar un extra de seguridad.
Las direcciones de criptomonedas de las que hablamos se crean basándose en una criptografía asimétrica y funciones hash. Primero se crea la clave privada de nuestro wallet y a continuación la pública.
En el caso de Bitcoin, para crear un wallet se utilizan las funciones RIPEMD-160 y SHA-256 con el objetivo de mejorar la seguridad y convertir las claves en únicas. No encontraremos nunca dos claves iguales en una blockchain, esto se lo debemos a este proceso.
Minería de Criptomonedas
Las funciones hash vuelven a hacer su aparición en el proceso de minería de criptomonedas. Otra etapa en la blockchain. Su trabajo aquí es, básicamente realizar un proceso de cálculos que llevan a la creación de un bloque.
Para entenderlo mejor pongamos de ejemplo a una criptomoneda, Bitcoin. En esta blockchain se realiza un uso intensivo de una función hash principalmente. Esta función es SHA-256. Se encuentra distribuida en cada uno de los nodos que forman la blockchain de Bitcoin.
Para generar un nuevo bloque en Bitcoin es necesario calcular un Hash SHA-256. Los responsables de llevar este cálculo a cabo son los mineros. No es tarea fácil, ya que descifrar un hash de tal complejidad toma mucho poder computacional. Para hacernos una idea, harían falta un total de 100 trillones de cálculos por segundo para lograr en 10 minutos conseguir el Hash indicado.