Seguridad informática

Qué es un hash

La utilización del hash hoy día es masiva. Tiene utilidades en control de calidad de la información, criptografía, firmas digitales, transacciones económicas, blockchain, antivirus, etc. Son innumerables sus utilidades. Pero veamos poco a poco qué es un hash:

Se llama hash al número o algoritmo matemático que lo obtiene, de una serie de datos, de forma que es prácticamente único.

Hash en nuestro DNI

Por ejemplo, en nuestro DNI existe uno. Como podemos ver en la figura de la derecha.

Tras calcular la fórmula matemática definida por el gobierno de España.

El número (sin letra) se divide entre 23. El resto de la división se hace corresponder con una letra. En nuestro caso obtenemos el número hash 14 que se hace equivaler a la letra Z.

Si variamos cualquier dígito, variará el resto y por tanto la letra.

Esa letra es el hash que usamos como dígito de control, para comprobar que hemos escrito bien el número. Igual se procede con los números de cuentas corrientes. También tienen su número de control. Al igual, el IBAN comienza con el prefijo de país más un dígito de control de dos cifras.

Hash complejos

En el caso del DNI, hay más de cuatro millones de números compartiendo cada letra (se llaman colisiones), ya que se usan solo 23 letras para cien millones de números posibles.

Sin embargo, existen otros algoritmos más complejos que pueden generar un código prácticamente sin colisiones, empleando longitudes más largas de hash.

Entre los algoritmos más conocidos están: SHA1, SHA2, SHA3, MD5, BLAKE2.

Por ejemplo el hash BLAKE2 de la frase ¿Cuáles son los hechos?, de Bertrand Russel es: 6a7a5983daec76d0d8c80e96 ce6a2113042b2244b44e3422 ec3b2414d0d21dca72ac8af0 4b9b94b0d8b64bbcda240282 065830c778a392282cef3177 4f0c5588.

Este hash tiene un número de posibilidades muy superior al de estrellas del universo, por lo que una colisión es prácticamente imposible.

Si variamos solo una letra de la frase ¿Cuales son los hechos?, obtenemos el hash siguente: e6a15a4fdd078ea88ba201fd 9c7871af2035d1f60d9dc98b8 787543392bc819a37286b01383 89b819d9d7285ffe0cb06ad65a f3cba3b272d8589b3ad733612a5

Como vemos es completamente distinto.

Yo veo letras y no números

Vale, aunque vea letras, si presta atención solo verá desde la A a la F. Esto es porque el número se expresa en base 16, cuyos dígitos son: 0, 1, 2, 3...8, 9, A, B, C, D, E, F.

Los números en base Hexadecimal (16) son más fáciles de manejar cuando son cadenas tan largas de dígitos.

Hash en lugar de contraseñas

Para evitar el robo de contraseñas, cuando una plataforma le pide que se identifique con un usuario y contraseña, no compara la contraseña con la que tenga guardada en su base de datos.

Lo que tiene guardado es una tabla de hashes que es lo que compara con el hash de lo que Vd. escribe. De esta forma ni el administrador del sistema puede conocer su contraseña.

Fuzzy hash

En español: Hash difuso.

Existen casos en los que necesitamos conocer el grado de diferencia de un archivo comparado con otro.

Por ejemplo, si estamos buscando virus en archivos, buscando plagios de fotos o de documentos. De nada nos sirven los hashes, ya que si el el programador de virus, varia ligeramente el código o el plagiador varía levemente la información, el hash arrojaría un número distinto, siendo el mismo virus, foto o documento.

En estos casos usamos fuzzy hashing (en español hash difuso). Consiste en un análisis por fragmentos del archivo u otros medios heurísticos, devolviéndonos el porcentaje de coincidencia con otro archivo.

Se suelen utilizar herramientas como ssdep y sdhash.


Artículos relacionados:


Volver al índice

Seguridad informática por juan@segura.pro está bajo licencia CC BY-NC-SA 4.0
Propiedad intelectual registrada