¿Qué es y para qué sirve un hash?
índice
¿Qué es y para qué sirve un hash?
El texto sin formato, como contraseñas y datos personales, se puede convertir en un código mediante una función hash. A diferencia del método de cifrado, el código no se puede convertir a los datos originales. De esta forma, todos los datos de los usuarios están a salvo de ataques de piratas informáticos.
En este artículo aprenderás todo lo que necesitas saber sobre hash. Te explicaremos exactamente qué es el hash, cómo funciona y a qué debes prestar atención. También conocerá importantes áreas de aplicación.
¿Qué es hash?
Un hash es el resultado de una función hash donde la cantidad de datos ingresados puede ser mayor que la cantidad de datos de salida. La cantidad de entrada puede tener una longitud diferente, la cantidad objetivo siempre tiene la misma longitud. Solo diferentes funciones hash producen cadenas de destino de diferente longitud.
Además de las funciones hash convencionales, también existen funciones hash criptográficas. Las funciones hash criptográficas están en el corazón de las criptomonedas, como Bitcoins. Ambos tipos de funciones tienen en común que siempre producen la misma salida a partir de la misma entrada.
Los algoritmos utilizados en el hash hacen que sea muy lento adivinar cuál era la cantidad ingresada a partir de la cantidad objetivo. Por otro lado, es muy fácil extraer el conjunto objetivo del conjunto de entrada. Por lo tanto, los algoritmos hash tienen una función unidireccional. Esto las distingue de las figuras convencionales. Son más fáciles de romper.
Ahora está la cuestión de para qué se necesita realmente el hash. Por ejemplo, se utiliza en seguridad informática. Aquí se emplea para almacenar contraseñas de forma segura. Almacenar las contraseñas como texto sin formato o solo ligeramente encriptadas sería demasiado inseguro, ya que pueden descifrarse fácilmente y las cuentas asociadas pirateadas.
¿Cómo funciona una función hash?
Como se explicó anteriormente, la entrada, o la cadena de entrada, para una función hash puede variar en longitud. La salida, es decir, el conjunto de objetivos, siempre permanece igual. Sin embargo, la longitud del conjunto de objetivos varía según la función hash utilizada. Otras funciones hash que ahora se consideran seguras y, por lo tanto, se pueden usar para almacenar contraseñas son: Argon2, Bcrypt, Scrypt, PBKDF2. Argon2 tiene actualmente el algoritmo más seguro.
Funciones hash criptográficas
La criptografía se ocupa de cifrar la información usando teorías matemáticas. Ya hemos mencionado que además de las funciones hash regulares, también existen funciones hash criptográficas. Deben reunir estas tres cualidades para ser consideradas como tales:
Seguridad contra colisión
En teoría, es posible que diferentes cantidades en la entrada conduzcan al mismo valor hash en la salida. Si tal caso existe, se llama colisión. Una función hash se considera una función hash criptográfica si se puede excluir que se produzca una colisión en el caso de dos cantidades de entrada diferentes.
Existe certeza de colisión si se puede descartar que dos series de entrada diferentes tengan la misma salida. Los algoritmos SHA SHA-2 y SHA-3 actualmente se consideran resistentes a colisiones. Sin embargo, se han encontrado colisiones con las funciones SHA-0 y SHA-1. Por lo tanto, ya no se consideran seguros.
Función unidireccional
Con las funciones hash criptográficas, no debería ser posible determinar el conjunto de entrada si se conoce el conjunto objetivo. Esta propiedad también se conoce como resistencia a la preimagen o resistencia de imagen previa.
La resistencia del modelo es muy importante en la seguridad informática, ya que permite, por ejemplo, guardar contraseñas sin notación de texto plano. El hash prueba la exactitud del contenido sin revelar el contenido. De esta manera, los datos se pueden almacenar protegidos.
Segunda resistencia de imagen previa
Un segundo ataque de resistencia a la preimagen significa buscar otro conjunto de entrada que produzca el mismo conjunto objetivo que un conjunto de entrada ya conocido.
En lugar de encontrar dos conjuntos de entrada arbitrarios que produzcan el mismo conjunto objetivo, uno ya se conoce y se busca otro con la misma salida. La segunda resistencia de imagen previa evita así encontrar una colisión con una entrada ya conocida.
¿Cuáles son las posibles aplicaciones?
Se pueden reducir cantidades muy grandes de datos a menos caracteres con funciones hash. Debido a la resistencia a la colisión ya declarada, puede surgir una especie de huella digital electrónica. A continuación, analizamos más de cerca las diversas aplicaciones posibles. Las posibilidades de aplicación de las funciones hash son muy amplias.
Sumas de comprobación
Las funciones hash se pueden utilizar para detectar manipulaciones durante las descargas. Por ejemplo, si deseas descargar un programa, debes asegurarte de que sea el original y que nada haya sido manipulado durante la descarga.
Para evitar esto, puedes calcular un valor hash del programa antes de descargarlo. Esto entonces sirve como una huella digital. Después de la descarga, vuelves a calcular el valor hash con la misma función. Si ambos valores son iguales, es el original.
Firma digital
Una firma digital está destinada a confirmar la integridad de un mensaje. El remitente de un mensaje digital puede convertirlo en un valor hash utilizando una función hash. Luego cifra este valor con una clave privada. Luego envía tanto el mensaje como el valor cifrado al destinatario.
El destinatario puede comparar ambos códigos para confirmar la integridad de un mensaje. El destinatario ahora puede hacer lo siguiente para asegurarse de que el mensaje que está leyendo no haya sido manipulado cuando se envió. Puedes descifrar el valor encriptado con una clave oficial, obteniendo así el valor hash del mensaje previamente calculado. Luego puede calcular el mensaje él mismo usando la misma función hash que usó el remitente.
Ahora el receptor puede comparar ambos valores. Si el valor que obtiene de su cálculo coincide con el valor que obtiene al descifrar el valor enviado con el mensaje, ese es el mensaje original.
Guardar contraseñas
El hecho de que las funciones hash se utilicen para almacenar contraseñas ya se ha discutido en varios lugares. Si las contraseñas se almacenaran como texto sin formato, podrían leerse en caso de un ataque. Esto no puede suceder si las contraseñas se cifran en un valor hash mediante una función hash y solo se almacena este valor.
Cuando un usuario quiere iniciar sesión en el sistema, ingresa su contraseña. Se crea un valor hash de la contraseña ingresada con la misma función que antes. El usuario se autentica si este valor recién determinado y el valor almacenado coinciden.
Hash de datos
Por ejemplo, el hash de datos se puede usar en tiendas en línea. Toda la información personal, como el nombre del usuario o la dirección de correo electrónico, se codifica. En lugar del texto sin formato, solo se almacena el hash.
De esta forma, el usuario de la tienda web puede permanecer en el anonimato, mientras que sus datos, como las preferencias, pueden ser utilizados. Esta información se puede utilizar para una orientación aún más específica, al mismo tiempo que se garantiza la protección de datos.
¿Qué tienen que ver salt y pepper con el hash?
Para proteger las bases de datos y su contenido, como las contraseñas, contra ataques de piratas informáticos, se pueden tomar otras medidas de seguridad además del hash. Una de estas precauciones de seguridad es el uso de salts. Los salts son números generados aleatoriamente, uno de los cuales se asigna a cada usuario o contraseña. Cada sal es única.
La contraseña se combina con salts y luego se convierte en un hash mediante la función hash. Esto evita colisiones y dos contraseñas nunca pueden generar el mismo hash. También hace que sea más difícil para los piratas informáticos descifrar las contraseñas de los usuarios.
Hay algunas cosas a tener en cuenta con los salts para que puedan brindar protección de manera segura contra un ataque de piratería. Cada salt debe ser único. Si se agrega un usuario o si un usuario cambia su contraseña, se debe asignar una nueva salt.
Cada sal debe generarse aleatoriamente. Los salts deben ser al menos tan largas como el conjunto objetivo de la función hash utilizada. Se debe usar un método de estiramiento clave para los salts. Esto hace que los hashes sean computacionalmente más intensivos y que los programas de descifrado tomen más tiempo para calcular los hashes.
Además de las salts, las contraseñas también se pueden proteger con pepper. Pepper es una cadena de 32 caracteres generada aleatoriamente. A diferencia de salt, pepper es la misma para todas las contraseñas. El propósito de Pepper es evitar que un hacker descifre la base de datos. Sin pepper, los hash de contraseña aún no se pueden descifrar.
Funciones hash y minería
Las funciones hash también juegan un papel importante en la minería de Bitcoins. La minería de bloques se realiza mediante algoritmos. Un minero debe generar un hash que tenga un cierto número de ceros al principio. Esta es la única forma de validar un bloque.
Estos bloques todavía se almacenan en cadenas de bloques. Hash también se usa aquí. En un bloque, los datos se almacenan en un orden que no se puede cambiar. Finalmente, un bloque se almacena como un hash y este hash se coloca antes de un nuevo bloque. Hasta que esto también se almacene como un hash, y así sucesivamente. De esta manera se crea una cadena de bloques y se puede almacenar una cantidad infinita de datos.
Conclusión
Hash es un proceso en el que una función convierte un conjunto de datos, un conjunto de entrada, en un código, el conjunto objetivo. No importa cuán grande sea el conjunto de entrada, el conjunto de destino siempre tiene el mismo tamaño.
Solo el uso de otra función cambia el tamaño de la colección de destino. De esta forma, se puede almacenar una gran cantidad de datos ahorrando espacio. Además, no se almacena texto plano, sino un código, que protege todos los datos. Hash se utiliza principalmente en la seguridad de TI, por ejemplo, para almacenar de forma segura las contraseñas de los usuarios. Debido a que las funciones hash siempre tienen vulnerabilidades de seguridad, existen varias formas de hacer que los hash sean aún más seguros. Esto incluye, por ejemplo, los métodos de salt y pepper.
Forma parte de estos grupos: