¿Qué es el hash criptográfico? [una guía para principiantes]

Publicado: 2019-08-07
Tabla de contenido
  • ¿Qué es un hash criptográfico?

  • Explicación del hash criptográfico

  • Propiedades de la función hash criptográfica

  • Algoritmos hash comunes

  • Hashing en criptomonedas

  • Funciones hash en el almacenamiento de contraseñas

  • Envolver

  • Lo más probable es que, en el pasado, usted y sus amigos inventaron un código para pasarse mensajes que nadie más podía entender. Por lo menos conocías a gente así.

    Algunos tipos así se tomaron este juego en serio y lo convirtieron en una carrera.

    Otros se convirtieron en magos, los llamados mentalistas. Con la ayuda de códigos, usan sus "poderes mentales" para adivinar tarjetas, números, etc.

    Ese simple juego infantil se convirtió en lo que se conoce como cifrado, hash y todas las demás funciones, que producen un código aparentemente ilegible a partir de una entrada determinada.

    Hoy nos sumergiremos en el mundo mágico de la codificación para ver qué es un hash criptográfico , su funcionamiento interno y sus aplicaciones.

    Entonces, sin más preámbulos, saltemos de inmediato.

    ¿Qué es un hash criptográfico?

    La función hash criptográfica es un tipo de función hash que se utiliza con fines de seguridad . Tiene varias propiedades que lo distinguen del no criptográfico. Vamos a desglosarlo paso a paso.

    ¿Qué es un hash?

    El hash es el método utilizado para comprimir datos.

    Aún así, no es la compresión típica que todos conocen, como un archivo .zip o .rar.

    El hash crea un código para los datos mediante un algoritmo hash . El código representa una cadena de caracteres, que actúa como una "huella digital" de ese archivo.

    Todos sabemos que las huellas dactilares son pequeñas, pero contienen una gran cantidad de datos. Ya sabes, cosas como nuestros nombres, rostros, direcciones y otra información confidencial. El hash es similar: toma un dato de tamaño arbitrario y lo convierte en una secuencia de caracteres relativamente pequeña.

    No importa el tamaño de la entrada, siempre obtiene una salida de longitud fija al aplicar el hash.

    Ejemplos de funciones hash

    Así que aquí tienes un ejemplo de cómo sucede esto. Para esta demostración, usaremos el algoritmo de hash seguro de 256 bits , conocido como SHA-256. Es uno de los algoritmos hash más comunes , y resulta que Bitcoin también lo usa .

    Mensaje Hash del mensaje
    Hola 3639EFCD08ABB273B1619E82E78C29A7DF02C1051B1820E99FC395DCAA3326B8
    Bienvenido a TechJury B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B
    (El contenido de este artículo completo) 9247D0E6C7A2A45976DCC3D2393A52658B6DDFC846d8AF5743400EA12FB9DE74

    Mira, aunque los mensajes son de diferentes longitudes, todos obtienen un hash de 64 caracteres. Esto también se conoce como valor hash o resumen .

    Obtendrá el mismo resultado de longitud fija si aplica un hash a un libro o incluso al contenido de una biblioteca completa. También puede hacerlo con otros tipos de datos: videos, imágenes, etc.

    Lo bueno de los hash es que obtendrá un valor hash completamente diferente incluso si realiza los cambios más pequeños . Se conoce como efecto de avalancha .

    Entonces, si tu novia / novio borra todas las fotos que tienes de tu ex, por ejemplo, el hash de la carpeta cambiará. De esa manera, sabrá que algo anda mal sin revisar cada imagen.

    Veamos un ejemplo más de cómo una función hash es útil en la práctica. Para el siguiente ejemplo, hice un hash de nuestro “ ¿Qué es una VPN? "Artículo, y se ve así:

    Luego eliminé una palabra del artículo y la volví a codificar. Aquí está el resultado:

    La eliminación de una sola palabra cambió por completo los valores hash . Esto es especialmente útil si desea comprobar si se han realizado modificaciones en un archivo.

    Es incluso más útil cuando se trata de grandes cantidades de información. Por ejemplo, una cadena de bloques de criptomonedas que almacena miles de transacciones diarias.

    Ahora profundicemos y veamos qué significa realmente el hash criptográfico .

    Explicación del hash criptográfico

    Cuando necesita seguridad y privacidad, entra en juego el hash criptográfico . La desventaja del hash criptográfico es que suele ser más lento que los otros tipos de hash . Si necesita hash rápidamente y no necesita seguridad de alto nivel, el hash no criptográfico es mejor. Por ejemplo, si está creando un índice de algunos datos no confidenciales.

    La principal diferencia entre el hash no criptográfico y el criptográfico es que este último es extremadamente difícil de romper. Note que no es imposible. Aún así, el hash criptográfico hace que descifrar un hash sea casi imposible.

    Para que una función hash sea un hash criptográfico, debe tener varias propiedades.

    Propiedades de la función hash criptográfica

    Si desea utilizar hash con fines criptográficos, existen varios requisitos que la función hash debe cumplir para ser considerada segura.

    Propiedad # 1 - Velocidad

    Si le gustan las palabras sofisticadas, las funciones hash criptográficas deberían ser eficientes desde el punto de vista computacional. Eso significa que la función hash debería poder producir un hash en una fracción de segundo .

    Fuente

    Propiedad n. ° 2: el efecto de avalancha

    El efecto de avalancha significa que incluso un cambio menor en el mensaje resultará en un cambio importante en el valor hash .

    Mensaje Hash del mensaje
    Bienvenido a TechJury B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B
    Bienvenido a Techjury 66251AE6324F670BF988465E49B9CEAA2F8C4E72E1D61336D3794301116C092B

    El uso de una "j" minúscula en el segundo mensaje cambia el código hash por completo.

    Este es un ejemplo simple de función hash , pero ya entiendes la idea. Es muy práctico y puede mostrar rápidamente si se ha modificado algún dato.

    Propiedad n. ° 3 : la función hash criptográfica debe ser determinista

    Eso significa que no importa cuántas veces use una función hash para la misma entrada , siempre obtendrá la misma salida . Esto es obvio, ya que si obtuvieras hashes aleatorios para el mismo mensaje, todo el proceso no tendría sentido.

    Propiedad n. ° 4: resistencia previa a la imagen (función unidireccional)

    Esto significa que es muy difícil acceder a la entrada a través de la salida.

    En palabras simples, no puede revertir la función hash criptográfica para acceder a los datos. Aún así, esto no significa que sea imposible ver el mensaje.

    Aquí está el trato.

    Hay dos métodos para encontrar el mensaje hash.

    1. Para comparar el hash con una lista existente de hashes, como esta: Dehash.me. Por lo general, los ciberdelincuentes tienen sus propias bases de datos de mensajes traducidos (eliminados).
    2. Para ejecutar un ataque de fuerza bruta.

    Para descifrar un hash con fuerza bruta, debe elegir un mensaje, hacerlo y compararlo con el hash que tiene. En el mejor de los casos: lo obtienes desde el primer intento. Aún así, las posibilidades de que eso suceda son extremadamente pequeñas.

    En el peor de los casos: lo encontrará en su último intento. Eso significa que tiene que codificar todos los mensajes posibles y compararlos con el que tiene. El número es diferente, dependiendo del algoritmo hash .

    Por ejemplo, usemos SHA-256. En ese caso, tendrías que encontrar 2256 -1 valores hash primero. Es seguro decir que no se puede hacer en varias vidas y déjelo así.

    Ahora.

    La propiedad de resistencia previa a la imagen del hash criptográfico juega un papel importante en el debate entre el hash y el cifrado .

    Ve - se puede descifrar un mensaje cifrado, pero no se puede hacer lo mismo para un hash criptográfico.

    Puedes pensar en el hachís como un batido. No se puede extraer el mensaje de un hachís de la misma manera que no se puede extraer el plátano y la leche de un batido.

    El cifrado, por otro lado, es más como una caja fuerte. Protege sus objetos de valor, pero siempre hay una llave que lo abre.

    Propiedad # 5 - Resistencia a colisiones

    Eso significa que dos mensajes diferentes no deberían poder producir el mismo valor hash . Desde un punto de vista matemático, esto es imposible de todos modos.

    Ya sabes que los valores hash tienen una longitud fija. Eso significa que hay combinaciones de salida limitadas . Las entradas, por otro lado, son un número infinito . Entonces, en teoría, existe la posibilidad de que dos mensajes diferentes produzcan los mismos valores hash .

    Aún así, la función hash en criptografía hace que las probabilidades de una colisión hash sean prácticamente insignificantes.

    Mirar.

    Todas estas propiedades garantizan la seguridad y usabilidad de un hash criptográfico . Así que es hora de conocer las diferentes funciones hash criptográficas.

    Algoritmos hash comunes

    Existen diferentes clases (familias) de algoritmos hash. La principal diferencia entre ellos es el valor hash que produce cada uno y sus propiedades de seguridad.

    Estos son los más utilizados:

    Algoritmo de resumen de mensajes (MD)

    MD5 fue la función hash elegida por muchas empresas, pero se rompió en 2004. Un algoritmo hash se considera roto cuando ha habido una colisión exitosa o un ataque previo a la imagen en su contra. Aún así, muchos sitios web continúan utilizando la función de hash MD5 para la verificación de archivos.

    Por ejemplo, cuando descarga un archivo, puede comparar su hash con el del sitio para asegurarse de que nadie lo haya manipulado.

    La familia MD consta de MD2, MD3, MD4, MD5 (todos estos están rotos) y MD6 (que no es tan popular).

    Aquí está el ejemplo de la función hash de MD5.

    Mensaje Hash MD5
    Techjury FECE553512085FF6B5E213C8EFF9F30D

    MD5 produce un valor hash de 128 bits con 32 caracteres de longitud.

    Debido a sus defectos, el algoritmo Message Digest ya no se considera una función hash criptográfica .

    Algoritmo de hash seguro (SHA)

    La familia más grande de funciones hash criptográficas consta de cuatro clases:

    • SHA-0
    • SHA-1
    • SHA-2
    • SHA-3

    SHA-0 tenía muchas fallas y no se usó ampliamente. SHA-1 intentó arreglarlos, pero se rompió en 2005.

    SHA-2 y sus subclases se usan comúnmente en la actualidad hasta que SHA-3 se demuestra como una función aún más segura.

    La familia SHA-2 consta de cuatro miembros: SHA-224, SHA-256, SHA-384 y SHA-512, que difieren en el número de bits de sus valores hash . Hasta ahora, no ha habido un ataque exitoso al algoritmo hash criptográfico SHA-2 .

    A continuación, se muestran algunos ejemplos de funciones hash que utilizan la clase SHA-2.

    Mensaje Techjury
    SHA-256 FF3E4985DAFF59392EAE60DEC66EC823CAF9575B81903729053A999B9B2C708E
    SHA-384 77653BC173A561E3378373F64E447FB3AEDC691F387BB599656E6AB63B9C5D34

    523C298C59C94802A478F8C3F36E9CDF

    SHA-512 C975F1074E969FAEA76C15084881F7694DE4D542F9E4DF934AFA52470952A362

    25F7ED63D023AB05746DDAFDFED96D57A7AF5344EB91589A09952D102DD3AB04

    Resumen de mensajes de evaluación de primitivas de integridad de RACE (RIPEMD)

    Inicialmente, RIPEMD se creó para un proyecto de la Unión Europea llamado RIPE. Hay cinco funciones hash en la familia RIPEMD.

    • RIPEMD
    • RIPEMD-128
    • RIPEMD-160
    • RIPEMD-256
    • RIPEMD-320

    En 2004 hubo una colisión en la función hash RIPEMD original . Por eso ya no está en uso. Actualmente, RIPEMD-160 es el más común. Así es como se ve:

    Mensaje Digesto de RIPEMD-160
    Techjury ca25dc64fb00c8becb21eddf50805fbc106eed00

    Torbellino

    Este nombre de función hash criptográfica no tiene nada que ver con el fabricante de los electrodomésticos. La galaxia Whirlpool inspiró el nombre del algoritmo.

    Lo interesante del algoritmo de hash Whirlpool es que uno de sus creadores es Vincent Rijmen, el co-creador de AES, Advanced Encryption Standard .

    Whirlpool es una función hash de 512 bits y su resumen representa una cadena con 128 caracteres.

    Este es un ejemplo de la función hash criptográfica .

    Mensaje Hachís de hidromasaje
    Techjury 2E9A775FA4450549FCB6F6CDC4761865715D46FF8003E93CC614EF7C9E3D42A93

    D5A663B4E48674C5155417D686D81ABDBC12FB32A1B650C5E44F24E80156E7D

    Estos son los algoritmos hash más comunes en la actualidad.

    Entonces, ahora que conoce los conceptos básicos del hash, veamos sus aplicaciones en la vida real.

    Hashing en criptomonedas

    Ya hemos explicado qué es Bitcoin y cómo funciona la cadena de bloques , así que seguiremos adelante con el hash.

    La función hash criptográfica es esencial para las criptomonedas, ya que garantiza una de las características más importantes de blockchain: la inmutabilidad .

    Dado que las cadenas de bloques de criptomonedas se ocupan de un gran número de transacciones, utilizan hash. Este es un enfoque mucho más práctico y seguro que mantener cada registro de cada transacción en el libro mayor.

    En el caso de Bitcoin, los mineros ejecutan una serie de funciones SHA-256 para crear el hash de un bloque. Luego, este último recibe una marca de tiempo. Una vez que los nodos llegan a un consenso, el bloque se agrega a la cadena de bloques. El bloque no solo tiene su propio hash , sino que también contiene el hash del anterior , encadenando así a todos.

    Debido al efecto de avalancha, no es posible ningún intento de alteración de un bloque. En caso de que alguien intente cambiar una transacción en un bloque, también debe modificar todas las transacciones consecutivas. Una operación de este tipo requeriría tanta potencia informática y tiempo, que es prácticamente imposible .

    Eso hace que el hash sea una característica crucial en la seguridad de blockchain.

    Ahora.

    Las diferentes criptomonedas utilizan diferentes algoritmos de hash en su cadena de bloques.

    Bitcoin, por ejemplo, usa SHA-256 para su prueba de trabajo. Sin embargo, Bitcoin utiliza dos algoritmos hash para generar una dirección pública (clave): SHA-256 y RIPEMD-160. Esto fue hecho por Satoshi Nakamoto para brindar una mejor protección a las claves públicas y disminuir las probabilidades de una colisión.

    Ethereum, por otro lado, utiliza el algoritmo hash Keccak-256 , que es la base de SHA-3.

    Al momento de escribir este artículo, no ha habido un ataque exitoso a ninguno de estos algoritmos.

    Incluso si no está en el mercado de las criptomonedas, todavía utiliza las funciones de hash todos los días.

    ¿Cómo es eso?

    Funciones hash en el almacenamiento de contraseñas

    Hay cuatro técnicas principales que utilizan las empresas para almacenar nuestras contraseñas: en texto plano, con cifrado y con función hash . El último método es una combinación de dos o más de estas técnicas.

    Veamos cuáles son las diferencias.

    Almacenamiento de contraseñas en texto sin formato: un gran no-no

    Almacenar contraseñas en texto sin formato es, bueno ... exactamente lo que parece.

    Como esto:

    Nombre de usuario: John Smith

    Contraseña: johnsmith93

    La base de datos de la empresa contiene la misma información: usuario: John Smith, pase: johnsmith93.

    Esto debe evitarse si las empresas valoran la privacidad de sus clientes. (Con suerte, alguien de Facebook leerá esto).

    La desventaja de este método es obvia: si los ciberdelincuentes se infiltran en la base de datos de la empresa, pueden ver todos los nombres de usuario y contraseñas.

    Almacenamiento de contraseñas mediante cifrado

    El cifrado es una mejor forma de proteger las contraseñas. Transforma su contraseña en una secuencia ilegible de números y letras.

    Así es como funciona:

    Nombre de usuario: John Smith

    Contraseña: johnsmith93

    Cuando la empresa utiliza el cifrado para proteger su contraseña, la entrada de la base de datos se ve así:

    Nombre de usuario: John Smith

    Contraseña: I8Zdy1QBthsk2ie1HHsl + 66bf20fDDcdCtXURqa07iQ =

    Si un ciberdelincuente obtiene esta contraseña, es inútil: no puede usarla para ingresar a la cuenta. Aún así, teóricamente, se puede descifrar.

    En caso de que un actor malintencionado obtenga su contraseña cifrada, puede descifrarla utilizando varias herramientas. Aún así, lleva más tiempo y requiere mayores habilidades informáticas que simplemente obtener una contraseña de texto sin formato.

    Afortunadamente, existen algoritmos de cifrado que son lo suficientemente potentes como para ser un método seguro de proteger contraseñas.

    Almacenamiento de contraseñas mediante un algoritmo hash

    El hash y el cifrado a menudo se confunden con lo mismo y se usan indistintamente. Sin embargo, existe una diferencia crucial entre ellos.

    La función hash, como el cifrado, también transforma su contraseña en una secuencia ilegible de números y letras. La diferencia crucial es que funciona de una sola manera . A diferencia del descifrado, no puede revertir el proceso de hash.Dicho esto, si un ciberdelincuente obtiene el hash de su contraseña, generalmente no puede hacer nada con ella.

    Hay muchas funciones hash disponibles, pero usemos SHA-256 para nuestro ejemplo.

    Nombre de usuario: John Smith

    Contraseña (hash): e7c95991f28e529b4d3b37611e5f3b6a6a43600ce148af0c42d3d38c06365af5

    Ahora.

    Aunque el hash no se puede revertir a su texto original, existen grandes listas de mensajes y sus hashes. Desafortunadamente, los actores maliciosos aún pueden piratear su contraseña si obtienen su valor hash. Afortunadamente, si usa una contraseña segura, las posibilidades de que eso suceda son increíblemente pequeñas. Usaremos un ejemplo diferente en este caso.

    Ejemplos de funciones hash en el almacenamiento de contraseñas

    Digamos que su contraseña es 123456. (Nunca use esa, cree una contraseña segura en su lugar).

    Aquí está su hash si usamos el algoritmo de hash SHA-256 :

    8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

    Desafortunadamente, este hash se configura en una lista de mensajes eliminados.

    El problema con eso es aún mayor porque muchas personas usan la misma contraseña. Entonces, si una base de datos es pirateada y los ciberdelincuentes encuentran el hash de una contraseña, pueden usarla para cada usuario que use la misma contraseña. Sin mencionar que muchas personas usan la misma contraseña para diferentes cuentas, lo que las sacará de la sartén y las arrojará al fuego.

    Aún así, puede hacer varias cosas para evitar que esto suceda.

    En primer lugar, use una contraseña segura y cree diferentes contraseñas para diferentes cuentas.

    La otra cosa que puede hacer es agregar " sal " al hachís. Un hash con sal agrega valor adicional a su contraseña y produce un hash de contraseña diferente para cada entrada.

    Por ejemplo, cada usuario que use la contraseña 123456 y "sal" obtendrá un hash diferente.

    Cada ejemplo es un hash salado de 123456.

    $ 2y $ 10 $ pIxpMnhlQmt1t.EUYK1G / eHkb7Roo / XhPybKyFZSAqk / 50BW10a8.

    $ 2y $ 10 $ sCLqOpeA4R.St / 8IaUWF9.m01MM4YbY.qTwbCY3.K5z.cd5lwxL6W

    Entonces, ¿cuál es la mejor forma en que una empresa puede proteger su contraseña?

    Es una combinación de todas las técnicas mencionadas anteriormente, como lo hace Dropbox, por ejemplo.

    Fuente: Dropbox

    Así es como maneja el hash todos los días, sin siquiera darse cuenta.

    Envolver

    En resumen, el hash tiene muchos beneficios.

    Puede aplicar hash a cualquier tipo de datos, ya sea para indexar o para comprobar si hay alteraciones. Esto hace que el hash sea útil para contratos, descargas, almacenamiento de contraseñas, etc.

    Las criptomonedas también evolucionan. No solo los que tenemos ahora, sino que los nuevos jugadores se están calentando para unirse a la diversión. Incluso Facebook lanzará Libra , por lo que estamos obligados a utilizar el hash aún más.

    Tal vez Facebook allanará el camino para que otras grandes empresas lancen sus propias criptomonedas, y ¿por qué no nuevos mecanismos de hash? Sólo el tiempo dirá.

    ¡Hasta la próxima!

    Preguntas más frecuentes

    ¿Qué es un valor hash?

    Puede pensar en el valor hash como la huella digital de cualquier información: un archivo, una carpeta, un bloque de transacciones, etc. Una vez que aplica una función hash a cualquier dato, este último recibe un valor hash.

    Consiste en una cadena de caracteres de longitud fija, como esta:

    Información Valor hash
    Hola D44426ACA8AE0A69CDBC4021C64FA5AD68CA32FE
    ¿Qué es la criptografía?

    La criptografía es el método que protege los datos mediante códigos (como hash y cifrado).

    Los desarrolladores aplican la criptografía siempre que se necesita una mayor seguridad y privacidad. Transforma texto sin formato (u otros datos) en una cadena ilegible de caracteres aleatorios. Esto garantiza la seguridad de la información frente a miradas indiscretas.

    ¿Qué es una función hash?

    La función hash es la operación que transforma datos de tamaño aleatorio en una cadena de caracteres de longitud fija correspondiente, también conocida como valor hash .

    Hay dos clases de funciones hash: función hash criptográfica y no criptográfica . Este último se utiliza en criptomonedas y almacenamiento de contraseñas y proporciona una seguridad mejorada.