Sie sind auf Seite 1von 13

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA


UNIDAD CULHUACAN




ARCHIVOS HASH




MATERIA: ESTRUCTURA Y BASES DE DATOS

PROFESOR: RODRGUEZ BUENDIA JESUS

ALUMNOS:
MEJA PATIO JULIAN ESTEBAN
RAMREZ BELLO M. GUADALUPE
VACA SNCHEZ CSAR DANIEL

GRUPO: 3EM2

CARRERA: Ing. Comunicaciones y Electrnica



ESTRUCTURA Y BASES DE DATOS

2


NDICE



Definicin de Hash.3
Funciones Hash.4
Colisiones..7
Encriptacin.8
Aplicaciones de las funciones Hash.9
Ataques a Funciones Hash.12
Bibliografa13











ESTRUCTURA Y BASES DE DATOS

3


HASH (Dispersin)
Se le denomina funcin hash o de dispersin, h (K), a la funcin que transforma una llave K
en una direccin, la cual se usa como base para la bsqueda y almacenamiento de
registros.


Ejemplo:

Supngase que se desean guardar 75 registros en un archivo (De 1000 posibles), donde la
llave de cada registro es el nombre de una persona. Para poder obtener direcciones
aleatorias de dichos registros se utiliza una funcin hash la cual en este caso consiste en
tomar las representaciones numricas por medio del cdigo ASCII de las dos primeras
letras, multiplicndolas entre si y considerando nicamente los tres ltimos dgitos de
dicha cifra para poder asignar la direccin.


Nombre
Funcin Hash
Direccin Representacin
ASCII
Operacin
BALL 66-65 66 x 65 = 4290 290
LOWELL 76-79 76 x 79 = 6004 004
TREE 84-82 84 x 82 = 6888 888


Observacin: En el ejemplo se denota que aunque los nombres se encuentran ordenados
alfabticamente, las direcciones no poseen un sentido lgico de ordenamiento, es decir
son aleatorias, lo cual es el objetivo principal de una funcin hash.










ESTRUCTURA Y BASES DE DATOS

4


FUNCIONES HASH
Las funciones hash ms comunes son:

Residuo de la divisin
Medio del cuadrado
Pliegue


HASHING POR RESIDUO DE LA DIVISIN

La idea principal de este mtodo es la de dividir el valor de la llave entre un nmero
apropiado, y despus utilizar el residuo de la divisin como direccin relativa para el
registro.

Existen varios factores que deben considerarse para seleccionar el divisor:

1. El rango de valores que resultan de la operacin "llave % divisor", va desde cero hasta
el divisor 1. Luego, el divisor determina el tamao del espacio de direcciones relativas.
Si se sabe que el archivo va a contener por lo menos n registros, entonces tendremos
que hacer que divisor > n, suponiendo que solamente un registro puede ser
almacenado en una direccin relativa dada.

2. El divisor deber seleccionarse de tal forma que la probabilidad de colisin sea
minimizada. Cmo escoger este nmero? Mediante investigaciones se ha demostrado
que los divisores que son nmeros pares tienden a comportase pobremente,
especialmente con los conjuntos de valores de llave que son predominantemente
impares. Algunas investigaciones sugieren que el divisor deber ser un nmero primo.
Sin embargo, otras sugieren que los divisores no primos trabajan tambin como los
divisores primos, siempre y cuando los divisores no primos no contengan ningn factor
primo menor de 20. Lo ms comn es elegir el nmero primo ms prximo al total de
direcciones.

Ejemplo:
Supongamos que proponemos que nuestro archivo tendr 6635 registros, el 20% adicional
es 1327 por lo que le daremos al archivo un tamao de 6635 + 1327, es decir 7962; el
nmero primo ms cercano es 7963 ahora bien, tomando este como nmero lo utilizamos
para obtener la direccin de cualquier llave o clave como por ejemplo la llave 6883221,
con la cual tenemos que:
6883221 = (6883221/7963)
Donde el entero es: 864, y el residuo es: 3189

Este valor (3189) es el resto de la divisin y por tanto este nmero es el que tomaremos
como direccin.
ESTRUCTURA Y BASES DE DATOS

5


MEDIO POR MEDIO DEL CUADRADO (Cuadrado, Doblamiento y Extraccin)

En esta tcnica, la llave es elevada al cuadrado, despus algunos dgitos especficos se
extraen de la mitad del resultado para constituir la direccin relativa. Si se desea una
direccin de n dgitos, entonces los dgitos se truncan en ambos extremos de la llave
elevada al cuadrado, tomando n dgitos intermedios. Las mismas posiciones de n dgitos
deben extraerse para cada llave.

Ejemplo:
Con el nmero 89047 que tomamos como clave tendremos:

89047 * 89047 = 7929368209

Dividindola en dos partes (79293 y 68209) y sumndolos tendremos 147502 y por
extraccin (nmeros de en medio) obtenemos (para un rango de 10000 direcciones) el
nmero 4750 como direccin de dicha clave.



HASHING POR PLIEGUE (Doblamiento)

En esta tcnica, la llave es elevada al cuadrado, despus algunos dgitos especficos se
extraen de la mitad del resultado para constituir la direccin relativa. Si se desea una
direccin de n dgitos, entonces los dgitos se truncan en ambos extremos de la llave
elevada al cuadrado, tomando n dgitos intermedios. Las mismas posiciones de n dgitos
deben extraerse para cada llave.

Ejemplo:
Con el nmero 89047 que tomamos como clave tendremos:

89047 * 89047 = 7929368209

Dividindola en dos partes (79293 y 68209) y sumndolos tendremos 147502 y por
extraccin (nmeros de en medio) obtenemos (para un rango de 10000 direcciones) el
nmero 4750 como direccin de dicha clave.









ESTRUCTURA Y BASES DE DATOS

6


As como estas, existen otras funciones como son:

Cambio de Base: las cifras de los nmeros de la clave se tratan como si estuvieran
expresadas en otra base distinta del decimal, la ms comn es el 11, y se hace la
conversin a base 10 y si fuese necesario se lo combina con alguno de los mtodos antes
vistos para obtener la direccin. 14641.

Ejemplo:
Tenemos el nmero 11025 y como base el 11; esto hace: (1 * 11^4 + 1 * 11^3 + 0 *11^2
+ 2*11^1 + 5*11^0) lo cual nos da como resultado 15999, al que procedemos a extraer
los tres nmeros centrales convirtindose en la direccin 599.

Truncamiento: consisten en despreciar cierta cantidad de caracteres a la izquierda de la
clave para obtener una direccin con la cantidad de dgitos deseados.

Extraccin: consiste en extraer las cifras centrales de la clave para tener otra direccin
del tamao que deseamos.

Seleccin: consiste en elaborar un nmero en base a seleccionar ciertas posiciones de la
clave y reacomodarlas en un determinado nmero.

Multiplicacin: consiste en multiplicar dos partes de la clave o en multiplicarla (o parte
de ella) por una constante, al igual que anteriormente podemos usar otro mtodo para
llevar el valor hallado al rango que deseemos.



















ESTRUCTURA Y BASES DE DATOS

7


COLISIONES

Se le denomina colisin a la accin donde dos llaves diferentes, al momento de ser
procesadas por la funcin hash se les asignan la misma direccin.

Ejemplo: Si se tienen dos nombres LOWELL y OLIVER, dichos nombres arrojaran la misma
direccin, debido al cdigo ASCII de las dos primeras letras L Y O, ambos arrojan la
misma direccin: 004.

Dichas colisiones generan problemas, dado que no se pueden almacenar dos registros en
el mismo espacio, por lo que es necesario disear una funcin hash con un alto nivel de
efectividad, ofreciendo el menor nmero de probabilidades de una colisin. Es importante
mencionar que se busca llegar a una funcin hash perfecta, en la cual no existan las
colisiones entre los registros, sin embargo llegar a este fin es sumamente complejo.

Algunas de las formas de disminuir el nmero de colisiones y garantizar el funcionamiento
de nuestra funcin son:

Esparcir los registros: encontrar un algoritmo de dispersin el cual distribuya de una
forma ms aleatoria los registros.

Usar memoria adicional: hay menos posibilidades de encontrar colisiones cuando se
tiene un menor nmero de registros con respecto al nmero de direcciones permitidas
(Dicho proceso recibe el nombre de densidad de dispersin o del archivo). La
desventaja de esta accin es que se desperdicia espacio de almacenamiento.

Colocar ms de un registro en una direccin: es posible crear el archivo de tal modo
que cada direccin sea lo suficientemente grande para ser capaz de almacenar ms de
un registro. Por ejemplo si el tamao de cada direccin es de 512 bytes y cada registro
tiene un tamao de 80 bytes, entonces ser posible localizar en esa direccin hasta 6
registros. Dichas direcciones reciben el nombre de compartimientos.













ESTRUCTURA Y BASES DE DATOS

8


ENCRIPTACIN
Es un proceso en donde cierta informacin es cifrada, de tal manera que se obtiene un
resultado ilegible, al menos que se conozcan los datos necesarios para su desencriptacin.
De una manera ms sencilla se puede decir que es una medida de seguridad en el
momento de almacenar o de enviar informacin y as esta no pueda ser vista por personas
ajenas.
Algunos de los usos ms comunes de la encriptacin son el almacenamiento y transmisin
de informacin sensible como contraseas, nmeros de identificacin legal, nmeros de
tarjetas de crdito, entre otros ms.
Esta encriptacin hace uso de frmulas matemticas con el propsito de transformar esa
informacin en un criptograma. La mayora de los mtodos para hacer encriptaciones
utilizan una clave como un parmetro que va cambiando en las formulas ya mencionadas,
con la finalidad de garantizar aun ms la discrecin de la informacin, ya que solo podrn
accesar a ella los usuarios que conozcan dicha clave.
Aunque la criptologa surgi con gran anterioridad, la informtica ha revolucionado los
mtodos que se utilizan para la encriptacin/desencriptacin de informacin, debido a la
velocidad con que las computadoras pueden realizar las frmulas matemticas requeridas
para llevar a cabo estos mtodos y a la complejidad que han alcanzado debido a este
hecho.

















ESTRUCTURA Y BASES DE DATOS

9


APLICACIONES DE LAS FUNCIONES HASH

Las funciones o tablas Hashing son muy utilizadas en diferentes campos como lo son:
criptografa, procesamiento de datos y firmas digitales, as como tambin muchos
sistemas relacionados con la seguridad informtica utilizan estas.

CRIPTOGRAFA

Es aquella que aplica frmulas a un cierto volumen de datos con el fin de obtener un
grupo ms pequeo de ellos. Estas tcnicas suelen basarse en funciones hash.

Este tipo de funciones tienen dos propiedades:

El resultado de su aplicacin a grandes volmenes de datos es relativamente corto
(tpicamente una huella tiene entre 128 y 160 bits).

Aunque sea tericamente posible encontrar dos mensajes con idntica huella, la
probabilidad de que esto ocurra es casi imposible o las probabilidades son muy
escasas.
Uno de los requisitos de estas funciones es que sean pesadas, es decir, que el resultado
sea lento de calcular para evitar ataques a base de fuerza bruta.

ALMACENAMIENTO DE CONTRASEAS
Como se menciono anteriormente la criptografa nos permite el transformar un conjunto
de caracteres con sentido en un criptograma.
Para el almacenamiento de archivos la criptografa utiliza un Algoritmo Hash. Un
Algoritmo hash es un algoritmo unidireccional que una vez se han transformado los datos,
hace que resulte imposible recuperar el valor original. As mismo existen muchas clases
de Algoritmos Hash, pero las ms utilizadas son la MD5 y SHA1.
MD5 utiliza una clave de cifrado de un tamao superior que SHA1; por tanto, MD5 resulta
un hash ms difcil de quebrantar. De esto se puede decir que la diferencia entre ellos est
en simplemente en el tamao de la clave que se utiliza para crear el hash y el algoritmo
utilizado. Cuanto mayor sea la clave utilizada, ms fuerte ser el cifrado.


ESTRUCTURA Y BASES DE DATOS

10


FIRMAS DIGITALES
Las firmas digitales autentican la identidad de un remitente (si se fa de la clave pblica de
ste) y ayudan a proteger la integridad de los datos.
Descripcin:
Con una clave pblica generada por A, el remitente de los datos de A puede comprobar
que sta los envi si compara la firma digital de los datos de A y la clave pblica de sta.
Para utilizar cifrado de clave pblica con el objeto de firmar digitalmente un mensaje, A
aplica primero un algoritmo hash al mensaje para crear una sntesis del mismo. La sntesis
del mensaje es una representacin compacta y nica de los datos. Seguidamente, A cifra
la sntesis del mensaje con su clave privada para crear su firma personal. Despus de
recibir el mensaje y la firma, B descifra esta ltima utilizando la clave pblica de Alicia para
recuperar la sntesis del mensaje y enva ste de forma aleatoria mediante el mismo
algoritmo hash que utiliz A. Si la sntesis del mensaje que calcula B coincide exactamente
con la que ha recibido de A, B puede estar seguro de que el mensaje provino del poseedor
de la clave privada y de que no se han modificado los datos.
De esto se tiene que el proceso de firma es:
El usuario prepara el mensaje a enviar.
El usuario utiliza una funcin hash segura para producir un resumen del mensaje.
El remitente encripta el resumen con su clave privada. La clave privada es aplicada al
texto del resumen usando un algoritmo matemtico. La firma digital consiste en la
encriptacin del resumen.
El remitente une su firma digital a los datos.
El remitente enva electrnicamente la firma digital y el mensaje original al
destinatario. El mensaje puede estar encriptado, pero esto es independiente del
proceso de firma.
El destinatario usa la clave pblica del remitente para verificar la firma digital, es decir
para desencriptar el resumen adosado al mensaje.
El destinatario realiza un resumen del mensaje utilizando la misma funcin resumen
segura.
El destinatario compara los dos resmenes. Si los dos son exactamente iguales el
destinatario sabe que los datos no han sido alterados desde que fueron firmados.
Las firmas digitales se pueden utilizar en diferentes casos como:
Correo seguro
Contratos comerciales electrnicos
Factura electrnica
Transacciones comerciales
Dinero electrnico
Voto electrnico
ESTRUCTURA Y BASES DE DATOS

11


PROCESAMIENTO DE DATOS
Cuando recurrimos a archivos se debe a la necesidad de conservar datos despus de que
termina un programa, sin embargo, existen problemas en donde el volumen de datos es
tan grande que es imposible mantenerlos en memoria. Entonces, los datos se almacenan
en un conjunto de archivos, los que forman una base de datos.
Cada archivo se forma en base a un conjunto de lneas y cada lnea est formada por
campos de informacin. Todas las lneas de un mismo archivo tienen la misma estructura,
es decir los mismos campos de informacin, cabe mencionar que cada tipo de archivos
pueden tener diferentes estructuras.
Procesamiento de datos:
a. El objetivo es graficar el Procesamiento de Datos, elaborando un Diagrama que
permita identificar las Entradas, Archivos, Programas y Salidas de cada uno de los
Procesos.
b. Su antecedente es el Diagrama de Flujo.
c. Los elementos claves son los Programas.
d. Se confecciona el Diagrama de Procesamiento de Datos
e. Este Diagrama no se podr elaborar por completo desde un primer momento ya que
depende del Flujo de Informacin.
f. En este primer paso slo se identifican las Salidas y Programas. Los elementos
restantes se identifican en forma genrica.
En lo anterior mencionado es donde intervienen las funciones hash que como ya se
menciono se aseguran de la seguridad y autenticidad de los archivos, o dicho de otra
forma se encargan de la validacin de datos, que consiste en asegurar la veracidad e
integridad de los datos que ingresan a un archivo.








ESTRUCTURA Y BASES DE DATOS

12


ATAQUES A FUNCIONES HASH
Sin embargo, existe la posibilidad de que piratas cibernautas (crackers o hackers) traten
romper con las caractersticas importantes de una funcin hash, teniendo adems las
siguientes probabilidades para lograr su propsito:
Irreversibilidad. Esto es, dado un valor hash ``h'', encontrar la entrada ``x'' que lo
produzca, tal que H(x)=h. Suponiendo que la funcin hash produce un valor de
longitud n-bits, tendran que evaluarse 2n posibles entradas.

Colisin. Encontrar dos valores ``x'' y ``y'' que obtengan el mismo valor hash como
salida, tal que H(x)=H(y). La probabilidad de hallar una colisin podra obtenerse
despus de 2n/2 posibles entradas en base a los ataques de cumpleaos, los cuales
son comnmente usados para encontrar colisiones en funciones hash.
ATAQUE DE CUMPLEAOS
El ataque de cumpleaos (Birthday attack) se refiere a una clase de ataques de fuerza bruta,
procesar cuantas entradas sean necesarias hasta obtener el valor hash deseado.
La analoga con las funciones hash es encontrar un mensaje ``x'' tal que H(x)=H(y). Esto se
considera dentro de las funciones hash como una colisin. Los ataques de cumpleaos se
usan generalmente para encontrar colisiones en funciones hash.










ESTRUCTURA Y BASES DE DATOS

13


BIBLIOGRAFA


Estructura de Datos (Cairo/Guardati) Edit. Mc Graw Hill
Algoritmos y Estructuras de Datos (Niklauss Wirth) Edit. Prentice Hall
Estructura de Datos y Organizacin de Archivos (Loomis) Edit. Prentice Hall
Estructura de Datos y algoritmos (Mark Allen Weiss) Edit. Addison

Das könnte Ihnen auch gefallen