No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Funciones de hash comunes

13/25
Recursos

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

***<u>Hash y HMAC </u>*** A grandes rasgos, las funciones hash y HMAC son herramientas criptográficas utilizadas para procesar datos, pero con objetivos distintos: **Funciones Hash:** * Toman datos de cualquier tamaño y los convierten en un valor de tamaño fijo llamado hash o valor hash. * Son funciones de "una sola dirección", lo que significa que es difícil o imposible obtener el dato original a partir del hash. * Se utilizan para: * Verificar la integridad de los datos (detectar si han sido modificados). * Almacenar contraseñas de forma segura (guardando el hash, no la contraseña original). * Crear conjuntos de datos únicos (por ejemplo, conjuntos de archivos). **HMAC (Hash Message Authentication Code):** * Combina una función hash con una clave secreta para generar un código de autenticación de mensaje (MAC). * Permite verificar la autenticidad de un mensaje, garantizando que no ha sido alterado y proviene de un remitente legítimo. * Se utiliza en: * Autenticación de mensajes en aplicaciones web y APIs. * Protección contra ataques de falsificación de identidad. * Asegurar la integridad de las actualizaciones de software. **En resumen:** * Las funciones hash se enfocan en la integridad de los datos, mientras que HMAC se centra en la autenticación de mensajes. * Las funciones hash son de "una sola dirección", mientras que HMAC utiliza una clave secreta para generar un valor de autenticación. * Ambas son herramientas valiosas en criptografía, pero con propósitos distintos. **Ejemplo:** Imagina que envías un mensaje importante a un amigo. Para verificar que el mensaje te llegó sin alteraciones, puedes: 1. **Usar una función hash:** Calcular el hash del mensaje antes de enviarlo y compartirlo con tu amigo. Al recibirlo, tu amigo calcula el hash del mensaje recibido y lo compara con el hash original. Si coinciden, el mensaje no ha sido modificado. 2. **Usar HMAC:** Compartir una clave secreta con tu amigo. Antes de enviar el mensaje, calculas el HMAC del mensaje utilizando la clave secreta. Al recibirlo, tu amigo calcula el HMAC del mensaje recibido usando la misma clave secreta y lo compara con el HMAC que enviaste. Si coinciden, el mensaje no ha sido alterado ni suplantado. Espero que esta explicación aclare la diferencia entre hash y HMAC. Si tienes más preguntas, no dudes en preguntar.
Un dato curioso es que al realizar el hash, no obtenía el mismo resultado que el de la clase, así que investigando, solo encontré que al revisar el archivo de entrada, por un salto de línea que "sin querer" agregué, daba todo un resultado distinto
Las funciones de hash son algoritmos que toman una entrada de datos (de cualquier tamaño) y generan una salida (hash) de longitud fija. Estas funciones son fundamentales en criptografía, verificación de integridad de datos, autenticación y otros campos. A continuación, te presento algunas de las funciones de hash más comunes: ### 1. **MD5 (Message Digest Algorithm 5)** * **Longitud del hash**: 128 bits (16 bytes). * **Propósito**: Originalmente diseñado para verificar la integridad de archivos. * **Características**: Es rápido y produce un hash relativamente corto, pero se considera **inseguro** debido a las vulnerabilidades encontradas, como colisiones (cuando dos entradas diferentes generan el mismo hash). * **Uso actual**: Aunque ya no es seguro para la criptografía, todavía se utiliza para verificar integridad en contextos no críticos. ### 2. **SHA-1 (Secure Hash Algorithm 1)** * **Longitud del hash**: 160 bits (20 bytes). * **Propósito**: Utilizado para firmas digitales, certificación de archivos y encriptación. * **Características**: Aunque fue muy popular, es **vulnerable a ataques de colisión**, lo que lo ha hecho obsoleto para la mayoría de los usos criptográficos. * **Uso actual**: Se recomienda migrar de SHA-1 a versiones más seguras como SHA-256 o SHA-3. ### 3. **SHA-2 (Secure Hash Algorithm 2)** * **Longitudes del hash**: * SHA-224: 224 bits. * SHA-256: 256 bits. * SHA-384: 384 bits. * SHA-512: 512 bits. * **Propósito**: Actualmente uno de los estándares más utilizados en la criptografía moderna. * **Características**: Más seguro que SHA-1, sin vulnerabilidades significativas conocidas. SHA-256 y SHA-512 son los más utilizados en aplicaciones como firmas digitales, SSL/TLS, y blockchain (Bitcoin usa SHA-256). * **Uso actual**: Criptografía fuerte, especialmente en aplicaciones de seguridad crítica. ### 4. **SHA-3 (Keccak)** * **Longitudes del hash**: * SHA3-224: 224 bits. * SHA3-256: 256 bits. * SHA3-384: 384 bits. * SHA3-512: 512 bits. * **Propósito**: Seleccionado como parte del estándar SHA por NIST en 2015 como un reemplazo potencial de SHA-2. * **Características**: Utiliza un enfoque diferente (la función esponja) y está diseñado para ser resistente a una gama más amplia de ataques. * **Uso actual**: Seguridad futura y aplicaciones que requieran una alternativa a SHA-2. ### 5. **RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest)** * **Longitud del hash**: 160 bits. * **Propósito**: Diseñado como una alternativa a SHA-1 y MD5. * **Características**: Menos conocido, pero sigue siendo utilizado en algunas aplicaciones específicas. No tiene vulnerabilidades significativas conocidas hasta la fecha. * **Uso actual**: Usado en sistemas de firma digital y algunas criptomonedas. ### 6. **BLAKE2** * **Longitudes del hash**: Variable (hasta 512 bits). * **Propósito**: Diseñado para ser más rápido que SHA-2 y más seguro que MD5 y SHA-1. * **Características**: Considerado altamente seguro y eficiente. Es más rápido que SHA-256 en software y sigue ofreciendo un buen nivel de seguridad. * **Uso actual**: Usado en criptografía moderna, aplicaciones de almacenamiento de archivos y validación. ### 7. **Whirlpool** * **Longitud del hash**: 512 bits. * **Propósito**: Función de hash criptográfica diseñada para proporcionar alta seguridad. * **Características**: Se considera segura y se utiliza en ciertos sistemas criptográficos avanzados. * **Uso actual**: Aunque menos popular que SHA, sigue siendo una opción viable en algunos sistemas. ### Usos comunes de las funciones de hash: * **Integridad de datos**: Verificación de que los archivos o mensajes no han sido alterados (ej. al descargar software). * **Firmas digitales**: Utilizadas para garantizar la autenticidad de documentos y transacciones. * **Almacenamiento de contraseñas**: Las contraseñas se almacenan como hashes en lugar de texto plano. * **Blockchain y criptomonedas**: Utilizadas en procesos como la minería y las transacciones (ej. Bitcoin usa SHA-256). Cada función de hash tiene diferentes fortalezas y se usa en distintos escenarios según las necesidades de seguridad y rendimiento.
Creo que el GIF que nos compartió el profe Ernesto en los comentarios fue el siguiente por si no les funciona el link :3 https://miro.medium.com/v2/resize:fit:4800/format:webp/1\*CvGEivMLCLnEGRv1XvMnNQ.gif

Me he estado adentrando un poco más en el desarrollo seguro y si alguien puede corregirme o confirmar mi pesnamiento se lo agradeceré:

La firma de integridad en los paquetes o librerías son un digest (resumen) del código de la librería para garantizar que el código no ha sido alterado y por lo tanto sigue seguro.

Ej.

"node_modules/@cspotcode/source-map-support": {
      "version": "0.8.1",
      "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
      "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
      "dev": true,
      "dependencies": {
        "@jridgewell/trace-mapping": "0.3.9"
      },
      "engines": {
        "node": ">=12"
      }
    },