Funciones criptográficas hash

Funciones criptográficas hash

La criptografía moderna ofrece una amplia gama de herramientas y técnicas para proteger los datos en tránsito y en reposo. Las funciones de hash criptográfico pertenecen al tipo de protocolo criptográfico que se basa en los cifrados de bloques. Desempeñan un papel importante en la obtención de sistemas de comunicación modernos y trabajan como una barrera para los intrusos al garantizar la autenticidad de los datos. Guardar y recuperar contraseñas de forma segura y las transacciones criptográficas anónimas son algunas de las muchas aplicaciones de funciones hash.

El artículo proporciona una visión general y un uso de las funciones de hash criptográfico. Explicamos las propiedades del hash, su uso en varios dominios, posibles ataques y debilidades, y lo más importante, formas de fortalecer los hash y mejorar las funciones del hash.

¿Qué es una función hash??

Es una función unidireccional o un identificador único que, dada una entrada de longitud variable, genera un resumen hash de longitud fija. Sin embargo, la longitud de la salida depende del algoritmo de hash. En general, los algoritmos más conocidos tienen una longitud hash de 160-512 bits.

Pero para llevar los datos a una longitud fija, las funciones hash primero toman un bloque preestablecido de datos conocidos como bloques de datos. El tamaño del bloque de datos varía de un algoritmo a otro, pero siempre es el mismo para un algoritmo. Por ejemplo, la función hash SHA-1 acepta un tamaño de bloque de 512 bits, y si la entrada es del mismo tamaño, se ejecuta solo una vez, es decir, 80 rondas. Si el tamaño de entrada es 1024, el algoritmo se ejecutará dos veces.

Siendo realistas, el tamaño de entrada rara vez es un múltiplo de 512 bits. En tales casos, empleamos una técnica conocida como relleno que divide el mensaje/datos en bloques de datos de la misma longitud. De modo que la función se realiza sobre la base de un número total de bloques de datos y procesa cada bloque de datos a la vez. Toma la salida del primer bloque como entrada con el segundo bloque, y así sucesivamente. Por lo tanto, el hash final es el valor combinado de todos los valores de salida.

Hashing Vs. Encriptación

El hash y el cifrado son procesos únicos y separados con su propio conjunto de características, propiedades y procedimientos.

El cifrado es un proceso bidireccional/reversible, ya que incorpora el uso de una clave que está compartida o está relacionada matemáticamente pero las claves públicas y privadas no idénticas. A diferencia del cifrado, los hashes son fáciles de calcular y difíciles de revertir en el texto sin formato original.

Hashing proporciona integridad de los datos. El cifrado, por otro lado, hace que la confidencialidad de los datos.

El bien de los hashes

Aunque el hash no es cifrado, es una forma de criptografía que proporciona:

  • protección de contraseña
  • Integridad de datos / verificación de archivos
  • firmas digitales y
  • firmas de virus.

Protección de contraseña

Cada vez que un usuario ingresa una contraseña para la autenticación, el hash de contraseña se compara con el archivo que contiene hashs del sistema en la computadora. El sistema solo permite el acceso después de la autenticación exitosa. Por ejemplo, Windows almacena hashas de contraseña en el archivo del Administrador de cuentas de seguridad (SAM), mientras que Linux almacena hash de contraseña en el archivo /etc /shadow.

Verificación de archivos

Del mismo modo, algunos sitios web comparten un valor hash para verificar la integridad del software descargado que garantiza que no sea corrupto o alguien no manipuló el archivo durante la descarga.

Por ejemplo, el sitio web para descargar Linux Mint 20.2 La imagen ISO "Uma" -Cinnamon (64 bits) comparte su hash SHA256 en el Sha256Sum.archivo txt. Para verificar la integridad de la imagen, cd En el directorio de imágenes descargado y genere la suma SHA256 como sigue:

ubuntu@ubuntu: ~ $ sha256sum -b *.Yo asi

El sha256sum.TXT El archivo contiene cuatro hashes dependiendo de las diferentes versiones de escritorio. Compare el valor de hash generado con el hash de la imagen ISO Cinnamon Desktop en el archivo para verificar su integridad si coinciden; Eso significa que la imagen ISO está lista para usar.

Antes de SHA256, el algoritmo de hash MD5 se usó para verificar la integridad de un archivo descargado, pero ya no es un verdadero algoritmo de hash criptográfico, ya que no es resistente a la colisión (más sobre esto más adelante).

Firmas digitales

Una firma digital autentica el remitente al agregar el mensaje original con el digest de mensajes cifrados. El remitente cifra con la clave privada para garantizar la no repudio, mientras que el hash protege contra la manipulación de datos y proporciona integridad I.mi., Digital Signature = Clave privada del remitente (hash (mensaje)).

El receptor descifra el resumen del mensaje con la clave pública del remitente y toma el hash del mensaje original para compararse con el hash descifrado.

Firmas de virus

Las soluciones antivirus utilizan diversos enfoques para identificar malware; Uno de ellos es un hash coincidente. Toman una parte o bloque de un ejecutable para crear un hash y compararlo con los hashes de malware almacenados en sus bases de datos.

Propiedades de los hashes

El conjunto de propiedades que hacen que las funciones hash jueguen un papel fundamental en la criptografía de clave pública son los siguientes:

  • Un buen algoritmo de hash devuelve un valor hash de tamaño/longitud fijo independientemente del tamaño de entrada.
  • Ofrece resistencia previa a la imagen, lo que significa que es imposible recuperar el valor original al invertir el hash.
  • Un algoritmo de hash fuerte asegura la resistencia a la colisión. Es decir, no hay dos entradas diferentes pueden tener una salida similar.
  • Un cambio menor en la entrada genera cambios significativos en la salida. Esta propiedad de Hashes ayuda a garantizar la integridad de archivos/datos.
  • La velocidad computacional de las funciones de hash criptográfico es otra propiedad ideal. Sin embargo, es subjetivo y varía sobre la base del propósito y el área de aplicación.

Modos de hashes

Las funciones hash más conocidas son el algoritmo de mensaje de mensaje (MDA), el algoritmo de hash seguro (SHA), NTLM, etc.

  • MD5: MD5 es la quinta versión de los algoritmos de mensaje de mensaje que tiene una longitud de salida de 128 bits. Fue el algoritmo de hashing más conocido hasta que se volvió propenso a los ataques de colisión (más sobre esto más tarde). Por ejemplo, antes de asegurar los algoritmos de hash (SHA), el algoritmo de hashing MD5 era el método más utilizado para la verificación de integridad de archivos.
  • Sha: El algoritmo de hash seguro fue introducido por NSA. Es un conjunto de algoritmos que contienen cuatro funciones variantes SHA-224, SHA-256, SHA-384 y SHA-512. Cada nombre de variante representa el tamaño de su salida. Es un algoritmo de hash más seguro, ya que hasta ahora no se conoce ningún compromiso de los algoritmos de hash.
  • NTLM: El algoritmo hash de NT LAN Manager se utiliza para hash contraseñas. NTLM utiliza verificaciones de redundancia cíclica y digestiones de mensajes, pero su único inconveniente es que se basa en el cifrado RC4, que en contraste con los nuevos protocolos criptográficos, AES y SHA-256 han sido un ataque exitoso de un ataque exitoso. NTLMV2 resuelve estos problemas utilizando el sistema HMAC-MD5 de 128 bits.

Lo malo de los hashes

Como se discutió anteriormente, los hash de tamaño de bloque grande pueden ralentizar a los atacantes, y la ingeniería inversa de un hash criptográfico podría ser difícil, pero no es imposible. Todos los atacantes requieren es un momento en el que puedan manejarse fácilmente utilizando hardware rápido y creando colisiones o ataques de canales laterales. La sección discute algunas de las formas de explotación hash.

Colisión
La colisión en hashing ocurre cuando dos entradas devuelven el mismo valor de salida. Las funciones de hash confiables están diseñadas para proporcionar resistencia a la colisión. Pero es inevitable debido a un efecto de paloma. Según el efecto de paloma, hay un número establecido de valores de salida contra la entrada de cualquier tamaño. Eso significa que, dado que siempre habrá más entradas que la salida, la colisión es un evento inevitable.

Mesas de arcoiris
Como se mencionó anteriormente, los sistemas operativos no almacenan contraseñas en texto sin formato. Por lo tanto, las tablas de arco iris son bases de datos precomputadas o tablas de búsqueda que asignan a los hashes a la contraseña de texto sin formato. El sitio web de CrackStation, por ejemplo, proporciona una base de datos masiva para descifrar las contraseñas sin sales. Sin embargo, las tablas de arco iris intercambian el tiempo para descifrar los hash con una gran cantidad de espacio de almacenamiento.

La ventaja de las tablas de arco iris contra el forzamiento bruto es una operación simple de búsqueda y comparación en contraste con los intentos automatizados de prueba y error con un problema de computación hash. Además, no requiere una coincidencia de contraseña exacta, lo que significa que si el hash coincide con cualquier contraseña/frase, el sistema permite la autenticación.

John the Ripper
John es una herramienta poderosa y versátil que ayuda a descifrar los hashes. Es similar a un ataque de diccionario automatizado que utiliza una lista de palabras o un diccionario para calcular el hash y comparar. Por lo tanto, permite la fuerza bruta en una variedad de modos hash. Un ejemplo de la lista de palabras es un rockyou.archivo txt que contiene contraseñas de una violación en el rockyou.sitio web. La lista de palabras está disponible en las listas de Github Under /Contraseñas/Databases filtrados.

La forma más sencilla de descifrar el hash es usar el John comando con la opción de formato para especificar el tipo hash, ruta a la lista de palabras y el archivo con el valor hash. En Kali Linux, el camino hacia el rouckyou.El archivo txt es /usr/share/listas de palabras.

ubuntu@ubuntu: ~ $ John - -format = --wordList =/usr/share/wordlists/rockyou.Txt hash.TXT

Pasar el hash
Pass-the-Hash es un robo de credenciales que tiene el potencial de la escalada de privilegios horizontales. Aunque el ataque puede ocurrir en los sistemas Linux/Unix, es más frecuente en Windows. Windows autentica a un usuario legítimo al hacer coincidir el hash de la contraseña ingresada, que es estática y eso solo cambia cuando cambia la contraseña. Además, las contraseñas están disponibles en varias ubicaciones en Windows, como SAM y la memoria de proceso del subsistema de la Autoridad de Seguridad Local (LSASS), etc.

Por lo tanto, los atacantes manipulan el modelo de desafío y respuesta del protocolo de seguridad NTLM que les permite autenticarse como usuarios válidos. El atacante descarta los hash de un sistema objetivo y utiliza la herramienta 'Pass-the-Hash' para hacerse pasar por un usuario auténtico. Por lo tanto, el atacante no necesita ingresar o la fuerza bruta en la contraseña o el ingeniería inversa del valor hash. Encuentra más detalles sobre el ataque desde aquí.

Ataque de cumpleaños
El ataque pertenece a la clase de ataque de fuerza bruta y se basa en una paradoja de cumpleaños en la teoría de la probabilidad. Utiliza el problema de cumpleaños para enviar dos mensajes diferentes con el mismo protocolo de hash criptográfico para causar una colisión. El ataque generalmente tiene como objetivo manipular la comunicación. Más detalles sobre el ataque de cumpleaños están disponibles aquí.

Aventan los hashes

Hay varias formas de proteger contra los ataques contra los hashes y limitarlos contra las funciones de hash criptográfico.

Hashes sales
La salación es el proceso de agregar datos (sal) generados aleatoriamente a la entrada de una función hash. El proceso ayuda a proteger contra los ataques de mesa del arco iris. Los usuarios pueden incluir el valor de sal al comienzo o al final de la contraseña antes de crear un hash que genera diferentes salidas incluso si las contraseñas son similares. Además, un usuario puede mantener la sal pública.

Hashes con llave
HMAC es un ejemplo de hashes clave que utiliza claves criptográficas y funciones hash para mejorar las limitaciones del algoritmo del código de autenticación de mensajes (MAC). Ayuda a lograr la confidencialidad e integridad de la información al mismo tiempo.

Función de hash adaptativa
Las funciones de hash adaptativas están diseñadas para reiterar su trabajo interno, como su nombre sugiere que el usuario puede ajustar el número de iteraciones. El estiramiento de la tecla es una técnica que toma una clave débil como entrada, la procesa e itera el proceso para generar una potente tecla de gran tamaño. El proceso puede aumentar el tamaño clave de hasta 128 bits, lo cual es difícil para el ataque de fuerza bruta. Pbkdf2 y bcrypt son ejemplos de funciones hash adaptativas.

Conclusión

El artículo proporciona una amplia descripción de los protocolos de hash criptográfico. Demuestra cómo verificar la integridad de los archivos y ofrece una visión general de cómo es posible descifrar los hash de contraseña a través de la herramienta John the Ripper. También discutimos una variedad de ataques y medidas para generar hashes inquebrantables a través de sales, hashes con clave y funciones hash adaptativas.