domingo, 11 de febrero de 2018

Qué son las Funciones Hash en Criptografía y Criptomonedas?



Deseo comenzar definiendo qué és una función matemática. Primeramente, se dice que existe una función, matemáticamente hablando, cuando una o más variables dependen de otra. Quiere decir, una varía en magnitud, creciente o decreciente, conforme otra también lo hace. Por ejemplo, el área de cualquier circunferencia es función de su radio; y, según las leyes de Newton, la fuerza neta es igual a la masa por la aceleración. 



Entonces, una función Hash consiste en un algoritmo que permite el manejo de grandes cantidades de datos (como los que hay en una cadena de bloques “BLOCKCHAIN”) y los comprime a un tamaño específico y de longitud constante. Un hash es un valor numérico de longitud fija que identifica datos de forma unívoca y se les entiende como un resumen criptográfico de una data de mayor tamaño. Los valores hash se utilizan para comprobar la integridad de los datos que se envían a través de canales no seguros. Puede compararse el valor hash de los datos recibidos con el valor hash de los que se enviaron para determinar si se alteraron los mismos.

Por ello a los hash se les conoce como funciones deterministas, pues, siempre que se presenten los mismos datos a la entrada, deben sucederse las mismas secuencias de datos resumidos a la salida. Esta es la razón por la cual se les considera tan importantes en las ciencias criptográficas. Si por algún motivo se llegase a cambiar algún bit a la data de entrada, la función hash de salida será por ende, totalmente diferente.

Los valores hash también se utilizan en las firmas digitales y en los contratos inteligentes de los criptomercados. Dado que se pueden usar valores hash pequeños para representar cantidades de datos de mayor tamaño, sólo es necesario firmar el hash de un mensaje, en lugar de todos los datos del mismo.



Sin embargo un Hash cumple con las siguientes características:

- Es una cadena de caracteres alfanuméricos en hexadecimal que representan únicamente a un solo documento o transacción de negocio en una red de criptomonedas:

- Ejemplo: 19267ebb60d71af71966c0623daf22e7aa883d52 ; este es un hash que se utiliza en internet para representar, en este caso la localización de un libro en específico, CVD Diamond For Electronic Devices And Sensors Mar 2009 eBook-ELOHiM, haga la prueba, copie el hash en el buscador de su navegador, sin necesidad de otra cosa más le dará las diversas ubicaciones del libro en internet.

Las funciones Hash del tipo Secure One-Way (o Hash unidireccionales) son herramientas de uso común tanto criptosistemas como en bloques de cifrado. Son funciones primitivas que pueden ser usadas para conseguir la privacidad, integridad y autenticidad de un sistema. Una función hash (formalmente conocida como una función Pseudo aleatoria) mapea un tamaño arbitrario de entrada de un dato y lo convierte en otro más pequeño, a este proceso normalmente lo conocemos como compresión. En el sentido estricto de la criptografía, las funciones hash poseen dos propiedades muy útiles; primero conviene que sean unidireccionales y deben resistir colisiones.

La unidireccionalidad de las funciones Hash implica que dada la salida presentada por la función, cualquier alteración del texto de entrada no sería trivial con respecto a la salida. Es decir, si retomamos el ejemplo del Hash anterior, (19267ebb60d71af71966c0623daf22e7aa883d52), el cual pertenece al libro antes mencionado, y si se le cambiase al menos un carácter al texto original (como por ejemplo agregarle una coma a cualquier párrafo) la salida sería totalmente diferente y podría cambiar casi todos los símbolos que representaban al documento original, lo que sería equivalente a compararlo con la teoría del caos (El aleteo de una mariposa en el Perú, podría ocasionar inundaciones en la China).

Ser resistente a la colisión implica que dada una salida a partir del hash, la búsqueda de otra entrada que produzca el mismo resultado (llamado un choque) no es trivial, y se necesitarían complejos procesos matemáticos y poder de cómputo para producirlo. Las funciones Hash se derivan de la aplicación de varios algoritmos, entre ellos el más usado es el MD5 en sus inicios, pero en la actualidad se han desarrollado muchos estándares para que los criptomercados y sistemas de seguridad nodo a nodo de las criptomonedas pueda funcionar.

Cuando hablamos de funciones hash para cripto-monedas, se hace referencia a las Técnicas Combinatorias de Emparejamiento y Criptografía basada en permutación paralela como modelo matemático subyacente. Allí, los parámetros para la memoria caché y el conjunto de datos de Ethash (Ethereum Hash para la Red Ethereum como ejemplo) dependen del número de bloque.

El tamaño del caché y el tamaño del conjunto de datos crecen linealmente; sin embargo, siempre tomamos el primo más alto por debajo del umbral de crecimiento lineal para reducir el riesgo de regularidades accidentales que conducen a un comportamiento cíclico que debe evitarse. Es de recalcar que Ethash de la red Ethereum ha sido el elegido por el observatorio de blockchain venezolano para el lanzamiento de su criptomoneda y criptoactivo el Petro.

La red Ethereum de criptomonedas empleó hasta el 2015 el estándar SHA3, pero migró progresivamente a KECCAKA-256 en la actualidad. Las funciones hash vistas (MD5, SHA-1, etc.) pueden usarse además para autenticar a dos usuarios. La función de los mineros en la red del Petro será velar por la integridad de las transacciones de sus usuarios usando como mecanismo principal las funciones hash de la criptografía computacional paralela, usando patrones de permutación por emparejamiento para evitar colisiones.

La red de soporte del Petro utilizará dos procesos de suma importancia, primeramente: FARFALLE, el cual es una forma de construcción de funciones Pseudo aleatorias para cada transacción electrónica. Lo hace tomando una clave de cadena de entrada con secuencia y longitud arbitraria de datos también a la salida. Para un adversario o intruso en la red que no conoce la clave, estos bits de salida serán vistos como aleatorios e independientes sin conexión aparente e imposibles de descifrar.

Otro proceso de importancia es la generación de funciones KRAVATTE, la cual consiste en un mecanismo de alta velocidad para ejecutar FARFALLE a una tasa de 1600 permutaciones por segundo, diseñado para resistir adversarios cuánticos. Como punto a favor de la Red Petro, el 75% de los mineros en el mundo se encuentran ubicados en China, Rusia e India. De querer perpetrar cualquier intento de intrusión se deberá enfrentar a un regimiento de al menos 600 millones de mineros que dan soporte a la red y capaces de detectar y neutralizar cualquier vector de ataque.

El Secure Hash Algorithm (SHA) fue desarrollado por el Instituto Nacional de Estándares y Tecnología (NIST) y publicado como un estándar federal para el procesamiento de la información (FIPS 180) en 1993; una versión revisada se publicó como FIPS 180-1 en 1995 y se refiere por lo general como SHA-1. El documento original está titulado; Secure Hash Standard (SHA). SHA se basa en la función hash MD4 y su diseño se acerca a los modelos de MD4. 

SHA-1 también se especifica en el RFC 3174, que esencialmente duplica el material en FIPS 180-1, pero añade un código en “C” para puesta en práctica. En futuras ediciones estaré publicando información detallada acerca de cada proceso ejecutado entre los nodos de los criptosistemas base de los criptomercados digitales. Más específicamente, el uso y función de los denominados TOKENS donde se guardarán los hash.

Escrito por: Ing. Roiman Valbuena. Esp. Analista de Seguridad en Telecomunicaciones.