En vez de usar claves públicas y privadas para encriptar o desencriptar (como con ECC o RSA), se puede usar funciones hash para proteger datos. Se procesa texto plano de cualquier tamaño y crea un único identificador de longitud fija. En otras palabras, coge un texto genérico (como el de este artículo) y lo convierte en una cadena de números y letras.
¿Qué encontrarás en este post?
ToggleFunciones Hash
Este “hash” es exclusivo del mensaje; por lo que un mensaje A y un mensaje B no pueden tener la misma función hash, e incluso el mensaje A siempre tendrá el mismo hash siempre que el mensaje no cambie. Por lo tanto, cualquier cambio en el mensaje original creara un hash totalmente nuevo.
A esto también se le conoce como “collison-resistant hash function”, lo que significa que no habrá dos mensajes diferentes que produzcan el mismo hash. El hash resultante generalmente tiene un tamaño entre 128 y 512 bits.
En contraste con la criptografía RSA y ECC, las funciones hash no se usan para facilitar la comunicación entre diferentes partes. Se utilizan para almacenar de forma segura o para crear un acuerdos a través de un mensaje entre diferentes partes sin revelar el texto involucrado. The hash puro no se puede usar, tampoco, para reconstruir el texto original del mensaje y el usuario debe conocer algunas propiedades del texto sin formato para descifrar el hash. Esto hace que las funciones hash sean ideales para guardar contraseñas seguras en servidores de terceros.
Cuando el usuario desea iniciar sesión en la plataforma, se utiliza la misma función hash para crear un hash de la contraseña proporcionada.El hash resultante se compara con el hash almacenado en el servidor de contraseñas. Por lo tanto, el usuario sólo tendrá acceso si el original y el nuevo hash coinciden.
Además, se puede incrementar la seguridad de las contraseñas almacenadas a través de un proceso conocido como “salting”. Con ello, se agrega un valor aleatorio (llamado “the salt”) a la contraseña de texto sin formato antes del proceso de hash. Pero el “salting” sólo es efectivo si el random salt elegido es lo suficientemente largo para que al ser añadido a la contraseña, cree suficientes valores hash que el atacante no pueda generar una tabla con todos los posibles hashes provenientes de un diccionario “salted”
Propiedades
Entre las principales propiedades de las funciones hash encontramos las siguientes:- El hash de cualquier mensaje tiene que ser relativamente fácil de calcular , lo que hace que la implementación sea práctica;
- Una forma computable : debería ser completamente imposible encontrar el mensaje original de un hash. Por ejemplo, para que Alice se autenticara a Bob, ella tendría una ‘S’ secreta junto con la marca de tiempo actual. El único requisito es que Bob sepa sobre el secreto también. Una vez que Bob recibe el hash del mensaje, puede codificar la ‘S’ secreta junto con la marca de tiempo del mensaje y obtener el mismo hash. El hash solo será seguro si es imposible (probabilísticamente improbable) calcular el mensaje original del hash sin conocer el secreto compartido.
- Una función hash debe ser determinista : el mismo mensaje siempre debe dar como resultado el mismo hash.
- Cualquier cambio en el texto original debe cambiar el valor de hash por completo; por lo tanto, no hay correlación entre los valores hash .
- Un valor hash nunca debe estar conectado a dos mensajes diferentes .
Otras aplicaciones
Además de lo anterior, existen otras aplicaciones para el uso de funciones hash, tales como:- Verificación de la integridad de un mensaje : las funciones hash pueden usarse para mostrar que un mensaje no ha sido cambiado. Cualquier cambio en el mensaje tendrá un cambio irreversible y dramático en el hash asociado. Las Blockchains obtienen su inmutabilidad a través de esta característica de hashes.
- Almacenamiento y verificación de contraseñas : los servidores centralizados no almacenan las contraseñas en blanco, sino un hash de la contraseña en sí. Si el usuario proporciona su contraseña al sistema, el hash de la contraseña se genera con la misma función hash y se compara con la función hash almacenada.
- Prueba de trabajo : en prueba de trabajo, el minero tiene que encontrar el hash correcto para un rompecabezas criptográfico. Dependiendo de la longitud del hash y el número de ceros necesarios en el frente, la dificultad de la función hash variará. Bitcoin fue el primero en implementar esta técnica.
Variaciones
Función hash de camaleón
Las funciones de camaleón también se llaman funciones de trampa, ya que incluyen una puerta trampa para encontrar colisiones en el dominio de las funciones. Las funciones de Trapdoor son resistentes a colisiones, es decir, no se puede obtener el mismo hash a partir de diferentes valores de entrada. En otras palabras, no habrá dos mensajes diferentes que produzcan el mismo hash. “Estas funciones hash se caracterizan por la propiedad no estándar de ser resistente a colisiones para el firmante, pero la colisión es tratable para el destinatario”. (7) Las firmas de camaleón evolucionaron de las funciones de camaleón. Estas firmas le permiten al firmante firmar un documento digital. El destinatario del documento firmado podrá ver que se ha firmado, pero los detalles del documento siguen siendo privados.Resumen
A diferencia de las claves de encriptación como RSA y ECC, las funciones hash son computables en un solo sentido. Las funciones de hash permiten a los usuarios generar el hash de un mensaje de cualquier tamaño y almacenarlo de forma segura. Incluso si el hash es recibido por un tercero, el texto sin formato no sería accesible sin ninguna información sobre el texto sin formato. El tipo de función hash utilizada depende de la aplicación y el tipo de datos almacenados. Las funciones hash varían en seguridad, velocidad y disponibilidad. Las funciones hash resultantes, más largas y más complejas se utilizan para una mayor seguridad, mientras que las funciones hash más cortas proporcionan ventajas de velocidad. Las aplicaciones de hash son diversas e incluyen PoW mining, casos de uso en la arquitectura blockchain, administración de contraseñas y seguridad de datos. Se continúan desarrollando nuevas ideas de implementación que involucran hash.Fuentes
https://technet.microsoft.com/en-us/library/aa998077(v=exchg.65).aspx https://www.youtube.com/watch?v=dCvB-mhkT0w https://crypto.stackexchange.com/questions/1190/why-is-elliptic-curve-cryptography-not-widely-used-compared-to-rsa https : //hackernoon.com/algorithms-explained-diffie-hellman-1034210d5100 https://eprint.iacr.org/2017/011.pdf https://arxiv.org/pdf/1109.1877.pdf https://es. wikipedia.org/wiki/Cryptographic_hash_function https://en.wikipedia.org/wiki/List_of_hash_functions https://blockgeeks.com/guides/what-is-hashing/Por: Eden Block
Eden Block es un líder global en el ámbito de las tecnologías de contabilidad distribuida, que trabaja en todas las industrias con empresas de blockchain, empresas e instituciones educativas.
Si tienes algo que deseas compartir o quieres formar parte de KeepCoding, escríbenos a [email protected].