Está en la página 1de 8

UNIVERSIDAD NACIONAL DE CHIMBORAZO

CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

CLAVE HASH
Universidad Nacional de Chimborazo
Facultad de Ingeniería
Catedra de Ingeniería de Trafico

Integrantes:
Andrés Valdivieso,
Luis Zúñiga,
Franklin Ugenio.

Abril 2018 – Agosto 2018


UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

Abstracto
Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una
entrada ya sea un texto, una contraseña o un archivo, por ejemplo una salida alfanumérica
de longitud normalmente fija que representa un resumen de toda la información que se le
ha dado es decir, a partir de los datos de la entrada crea una cadena que solo puede
volverse a crear con esos mismos datos como se dijo anteriormente una función
criptográfica hash- usualmente conocida como “hash” es un algoritmo matemático que
transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una
longitud fija, independientemente de la longitud de los datos de entrada, el valor hash de
salida tendrá siempre la misma longitud.
Estas funciones no tienen el mismo propósito que la criptografía simétrica y asimétrica,
tiene varios cometidos, entre ellos está asegurar que no se ha modificado un archivo en
una transmisión, hacer ilegible una contraseña o firmar digitalmente un documento.
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

Características Clave Hash

En definitiva las funciones hash se encargan de representar de forma compacta un archivo


o conjunto de datos que normalmente es de mayor tamaño que el hash
independientemente del propósito de su uso.

Este sistema de criptografía usa algoritmos que aseguran que con la respuesta (o hash)
nunca se podrá saber cuáles han sido los datos insertados, lo que indica que es una función
unidireccional, sabiendo también que se puede generar cualquier resumen a partir de
cualquier dato nos podemos preguntar si se podrían repetir estos resúmenes (hash) y la
respuesta es que teóricamente si, podría haber colisiones, ya que no es fácil tener una
función hash perfecta (que consiga que no se repita la respuesta), pero esto no supone un
problema, ya que si se consiguieran (con un buen algoritmo) dos hash iguales los
contenidos serían totalmente distintos.

Se puede producir un código hash de 160 bits para mensajes de longitud máxima 264 bits,
aunque existen otras variantes poco utilizadas todavía que producen códigos de mayor
longitud.

Cuando son utilizadas estas claves hash:

 Cuando muchas aplicaciones requieren un conjunto dinámico que soporte las


operaciones de un diccionario: Insert, Search, Delete, por ejemplo el compilador
cuando guarda los identificadores de un programa.
 Es posible hacer uso de una lista enlazada con un tiempo O(n), sin embargo, este
tiempo se puede reducir notablemente a orden O(1) en la mayoría de los casos
usando una tabla hash.
 La idea surge de los arreglos que nos permiten acceso a sus elementos en orden
O(n).
 Una opción sería usar un arreglo tan grande como el rango de posibles claves, la
desventaja es el espacio de memoria requerido en tal estrategia.
 Otra opción es usar un arreglo menor, al cual podemos mapear las claves en uso,
esta función de mapeo es la función hash, la tabla así organizada es la tabla hash.
 Como es posible que dos claves conduzcan al mismo mapeo lo cual se conoce
como una colisión, es necesario buscar formas para resolver esta situación.
 Una forma, conocida como hashing abierto hay otros términos dependiendo del
texto, crear una lista asociada a cada entrada del arreglo.
 Otra forma, conocida como hashing cerrado el término depende del libro,
almacena las claves en las mismas entradas del arreglo o tabla hash.
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

Proceso de Relleno

Se incorporan bits de relleno al mensaje de entrada de tal modo que cumpla:El relleno
consiste en un uno seguido de los ceros que sean necesarios. Aunque el mensaje ya tenga
la longitud deseada, se debe efectuar el relleno, por lo que el número de bits de dicho
relleno está en el rango de 1 a 512 bits.

A la salida del paso 1, se le añade un bloque de 64 bits que represente la longitud del
mensaje original antes de ser rellenado.

Se inicializa la memoria temporal MD, la cual consta de 160 bits y su finalidad es


almacenar los resultados intermedios y finales de la función de dispersión. La MD consta
de 5 registros (A, B, C, D, E) de 32 bits cada uno, los valores con los que se inicializan
son los siguientes (valores hexadecimales):

 A=67452301
 B=EFCDAB89
 C=98BADCFE
 D=10325476
 E= C3D2E1F0

Ejemplo:

 SHA1 (” El rápido zorro marrón salta sobre el perro perezoso “)  2fd4e1c6


7a2d28fc ed849ee1 bb76e739 1b93eb12
Un pequeño cambio en el mensaje, con una probabilidad abrumadora, resultando en un
hash completamente diferente.
 SHA1(“”)  da39a3ee5e6b4b0d3255bfef95601890afd80709

Tablas Hash

Inserción

La forma de implementar en función esta operación es pidiendo la llave y el valor,


para con estos poder hacer la inserción del dato, para almacenar un elemento en
la tabla hash se ha de convertir su clave a un número, esto se consigue aplicando
la función resumen “hash” a la clave del elemento, el resultado de la función
resumen ha de mapearse al espacio de direcciones del vector que se emplea como
soporte, lo cual se consigue con la función módulo, tras este paso se obtiene un
índice válido para la tabla, el elemento se almacena en la posición de la tabla
obtenido en el paso anterior si en la posición de la tabla ya había otro elemento,
se ha producido una colisión, este problema se puede solucionar asociando una
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

lista a cada posición de la tabla, aplicando otra función o buscando el siguiente


elemento libre, estas posibilidades han de considerarse a la hora de recuperar los
datos como se aprecia en la figura1.

FIG 1. METODO DE INSERCIÓN DE UNA CLAVE HASH.

Búsqueda

La forma de implementar en función esta operación es pidiendo la llave y con esta


devolver el valor, para recuperar los datos, es necesario únicamente conocer la clave del
elemento, a la cual se le aplica la función resumen, el valor obtenido se mapea al espacio
de direcciones de la tabla si el elemento existente en la posición indicada en el paso
anterior tiene la misma clave que la empleada en la búsqueda, entonces es el deseado. Si
la clave es distinta, se ha de buscar el elemento según la técnica empleada para resolver
el problema de las colisiones al almacenar el elemento, la mayoría de las
implementaciones también incluyen la función de borrar a la cual se le envía una llave
que deberá eliminar, también se pueden ofrecer funciones como iteración en la tabla,
crecimiento y vaciado, también algunas tablas hash permiten almacenar múltiples valores
bajo la misma clave.

Para usar una tabla hash se necesita:

 Una estructura de acceso directo normalmente un arreglo.


 Una estructura de datos con una clave
 Una función resumen (hash) cuyo dominio sea el espacio de claves y su imagen
(o rango) los números naturales.

Técnicas de resolución de colisiones

Estas técnicas se llevan a cabo si dos llaves generan un hash apuntando al mismo índice,
los registros correspondientes no pueden ser almacenados en la misma posición, en estos
casos, cuando una casilla ya está ocupada, debemos encontrar otra ubicación donde
almacenar el nuevo registro, y hacerlo de tal manera que podamos encontrarlo cuando se
requiera.
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

Para dar una idea de la importancia de una buena estrategia de resolución de colisiones,
considérese el siguiente resultado, derivado de la paradoja de las fechas de nacimiento
aun cuando supongamos que el resultado de nuestra función hash genera índices
aleatorios distribuidos uniformemente en todo el vector, e incluso para vectores de 1
millón de entradas, hay un 95% de posibilidades de que al menos una colisión ocurra
antes de alcanzar los 2.500 registros.

Direccionamiento Cerrado, Encadenamiento

En la técnica más simple de encadenamiento, cada casilla en el array referencia una lista
de los registros insertados que colisionan en la misma casilla.
La inserción consiste en encontrar la casilla correcta y agregar al final de la lista
correspondiente.

El borrado consiste en buscar y quitar de la lista, la técnica de encadenamiento tiene


ventajas sobre direccionamiento abierto, primero el borrado es simple y segundo el
crecimiento de la tabla puede ser pospuesto durante mucho más tiempo dado que el
rendimiento disminuye mucho más lentamente incluso cuando todas las casillas ya están
ocupadas, de hecho, muchas tablas hash encadenadas pueden no requerir crecimiento
nunca, dado que la degradación de rendimiento es lineal en la medida que se va llenando
la tabla, por ejemplo, una tabla hash encadenada con dos veces el número de elementos
recomendados, será dos veces más lenta en promedio que la misma tabla a su capacidad
recomendada como se muestra en la fugura2.

FIG3. METODO DE ENCAMINAMIENTO O DIRECCIONAMIENTO CERRADO.

Hash Abierto
Se puede decir que desde un gran Universo de claves sólo un número reducido de claves
serán consideradas ver figura4.
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

FIG 4. HASH ABIERTO

Hash Cerrado
Se puede decir también que desde un gran Universo de claves sólo un número reducido
de claves serán consideradas ver figura5.

FIG 5. HASH CERRADO

Ejemplos y formas de uso

Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la
confidencialidad de una contraseña, ya que podría estar en texto plano y ser accesible por
cualquiera y aun así no poder ser capaces de deducirla, en este caso, para saber si una
contraseña que está guardada, por ejemplo, en una base de datos es igual a la que hemos
introducido no se descifra el hash ya que debería de ser imposible hacerlo sino que se
aplicará la misma función de resumen a la contraseña que especificamos y se comparará
el resultado con el que tenemos guardado como se hace con las contraseñas de los
sistemas Linux.

Ventajas

Tiene como principal ventaja que el acceso a los datos suele ser muy rápido si se
cumplen las siguientes condiciones:
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES

 Una razón de ocupación no muy elevada (a partir del 75% de ocupación se


producen demasiadas colisiones y la tabla se vuelve ineficiente).
 Una función resumen que distribuya uniformemente las claves. Si la función está
mal diseñada, se producirán muchas colisiones.

Desventajas

Necesidad de ampliar el espacio de la tabla si el volumen de datos almacenados crece, se


trata de una operación costosa.

Dificultad para recorrer todos los elementos. Se suelen emplear listas para procesar la
totalidad de los elementos.

Desaprovechamiento de la memoria. Si se reserva espacio para todos los posibles


elementos, se consume más memoria de la necesaria; se suele resolver reservando espacio
únicamente para punteros a los elementos.

Bibliografía
es.wikipedia.org. (29 de 11 de 2017). es.wikipedia.org. Obtenido de wikipedia:
https://es.wikipedia.org/wiki/Tabla_hash

Gonzales, A. (2002). Tablas Hash. Obtenido de profesores.elo.utfsm.cl:


http://profesores.elo.utfsm.cl/~agv/elo320/01and02/dataStructures/hashing.pdf

Stallings, W. (04 de 2004). Fundamentos de seguridad en redes: aplicaciones y estándares.


Obtenido de Fundamentos de seguridad en redes: aplicaciones y estándares:
https://books.google.com.ec/books?id=cjsHVSwbHwoC&pg=PA69&dq=que+es+una+cl
ave+hash&hl=es-
419&sa=X&ved=0ahUKEwj14P6lqL3bAhXDz1MKHdx7DnkQ6AEIPTAE#v=onepage&q=q
ue%20es%20una%20clave%20hash&f=false

También podría gustarte