¿Qué es un hash?

Lugar para comentarios respecto de software y hardware
Yenki
Admin
Mensajes: 15734
Registrado: Mié Feb 16, 2005 8:23 pm
Ubicación: La Plata, Argentina

¿Qué es un hash?

Mensaje por Yenki » Mié Jul 02, 2014 1:50 pm

Una función hash o función resumen es un algoritmo que se aplica sobre un grupo de datos (una contraseña, un archivo, un texto), y que da como resultado una cadena de caracteres alfanuméricos que tiene en general un largo fijo.

En la wikipedia ilustran el concepto con esta imagen:

Imagen

Ese ejemplo deja ver algunas particularidades de la función hash.

Características de una función hash
* Cualquiera sea el largo de la entrada y aplicada la función hash, la salida, el valor hash en sí, o simplemente hash, tiene siempre el mismo largo, la misma cantidad de caracteres.

* Además para cada entrada que haya debe haber una salida única.
No debería haber dos cadenas de caracteres de entrada distintas que den un mismo resultado del valor del hash.
Esto es difícil de conseguir y cuando dos valores de entrada dan un mismo valor de salida se habla de colisiones.

* Dada una cadena de salida, (el valor hash), es imposible obtener la cadena de entrada que la originó.

* Un cambio de un caracter en los datos de entrada hace variar el hash final.



Es fácil ver por qué a una función hash se la denomina también función resumen.
Dado un conjunto de datos, puede ser cortito como una palabra o largo como el Martín Fierro, al aplicarle la función hash se obtiene una salida alfanumérica dada que puede ser tomada como un resumen de la entrada.



Las funciones hash, o funciones resumen, son muy usadas en criptografía.
Permiten asociar un grupo grande de datos a una cadena chica y única de caracteres.

Algunas funciones hash tienen nombres raros que tal vez han visto ya como MD5, SHA1, o SHA256.

Acá abajo un ejemplo con SHA1:

Imagen


Algunos sitios web muy geeks dan junto con un enlace para la descarga un hash, así como la función hash que hay que emplear para obtenerlo.
La idea es que usuario descargue lo que sea, y luego aplique esa función hash, para ver si obtiene el mismo valor resumen.
Si hubiese algún error al bajar y el archivo en la computadora destino, o sea si tuviese alguna diferencia con el original, uno lo sabría pues obtendría otro valor hash y no el que dan en el sitio web.
Esto permite verificar la integridad de lo recibido, que sea igual a lo que hay en el servidor de origen.

Esto se usa por ejemplo en el sitio web de Virtual Box.


Otro uso, supongan que quieren almacenar contraseñas de usuarios.
Una forma inteligente de hacerlo sería emplear una función resumen y guardar los valores hash y no las claves en sí.
En caso que alguien robe esos valores, no tendría las contraseñas, sino los valores de salida al aplicar la función hash.


Las empresas de antivirus pueden escanear el código malicioso que van encontrando y generar valores de hash , luego armar una base de datos.
A la hora de analizar archivos que pueden estar infectados podrían generar sus valores hash y ver si coinciden con los que tienen guardados.


El concepto de funciones hash es muy empleado en criptografía y por lo tanto, ahí las cosas pueden llegar a complicarse hasta dar dolor de cabeza.
Hay mucho más para profundizar, esto trató de ser una introducción simple para entender el concepto.

Si hallan algún error no duden en marcarlo

Fuentes: What is a hash? (2a2c2075f67a55e2f170b9af7e2212d0cc9f70f9), ¿Qué son y para qué sirven los hash?: funciones de resumen y firmas digitales, y Funciones hash.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado