Hash
Hash
Definición
Requisitos de las funciones Hash
1. H puede aplicarse a un bloque de datos de cualquier tamaño.
2. H produce una salida de tamaño fijo.
3. H(x) es relativamente fácil de computar para cualquier x dado, haciendo que tanto las implementaciones de hardware como de software sean prácticas.
4 Para cualquier valor h dado, es imposible desde el punto de vista computacional encontrar x tal que H(x) = h lo cual, con frecuencia, se conoce en la literatura como propiedad unidireccional.
5. Para cualquier bloque dado x, es imposible desde el punto de vista computacional, encontrar y * x con H(y) = H(x), lo que a veces se conoce como, resistencia débil a la colisión.
6 Es imposible desde el punto de vista computacional encontrar un par (x, y) tal que H(x) = H(y), lo que normalmente se conoce como resistencia fierte a la colisión
Funcionamiento
Todas las funciones hash usan los siguientes principios generales. La entrada (mensaje, archivo, etc.) se ve como una secuencia de bloques de n bits. La entrada se procesa bloque a bloque de forma iterativa para producir una función hash de n bits.
Una de las funciones hash más simples es el OR exclusivo bit a bit (XOR) de cada
bloque. Se puede expresar de la siguiente manera:
donde:
La Figura siguiente ilustra esta operación; produce una paridad simple por cada posición
de bit y se conoce como una comprobación de redundancia longitudinal. Es bastante
efectivo para datos aleatorios como comprobación de la integridad de los datos. Cada
valor hash de n bits es igualmente parecido. Así, la probabilidad de que un error en los
datos resulte en un valor hash inalterable es 2^-n. Con datos formateados más predeciblemente,
la función es menos efectiva. Por ejemplo, en la mayoría de los archivos de
texto normales, el bit más significativo de cada octeto siempre es cero. Así, si se usa un
valor hash de 128 bits en vez de una efectividad de 2^128, la función hash en este tipo de
datos tiene una efectividad de 2 ^-112.
Una forma sencilla de mejorar los hechos es realizar una rotación circular de un bit
en el valor hash después de que se haya procesado cada bloque. El procedimiento se
puede resumir de la siguiente manera:
1.Inicialmente, establecer el valor hash de n bits en cero.
2 Procesar cada bloque de datos sucesivo de n bits como sigue:
Aunque el segundo procedimiento constituye una medida aceptable para la integridad
de los datos, es prácticamente inútil para su seguridad cuando un código hash
cifrado se usa con un mensaje de texto claro.
1.Inicialmente, establecer el valor hash de n bits en cero.
2 Procesar cada bloque de datos sucesivo de n bits como sigue:
- Rotar el valor hash actual a la izquierda en un bit.
- Realizar la operación XOR del bloque con el valor hash
El efecto que se produce es el de «aleatorizar» la entrada de forma más completa y salvar
cualquier regularidad que se presente en la entrada.
![]() |
Función hash simple mediante XOR bit a bit |
Dado un
mensaje, es fácil producir un nuevo mensaje que produzca ese código hash: sólo hay que
preparar el mensaje alternativo deseado y luego añadir un bloque de n bits que obligue
al nuevo mensaje y al bloque a producir el código hash deseado.
Aunque un XOR simple o un XOR rotado (RXOR) no es suficiente si sólo se cifra
el código hash, todavía puede parecer que una función tan simple sería útil cuando se
cifran tanto el mensaje como el código hash Pero se debe tener cuidado. Una técnica
propuesta originalmente por la Agencia Nacional de Estándares usaba el XOR simple
aplicado a bloques de mensajes de 64 bits y luego un cifrado de todo el mensaje que usaba
el modo de cadena de bloques de cifrado (CBC). El esquema se puede definir como
sigue: dado un mensaje que consiste en una secuencia de bloques de 64 bits X¡,
Xn, definir el código hash C como el XOR bloque a bloque o todos los bloques y añadir
el código hash como bloque final:
Conclusión
Las funciones hash es una buena forma de poder darle la autentificación fácil y segura a nuestro conjunto de datos, y que por esta razón es tan fácil ver como esta herramienta puede tener un rol importante tanto para la protección de grupos de datos y ademas de dar elementos de seguridad como como son las firmas digitales, o incluso llegar a proteger un sistema contra el malware que pudiera este dar.
Fuentes;
https://sites.google.com/a/espe.edu.ec/programacion-ii/home/tablas-hash
https://es.wikipedia.org/wiki/Funci%C3%B3n_hash
Fuentes;
https://sites.google.com/a/espe.edu.ec/programacion-ii/home/tablas-hash
https://es.wikipedia.org/wiki/Funci%C3%B3n_hash
Comentarios
Publicar un comentario