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