Son utilizados para proporcionar una huella digital de un fichero, para asegurar que el mismo no ha sido alterado por el usuario o un virus.
Son comúnmente utilizados por los sistemas operativos para cifrar las contraseñas. Asegurando así la integridad de un fichero o mensaje.
Ofrecen niveles de seguridad que posee las siguientes características a la hora de comprobar y operar un mensaje.
Una función hash no cifra, lo que hace es crear un resumen o «firma» de un conjunto de datos, el mismo se pasa como parámetro a esta función. Así, verificamos la integridad, por ejemplo, de un fichero. Tan solo tenemos que emplear dicha función sobre el fichero recibido y verificar que el hash en el mismo sea el informado por el emisor.
Algunos algoritmos HASH:
MD5, SHA-1, SHA-256 y SHA-512, otros.
Donde son utilizados:
Git: es un software (GNU, código libre) que se ha usado como base sobre el que se han desarrollado otros proyectos como:
Gerrit.
Las plataformas de forja
SparkleShare.
git-crypt.
Herramientas, como gitflow.
Aplicaciones de seguridad que requieren autenticación.
E-mail.
Transferencia electrónica de fondos.
Distribución de software.
Almacenamiento de datos.
$ md5sum file.txt > file.txt.md5
Para ver el hash que acabas de generar:
$ cat file.txt.md5
Ver el adjunto 12918
Con md5sum es posible verificar que el hash sea correcto y que el archivo original no haya sido manipulado desde que se creó el fichero “file.txt.md5”. Para ello, escribe el siguiente comando y observa el resultado mostrado:
$ md5sum -c file.txt.md5
Ver el adjunto 12919
Ahora vamos a modificar el fichero original “file.txt” y comprobar que en este caso la verificación del hash falla.
$ nano file.txt
Ver el adjunto 12920
Para guardar los cambios en el archivo, presiona Ctrl-X y luego Yes.
Una vez modificado el archivo, volvemos a realizar la verificación del hash. Comprueba que validación ha fallado lo que demuestra que cualquier cambio que introduzcamos en el fichero, por muy pequeño que sea, generará un hash diferente:
Ver el adjunto 12921
Lo primero que haremos será generar de nuevo el hash del fichero “file.txt”. El argumento –a especifica el algoritmo que se quiere utilizar, siendo SHA-1 el predeterminado si no se indica ningún otro valor.
$ shasum -a 256 file.txt > file.txt.sha256
SHA-256 genera un hash más largo que MD5 y, por tanto, más difícil de adivinar:
$ cat file.txt.sha256
Ver el adjunto 12922
Por último, vamos verificar el hash generado y comprobar que el fichero original no ha sido modificado:
$ shasum -c file.txt.sha256
Ver el adjunto 12923
Existen muchos peligros cuando de enviar mensajes se trata, es importante establecer qué nivel de seguridad hemos de utilizar al enviar mensajes, por eso es importante conocer los riesgos y saber las estrategias a tomar para prevenir este tipo de eventos.
Estas técnicas son perfectamente combinables para crear un envió mucho más seguro, por lo que podríamos tener mensajes que contengan sello digital, se envíen cifrados y sobre un canal seguro. Esto desde luego logra que nuestro mensaje sea Integro, conserve la autenticidad.
Son comúnmente utilizados por los sistemas operativos para cifrar las contraseñas. Asegurando así la integridad de un fichero o mensaje.
Ofrecen niveles de seguridad que posee las siguientes características a la hora de comprobar y operar un mensaje.
Una función hash no cifra, lo que hace es crear un resumen o «firma» de un conjunto de datos, el mismo se pasa como parámetro a esta función. Así, verificamos la integridad, por ejemplo, de un fichero. Tan solo tenemos que emplear dicha función sobre el fichero recibido y verificar que el hash en el mismo sea el informado por el emisor.
Algunos algoritmos HASH:
MD5, SHA-1, SHA-256 y SHA-512, otros.
Donde son utilizados:
Git: es un software (GNU, código libre) que se ha usado como base sobre el que se han desarrollado otros proyectos como:
Gerrit.
Las plataformas de forja
SparkleShare.
git-crypt.
Herramientas, como gitflow.
Aplicaciones de seguridad que requieren autenticación.
E-mail.
Transferencia electrónica de fondos.
Distribución de software.
Almacenamiento de datos.
Ejemplo de MD5: Caso práctico con md5sum:
A continuación, utilizaremos md5sum para generar un hash del archivo y almacenar el resultado en un fichero llamado “file.txt.md5”:$ md5sum file.txt > file.txt.md5
Para ver el hash que acabas de generar:
$ cat file.txt.md5
Ver el adjunto 12918
Con md5sum es posible verificar que el hash sea correcto y que el archivo original no haya sido manipulado desde que se creó el fichero “file.txt.md5”. Para ello, escribe el siguiente comando y observa el resultado mostrado:
$ md5sum -c file.txt.md5
Ver el adjunto 12919
Ahora vamos a modificar el fichero original “file.txt” y comprobar que en este caso la verificación del hash falla.
$ nano file.txt
Ver el adjunto 12920
Para guardar los cambios en el archivo, presiona Ctrl-X y luego Yes.
Una vez modificado el archivo, volvemos a realizar la verificación del hash. Comprueba que validación ha fallado lo que demuestra que cualquier cambio que introduzcamos en el fichero, por muy pequeño que sea, generará un hash diferente:
Ver el adjunto 12921
SHA-256: Caso práctico con shasum
Vamos a repetir los pasos que hicimos en el caso práctico anterior pero esta vez utilizando la función hash SHA-256 mediante el uso de la herramienta shasum. SHA-256 ofrece mayor seguridad que MD5 y es uno de los hash más utilizados.Lo primero que haremos será generar de nuevo el hash del fichero “file.txt”. El argumento –a especifica el algoritmo que se quiere utilizar, siendo SHA-1 el predeterminado si no se indica ningún otro valor.
$ shasum -a 256 file.txt > file.txt.sha256
SHA-256 genera un hash más largo que MD5 y, por tanto, más difícil de adivinar:
$ cat file.txt.sha256
Ver el adjunto 12922
Por último, vamos verificar el hash generado y comprobar que el fichero original no ha sido modificado:
$ shasum -c file.txt.sha256
Ver el adjunto 12923
Existen muchos peligros cuando de enviar mensajes se trata, es importante establecer qué nivel de seguridad hemos de utilizar al enviar mensajes, por eso es importante conocer los riesgos y saber las estrategias a tomar para prevenir este tipo de eventos.
Estas técnicas son perfectamente combinables para crear un envió mucho más seguro, por lo que podríamos tener mensajes que contengan sello digital, se envíen cifrados y sobre un canal seguro. Esto desde luego logra que nuestro mensaje sea Integro, conserve la autenticidad.
- Bibliografía:
- https://www.icai.es/, Aplicaciones prácticas de la criptografía, 2021
- http://www.robertocrespo.net/kaizen/funciones-hash-md5-y-sha256/, 2020