Está en la página 1de 7

ACTIVIDAD

Homework 03 - Hash Functions


Materia
Análisis y diseño de algoritmos avanzados
TC2038, Grupo 570

PROFESOR
Prof. Salvador E. Venegas Andraca

Equipo 7
Mariel Gisela Perez Ferrusquia A00832811
Hugo Alvarado A00834109
Luis Ángel González Romo A01235962
Esteban Martínez Aguiar A00831789

14 de julio del 2023, Campus Monterrey


Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

INTRODUCCIÓN

Los Algoritmos de Hash Seguros, mejor conocidos como Secure Hash Algorithm o SHA, son un
conjunto de funciones hash criptográficas que se encargan de mantener los datos seguros y generar
códigos hash con la capacidad de convertir datos de cualquier longitud en una cadena de longitud fija.

Existen una variedad de Algoritmos de Hash Seguros publicados a través de los años y
clasificados según sus características.

HISTORIA

Estos algoritmos fueron desarrollados por el Instituto Nacional de Estándares de Tecnología en


Estados Unidos de América y publicados por el National Institute of Standard and Technology con la
finalidad de mantener un patrón con el procesamiento de la información.

El SHA-0, fue la primera versión desarrollada en la década de 1990 por la Agencia de Seguridad
Nacional de los Estados Unidos

Fue nombrada de esta manera con la finalidad de evitar confusiones con sus sucesoras. Su uso no
es recomendado, debido a que en 1998 se descubrieron deficiencias graves de seguridad a causa del uso
del algoritmo. El sucesor del algoritmo, se conoce como SHA-1, que fue mejorado con el mismo
propósito de generar un valor hash único de 160 bits. Sin embargo, con el paso del tiempo y el avance de
la tecnología se descubrió que era posible encontrar colisiones, es decir que con diferentes conjuntos de
datos existía la posibilidad de obtener el mismo valor hash. La siguiente versión, SHA-2, incluye dos
algoritmos, el SHA-256 y el SHA-512. A diferencia de la versión anterior, estos algoritmos utilizan
tamaños de salida más grandes, lo que garantiza una mayor seguridad y resistencia ante los ataques. El
SHA-2 utiliza bloques de datos de 512 bits, pero dependiendo de la variante tiene un tamaño de salida
diferente. El SHA-256 produce valores de 256 bits y el SHA-512 produce valores de salida de 512 bits.
Por último, el algoritmo de SHA-3 fue publicado en el 2015, que está diseñado para poder ser
reemplazado de forma directa con la versión anterior, por lo que cuenta con muchas funciones similares
con la diferencia de tener una mayor resistencia ante los ataques criptográficos.

Este algoritmo utiliza un enfoque de construcción llamado esponja, que es lo que le permite la
resistencia a los ataques, colisiones y permite tener una mayor flexibilidad y rendimiento. Como la
versión anterior, el SHA-3 también cuenta con diferentes valores como SHA-3-256 y SHA-3-512, cuya
variación existe en los bits de salida.
Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

SHA-512

Entre los SHA mencionados anteriormente, los SHA-256 y SHA-512 son de los más utilizados en
sistemas operativos. Estos son bastante similares en varios aspectos, por ejemplo son casi igual de seguros
los dos (en la versión de la familia SHA-2), sin embargo se teoriza que en el contexto del surgimiento de
computadoras cuánticas, los SHA-512 tendrían una ventaja pequeña con respecto a los SHA-256. En
temas de eficiencia computacional, ahorro de recursos de almacenamiento y de transmisión de datos, el
SHA-512 se muestra como una alternativa peor por sus bits de salida más grandes. Por otra parte, este
algoritmo funciona mejor en procesadores de 64 bits, ya que es mejor la compatibilidad en estos casos. Y
es por esto que actualmente, el SHA-512 no es tan popular como lo es el SHA-256, ya que en el uso
extensivo para blockchain, se popularizó desde un inicio el SHA-256 por su compatibilidad con
procesadores de 32 bits. Así que en su mayoría, la popularidad del SHA-512 se debe a usos que no son
dentro de la blockchain necesariamente. No obstante, estos dos algoritmos que se comparan actualmente
por su utilidad, pertenecen a la generación de SHA-2, pero podrían fácilmente ser reemplazados por la
reciente versión de SHA-3, en la cual los resultados de seguridad del algoritmo demuestran ser superiores.

CARACTERÍSTICAS DEL SHA-512

Su principal característica es la rapidez y eficiencia con la que trabajan, generando un valor único
e irrepetible para un conjunto de datos, es decir, que es muy difícil de determinar la cadena de bits
originaria del hash.

Se sabe que existen diversas formas el uso de los algoritmos y funciones de Hashing para
convertir información en valores Hash, en donde comparten ciertas características en común:

Este algoritmo es determinista debido a que si usas el mismo input y el mismo algoritmo de SHA,
el Hash resultante siempre va a ser el mismo. Este es un aspecto importante al momento de querer
autentificar información por medio de usar funciones. Hash.

Por lo tanto, dos inputs no pueden dar dos mismos output después de pasar por la función. A esto
último mencionado se le llama colisión y en los mejores algoritmos de Hashing es muy poco probable que
ocurran colisiones.

SHA-512 es computacionalmente eficiente debido a que procesa la información en chunks más


pequeños para poder generar el valor Hash final. Así pues, cualquier algoritmo de Hashing debe ser
eficiente debe de ser rápido para poder procesar cualquier tipo de valor a un valor Hash único.
Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

Así también, es irreversible debido a que los algoritmos de Hash tienen la principal característica
de que están diseñados para que sea prácticamente imposible obtener la información original del Hash
generado. De hecho, si se pudiera revertir al input original, ya no se puede considerar una función Hash y
estaría comprometido. Esta característica es lo que distingue del encriptado, debido a que este último está
diseñado para poder ser reversible.

EJEMPLOS DE USO

Como se ha mencionado anteriormente, el algoritmo SHA-512 en sus diversas variantes tiene


bastantes aplicaciones en sistemas operativos actuales, de las cuales se utiliza poco para plataformas de
blockchain para asegurar las transacciones y los bloques al mantener su integridad basándose en los
valores del hash. Sin embargo, como ya se mencionó, hay otras versiones de SHA y otras funciones
distintas donde predomina su uso para blockchain, mientras que el SHA-512 es utilizado mayormente
para otros propósitos.

Una de las formas en las que se utiliza más es para proteger y almacenar contraseñas, por ejemplo
los vendedores de Linux y Unix hacen uso del SHA-512 para este propósito y mantener seguras las
contraseñas de estos sistemas operativos. Igualmente, este algoritmo es utilizado para distribuir copias de
software, ya que al computar el valor hash de un paquete de software que se ha enviado, se puede
determinar si coincide con la versión original y no ha sido modificada por tema de seguridad. Además, el
SHA-512 también es utilizado en temas de redes ya que se implementa para protocolos de VPN como lo
es el IPsec, y para la Secure Shell (SSH) para verificar la integridad de los datos, archivos y comandos
que son transmitidos.

FUNCIONAMIENTO Y ESTRUCTURA

La mayoría de las funciones hash constan de dos partes, una parte es la función de compresión,
que toma una clave (k) y algún mensaje de entrada de longitud fija (x) y genera un hash. La segunda parte
se denomina extensor de dominio y vincula varias funciones de compresión de tal manera que la función
hash total puede operar en una cadena de entrada de longitud arbitraria.

La función de compresión generalmente funciona en bloques de datos, como lo hacen DES o


AES. La función de compresión toma una pieza de datos de n bits de longitud y ejecuta varias rondas de
mezcla en ella. Antes de que los datos se conviertan en hash, se rellenan para que la longitud total sea un
Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

múltiplo entero del tamaño del bloque.

Por lo general, la mezcla se realiza con los propios datos, así como con alguna clave de longitud
k. La salida es entonces un hash de estos dos vectores de entrada y, con suerte, los vectores de entrada no
se pueden recuperar del hash de salida. Si la función de compresión no es invertible y el cálculo de
colisiones es

APLICACIONES EN LA INDUSTRIA

1. Verificación de contraseña

Almacenar contraseñas en un archivo de texto normal es peligroso, por lo que casi todos los sitios
guardan sus passwords como hashes.

Cuando un usuario ingresa sus datos, se aplica un hash y el resultado se compara con la lista de
valores resguardados en los servidores de la empresa.

Ciertas propiedades afectan la seguridad del almacenamiento de contraseñas, incluyendo:

● No reversibilidad o unidireccionalidad: un buen hash debería dificultar la reconstrucción


de la clave original a partir de la salida o de este mismo.
● Efecto de difusión o avalancha: un cambio en un solo bit tendría que resultar en una
modificación a la mitad de los bits del hash. En otras palabras, cuando una contraseña se
cambia ligeramente, la salida del texto cifrado debería cambiar de manera significativa e
impredecible.
● Determinismo: una password determinada siempre debe generar el mismo valor hash o
texto cifrado.
● Resistencia a colisiones: tiende a ser dificultoso encontrar dos claves diferentes que
tengan como hash en el mismo texto cifrado.
● Impredecible: el valor no debe ser predecible a partir de la contraseña.

2. Comprobación de la integridad de los archivos y mensajes

Se pueden usar hashes para asegurarnos de que los mensajes y archivos transmitidos del remitente
al receptor no sean manipulados en el transcurso de la transacción; la práctica construye una “cadena de
confianza”.
Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

3. Hashing y ciberseguridad

Cuando una empresa descubre que las contraseñas de una plataforma se han visto comprometidas,
generalmente significa que los hackers han adquirido los hash que representan a estas.

Luego, los piratas informáticos ejecutan los hash de palabras comunes y combinaciones de
palabras y números comunes para descifrar algunas de las claves que los usuarios han resguardado.

La industria de la ciberseguridad se encuentra utilizando un mecanismo denominado “salting”; su


traducción libre y directa es “salazón”.

Entonces, “salar” incluye agregar datos aleatorios a una contraseña antes de aplicar el hash y
luego almacenar ese “valor de sal” junto con este. Este proceso dificulta que los hackers usen técnicas de
cálculo previo y descifrar las contraseñas de los datos hash que han adquirido.

4. Generación y verificación de firmas electrónicas

La verificación de firmas es un proceso matemático que se usa para comprobar la autenticidad de


documentos o mensajes digitales.

Una firma electrónica es válida cuando se cumplen los requisitos previos, le da a su receptor una
prueba sólida que el mensaje fue creado por un remitente conocido y que no ha sido alterado en tránsito.

Un esquema de este tipo generalmente consta de tres algoritmos de:

● Generación de claves;
● Firma que, dado un mensaje y una clave privada, genera la rúbrica electrónica;
● Verificación de firmas.

Al momento de que el firmante firma un documento, este se crea utilizando la clave privada de la
persona; el algoritmo matemático actúa como un cifrado, creando datos que coinciden con el documento
firmado, llamado hash, y encriptando esa información.
Matrículas: A00832811, A00834109, A01235962, A00831789
TC2038, Grupo 570 Prof. Salvador E. Venegas Andraca

Bibliografía:

Khaishagi Z. (2019) Cryptography: Explaining SHA-512. Recuperado de:

https://medium.com/@zaid960928/cryptography-explaining-sha-512-ad896365a0c1

KeepCoding (2023) ¿Qué es SHA-1? Recuperado de: https://keepcoding.io/blog/que-es-sha-1/

Penard, Wouter; van Werkhoven, Tim. (2016) On the Secure Hash Algorithm family. Recuperado de:

https://web.archive.org/web/20160330153520/https://www.staff.science.uu.nl/~werkh108/docs/st

udy/Y5_07_08/infocry/project/Cryp08.pdf

Rhodes D. (2020) SHA-512 Hashing Algorithm Overview. Recuperado de:

https://komodoplatform.com/en/academy/sha-512/

Team, C. (2023, 2 mayo). What is hashing, and how does it work? - Codecademy blog. Codecademy

Blog. Recuperado de: https://www.codecademy.com/resources/blog/what-is-hashing/

De DocuSign, C. (2021, 27 diciembre). ¿Qué es un HASh y por qué es tan importante para la seguridad

digital? DocuSign. https://www.docusign.mx/blog/hash

También podría gustarte