funcion resumen

5

Click here to load reader

Upload: g-hoyos-a

Post on 25-Jun-2015

1.575 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Funcion resumen

Hash 1

Hash

Una función de hash en funcionamiento.

En informática, Hash se refiere a unafunción o método para generar claves ollaves que representen de manera casiunívoca a un documento, registro,archivo, etc., resumir o identificar undato a través de la probabilidad,utilizando una función hash oalgoritmo hash. Un hash es elresultado de dicha función o algoritmo.

Una función de hash es una funciónpara resumir o identificarprobabilísticamente un gran conjuntode información, dando como resultadoun conjunto imagen finitogeneralmente menor (un subconjuntode los números naturales por ejemplo). Varían en los conjuntos de partida y de llegada y en cómo afectan a la salidasimilitudes o patrones de la entrada. Una propiedad fundamental del hashing es que si dos resultados de una mismafunción son diferentes, entonces las dos entradas que generaron dichos resultados también lo son.

Es posible que existan claves resultantes iguales para objetos diferentes, ya que el rango de posibles claves es muchomenor que el de posibles objetos a resumir (las claves suelen tener en torno al centenar de bits, pero los ficheros notienen un tamaño límite).Son usadas en múltiples aplicaciones, como los arrays asociativos, criptografía, procesamiento de datos y firmasdigitales, entre otros. Una buena función de hash es una que experimenta pocas colisiones en el conjunto esperadode entrada; es decir que se podrán identificar unívocamente las entradas (ver función inyectiva).Muchos sistemas relacionados con la seguridad informática usan funciones o tablas hash.

Orígenes del términoEl término hash proviene, aparentemente, de la analogía con el significado estándar (en inglés) de dicha palabra en elmundo real: picar y mezclar. Donald Knuth cree que H. P. Luhn, empleado de IBM, fue el primero en utilizar elconcepto en un memorándum datado en enero de 1953. Su utilización masiva no fue hasta después de 10 años.En el algoritmo SHA-1, por ejemplo, el conjunto de partida de la función es dividido en palabras que son mezcladasentre sí utilizando funciones matemáticas seleccionadas especialmente. Se hace que el rango de valores que puededevolver la función sea de longitud fija: 160 bits utilizando la adición modular.

Page 2: Funcion resumen

Hash 2

FormalMás formalmente, la función de hash está definida por su dominio (cadenas de bytes de longitud variable), suimagen (secuencias de bytes de longitud fija) y por la función que relaciona dichos conjuntos (llamada función H).La característica deseada en una función Hash es:

Primer criterio:

Desafortunadamente esta idealización (denominada colisiones de hash) es precisa pero indeterminada. Si elconjunto de valores que puede tomar H(x) es mucho menor que las posibilidades de x, entonces esto no puede sercierto siempre que todos los valores de x pueden ser igualmente probables. Entonces, existe una segunda condiciónpara hacer la función útil. Por ejemplo:

Segundo criterio (1): dado un es complejo encontrar tal que .Segundo criterio (2): dados y no es sencillo encontrar .En estos ejemplos anteriores, al referirse al grado de dificultad de una tarea se habla siempre en un sentidopuramente computacional. Esto es, que el tiempo necesario para ejecutar dicha tarea sea increíblemente grande (verNP-C). Además, + puede ser cualquier operación válida sobre el conjunto de partida.En la práctica, para la mayoría de las aplicaciones sin contar la corrección de errores las funciones hashcriptográficas son suficientemente útiles. Los algoritmos MD5 y SHA-1 son dos de los más populares.

Funciones ResumenEstos métodos son muy variados, pueden llegar a tomar en cuenta diversos parámetros tales como el nombre de unarchivo, su longitud, hora de creación, datos que contenga, etc. aplicándole diversas transformaciones y operacionesmatemáticas. Algunas aplicaciones de las funciones resumen son las siguientes:• Identificar algún archivo de computadora independientemente de su nombre o ubicación, lo cual es ampliamente

usado en redes P2P o Peer to peer (intercambio de archivos punto a punto), tales como Kazaa, Ares Galaxy,Overnet, BitTorrent, entre otras.

• Corroborar que el archivo no ha cambiado (que algún virus se haya agregado, se haya copiado con errores, sehaya transferido mal, se haya cambiado su comportamiento en caso de ser un ejecutable, etc.), un ejemplo de estoes el algoritmo MD5, el cual es comúnmente empleado para corroborar la integridad de un archivo bajado deinternet, usualmente en la misma página que se publica el archivo, se encuentra su hash MD5 para que una vezbajado a nuestra computadora comprobemos que se haya bajado correctamente. Esto es una práctica comúndentro del ambiente del software libre, donde después de bajar el archivo se puede comprobar su integridadejecutando el comando md5sum e indicándole el archivo a analizar.

• Identificar un registro en una base de datos y permitir con ello un acceso más rápido a los registros (incluso másrápido que teniendo índices).

Tablas hashLas tablas hash, una de las aplicaciones más extendidas de las funciones de hash, aceleran el proceso de búsqueda deun registro de información según una clave (nota: este uso de la palabra poco se relaciona con su significadohabitual). Por ejemplo, una cadena alfanumérica puede ser utilizada para buscar la información de un empleado en labase de datos de un sistema.La utilización de tablas hash provee un acceso casi directo a dichos registros, lo que significa que, en promedio, unabúsqueda puede llegar a requerir sólo uno o dos intentos en la memoria o el archivo que contiene la información.Naturalmente, se prefiere una buena función de hash que evitará colisiones de hash.Si asumimos que la clave es una cadena de bytes, entonces la función de hash debería ser como un índice de los registros que tiene una distribución aleatoria sobre las cadenas de entrada esperadas. De otra forma, habría más

Page 3: Funcion resumen

Hash 3

colisiones de hash degradando así el tiempo de búsqueda. Si, por ejemplo, la clave es alfabética, cada byte puedetener sólo 26 de sus 256 valores posibles. Funciones tan simples no distribuirán los índices de una forma pareja.Para una comparación de velocidad y calidad de varias funciones de hash, referirse a los enlaces externos.

Corrección de erroresPara la corrección de errores, se asume una proximidad de la distribución de perturbaciones altamente probables. Lasperturbaciones son clasificadas en: errores grandes (improbables) y pequeños (probables). El segundo criterio de lasfunciones de hash se modifica como sigue:

Segundo criterio (3): dados H(x) y x + s, se puede conseguir x si s es

lo suficientemente pequeño.

Las funciones que se guían según estos criterios son conocidas como "códigos de corrección de errores". Lasderivaciones más importantes de este tipo de códigos de corrección son los chequeos redundancia cíclica y loscódigos Reed-Solomon.

Identificación de audioPara la identificación de audio, como verificar si un archivo MP3 coincide con alguno de una lista conocida, unopodría utilizar una función hash conocida como MD5. Sin embargo, esto sería extremadamente sensible aperturbaciones extremadamente probables como variación de ritmo, errores de lectura, cambios en el algoritmo decompresión o diferencias en el volumen del sonido. El utilizar MD5 es útil como un primer paso para encontrararchivos idénticos, pero se requiere un algoritmo más sofisticado para encontrar los elementos coincidentes.Contrariamente a lo que se cree, existen algoritmos robustos para funciones hash con estas características. Lamayoría de los que se encuentran disponibles no son extremadamente precisos con respecto a estos cambios, peroalgunos son lo suficientemente precisos como para identificar la música que proviene de los altavoces en una salaruidosa.

Algoritmo Rabin-KarpEste algoritmo es relativamente rápido para la búsqueda de cadena de caracteres. En promedio, el tiempo deejecución es lineal con respecto a la longitud de la entrada. Se basa en la utilización de funciones hash para compararcadenas.Un modelo simple (e ineficiente) de función de hash es

f(x) = 0 para todo entero x.

Obviamente, la colisión hash en esta función es total. Una un poco más interesante es:

f(x) = x mod 1021

Esto es devuelve el resto de la división x entre 1021. Obviamente, la colisión es menor siempre que el conjunto delcual toma valores x no sea muy grande o lo suficientemente aleatorio. Además, nótese que el hecho de que 1021 seaun número primo no es algo azaroso sino que fue cuidadosamente elegido ya que mecanismos que utilizan este tipode funciones con números primos como base son muy comunes en criptografía.

Page 4: Funcion resumen

Hash 4

Véase también• MD5• SHA

Enlaces externos• Funciones hash para búsqueda en tablas hash [1] (en inglés).• Generador de Hashes [2] Generador Online de Hashes (CRCs, MD2, MD4, MD5, SHA1, Tiger, Snefru, RipeMD,

Whirlpool, Haval, entre otros) Aproximadamente 123 algoritmos, y 200 modos (Hex, Base64)• Documentación sobre hashing [3] (en castellano).

Referencias[1] http:/ / burtleburtle. net/ bob/ hash/ evahash. html[2] http:/ / www. sinfocol. org/ herramientas/ hashes. php[3] http:/ / www. peiper. com. ar/ edicion04/ hashing. pdf

Page 5: Funcion resumen

Fuentes y contribuyentes del artículo 5

Fuentes y contribuyentes del artículoHash  Fuente: http://es.wikipedia.org/w/index.php?oldid=35305479  Contribuyentes: Aalvarez12, Airunp, Alexav8, Antur, Bernard77, ColdWind, Cybercrank, Dodo, Elwikipedista, Fmariluis,Hardcoded, Isha, Itz37, Jane Doe, KnightRider, Maose, Miguelo on the road, Moleculax, Netito777, Qwertyytrewqqwerty, Rayearth, Shooke, Swatnio, Taichi, Telemonica, Vitamine, Zam, 67ediciones anónimas

Fuentes de imagen, Licencias y contribuyentesArchivo:Hash function.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Hash_function.svg  Licencia: Public Domain  Contribuyentes: Helix84, Joanjoc, Mdd, Nguyễn ThanhQuang, 3 ediciones anónimas

LicenciaCreative Commons Attribution-Share Alike 3.0 Unportedhttp:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/