Introducción
Una función hash es método para generar claves o llaves que representen de manera unívoca a un documento o conjunto de datos. Es una operación matemática que se realiza sobre este conjunto de datos de cualquier longitud, y su salida es una huella digital, de tamaño fijo e independiente de la dimensión del documento original. El contenido es ilegible.7
Es posible que existan huellas digitales iguales para objetos diferentes, porque una función hash tiene un número de bits definido. En el caso del SHA-1, tiene 160bits, y los posibles objetos a resumir no tienen un tamaño límite. A partir de un hash o huella digital, no podemos recuperar el conjunto de datos originales. Los más conocidos son el MD5 y el SHA-1, aunque actualmente no son seguros utilizarlos ya que se han encontrado colisiones. Cifrar una huella digital se conoce como firma digital.
Desarrollo
Requisitos que deben cumplir las funciones hash.
Imposibilidad de obtener el texto original a partir de la huella digital.
Imposibilidad de encontrar un conjunto de datos diferentes que tengan la misma huella digital (aunque como hemos visto anteriormente es posible que este requisito no se cumpla).
Poder transformar un texto de longitud variable en una huella de tamaño fijo (como el SHA-1 que es de 160bits).
Facilidad de empleo e implementación.
Ejemplos de funciones hash
MD5
Es una función hash de 128 bits. Como todas las funciones hash, toma unos determinados tamaños a la entrada, y salen con una longitud fija (128bits). El algoritmo MD5 no sirve para cifrar un mensaje. La información original no se puede recuperar, ya que está específicamente diseñado para que a partir de una huella hash no se pueda recuperar la información. Actualmente esta función hash no es segura utilizarla, nunca se debe usar.
SHA-1
Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los 128bits del MD5. La función de compresión es más compleja que la función de MD5, por tanto, SHA-1 es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y porque tiene mayor longitud que MD5 (160bits contra 128bits).
SHA-1 es más robusto y seguro que MD5, pero ya se han encontrado colisiones, por tanto, actualmente esta función hash no es segura utilizarla, nunca se debe usar.
SHA-2
Las principales diferencias con SHA-1 radica en en su diseño y que los rangos de salida han sido incrementados. Dentro de SHA-2 encontramos varios tipos, el SHA-224, SHA-256, SHA-384 y SHA-512. El más seguro, es el que mayor salida de bits tiene, el SHA-512, que tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de éste en:
Tamaño de salida 512 por los 160 de SHA-1.
Tamaño del bloque, tamaño de la palabra y tamaño interno que es el doble que SHA-1.
Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento su procesamiento y uso, debemos encontrar un equilibrio entre seguridad y velocidad.
Software
Si quieres comprobar o realizar la función hash a un archivo o texto, podréis encontrar el md5sum y el sha1sum por defecto instalados en sistemas operativos Linux. Si utilizas un sistema operativo Microsoft Windows podéis bajar el Snap MD5 que es un todo en uno (tiene para MD5 y para SHA-1).
Conclusión
Las funciones HASH (MD5, SHA-1, etc.) pueden usarse además para autenticar a dos usuarios.
Como carecen de una clave privada no pueden usarse de forma directa para estos propósitos, no obstante existen algoritmos que permiten añadirles esta función.
Entre ellos está HMAC, una función que usando los HASH vistos y una clave secreta autentica a dos usuarios mediante sistemas de clave secreta, las funciones MAC (Message Authentication Code) y HMAC se dedican a la autenticación y firma digital.
HMAC se usa en plataformas IP seguras como por ejemplo en Secure Socket Layer, SSL.
Referencias
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-asimetrica-o-de-clave-publica/55-funciones-hash/551-introduccion
https://www.gaussianos.com/algoritmos-hash-i-introduccion/
Stallings William, ¨Cryptography and network security: Principles and practice¨, 2da edición.
https://www.gaussianos.com/algoritmos-hash-i-introduccion/
Stallings William, ¨Cryptography and network security: Principles and practice¨, 2da edición.
https://www.ibm.com/support/knowledgecenter/es/SSGR73_7.5.1/com.ibm.wci.doc/ref_DigesHash.html
No hay comentarios:
Publicar un comentario