Que es el hash… agárrate que vienen curvas, este artículo lo que es divertido no va a ser, pero voy a intentar hacerlo lo mas resumido y ameno posible, empecemos.
¿Qué es un hash?
Podemos definir un hash como el resultado de una función hash y ya, esto es el hash o el hashing, ¿Qué está bien claro no? ya sabemos que es un hash… o ¿no? a ver vamos a extender esto un poco mas la es cierto que el valor de un hash proviene de una función hash.
Vamos a poner un ejemplo de la teoría, tenemos un archivo, aplicamos una función hash y obtenemos el valor hash, vale quédate con esa idea, ahora desarrollamos esto.
Empezamos diciendo que la función hash es un algoritmo, este algoritmo lo que hace es cambiar ese tipo de archivo a unas letras y números como podría ser a255d16w44erg54652xcadret (por ejemplo).
Características del Hash
La longitud
Como sabemos dependiendo de la función hash que se utilice está creará un valor con una longitud, por lo cual esta longitud debe ser siempre la misma, en caso de utilizar siempre la misma función.
Debemos tener en cuenta que existen varias funciones hash ya que debido al paso del tiempo el hash ha ido evolucionando y cambiando, cada función tiene su propio algoritmo, unos ejemplos de las funciones de hash podrían ser:
- MD5
- SHA1
- Blowfish
Vamos a poner un ejemplo para que se entienda bien, indiferentemente del tamaño del texto la longitud del valor hash es el mismo:
- Si ponemos «seguridad en la informática» nos dará un valor ksa123dsxa24.
- Si utilizamos la misma función hash para seguridad en la informática es vital para tener una empresa segura, esto nos dará un valor hash de 12seed642ssa.
Como ves la longitud es la misma pese a que el mensaje es mas largo. Ahora viene una pregunta que se suele hacer, es posible que para archivos distintos y con la misma función hash aplicada salgan exactamente los mismos caracteres, sí es posible pero eso es excesivamente raro.
Único sentido, no hay vuelta atrás.
Al igual que cuando se encripta un archivo en este si podemos descifrar el mensaje gracias al código cifrado, en el hash no es posible, por lo cual este proceso solo sirve para codificar mensajes.
Si cambia algo, cambia todo
Es una pregunta que se suele hacer habitualmente, si cambio aunque sea un punto del texto ¿cambiará algo en el valor hash? lo cambiará todo, no tendrá nada que ver el valor que tenía con el nuevo valor. Lo único que se conservará es la longitud (en caso de que se use la misma función claro)
Para que sirve el hash
Vamos a lo que nos interesa, para que sirve el hash, esto se utiliza basicamente para la protección de las contraseñas en lugar de almacenarlas en texto claro en una base de datos. Si ha leído algo sobre las funciones hash, es probable que ese sea su uso principal, proteger las contraseñas para que no se almacenen en texto sin cifrar.
Imaginemos que algunos ciberdelincuentes pueden comprometer el servicio y robar su base de datos, y si la contraseña no está encriptada, cosa común en muchas empresas hasta que les entra un malware o les ponen en jaque su información.
Para verificar que ingresamos correctamente la contraseña almacenada en la base de datos (el hash de la clave almacenada), lo que se hace es aplicar el algoritmo hash a la contraseña que hemos introducido y compararla con la contraseña almacenada. Si ve que es la misma clave considerará que es correcta y no habrá problema, si es diferente no nos permitirá acceder.
Este proceso se utiliza para todos los sistemas operativos, sitios web con autenticación de nombre de usuario/contraseña, etc. Un ejemplo de hash en este caso sería cuando en una plataforma pedimos recuperar la contraseña, en la mayoría de casos al ofrecernos una nueva contraseña esta es una con caracteres que combinan letras y números pues eso es un valor hash.
El sistema nos ofrece esa contraseña porque está cifrada y ni siquiera los creadores de la plataforma conocen las contraseñas que el usuario pone. En el caso de que una plataforma te indique tu contraseña exacta, esa plataforma no es segura, mas vale que si pones esas contraseña en varios lugares la cambies.
Adentrémonos un poco mas en las funciones hash criptográficas, estas también se utilizan para detectar malware, se pueden utilizar para detectar los archivos con derechos de autor, como por ejemplo música.ç
Un ejemplo de esto podría ser, vamos a suponer que somos músicos y creamos una canción, a esto le aplicamos un hashing, ese valor generado lo publicamos en un servicio de almacén indicando que eso es nuestro, en el momento que alguna persona quiera compartir esta canción este servicio lo detectará y no se lo permitirá, te suena lo de «no se puede compartir por tener copyright, pues algo así.
También hay listas públicas de malware, conocidas como firmas de malware, que consisten en hashes de porciones pequeñas o enteras de malware. Así que si por un lado un usuario detecta un archivo sospechoso, puede revisar estas listas de datos públicas de hash y de esta manera saber si se trata de un archivo malicioso.
Gracias a las funciones hash criptográficas se puede garantizar la protección de un mensaje (vamos que nadie ha modificado nada). La forma de usarlos para este propósito es verificar los hashes creados antes y después de la transferencia de datos, de modo que si los hash son exactamente iguales, la comunicación es segura y los datos no han cambiado, de lo contrario hay un problema.
Enlace relacionado para entender un poco mas la encriptación, eso sí sabemos que no es lo mismo:
Hemos llegado al final del artículo y espero haber aclarado las dudas sobre que es un hash y para que sirve, se que es un artículo un poco complejo si no tienes muchos conocimientos sobre el hashing pero a nivel de seguridad informática espero haberlo dejado lo suficientemente claro.