Autenticación y Seguridad
En este blog abordaremos conceptos fundamentales de autenticación y seguridad. Exploraremos qué es el password hashing, el salting, el algoritmo bcrypt, y el conjunto de estándares conocido como JOSE (JSON Object Signing and Encryption).
¿Qué es Password Hashing y Salting?
Cuando almacenamos contraseñas en una base de datos, no deben guardarse en texto plano, ya que, si la base de datos es comprometida, el atacante tendría acceso directo a todas las contraseñas.
Para protegerlas se utilizan dos técnicas esenciales:
Password Hashing
El hashing es el proceso de aplicar una función matemática que convierte la contraseña en una cadena irreversible de caracteres (un hash).
Ejemplo:
- Contraseña:
Contraseña123 - Hash (SHA-256):
f9b4d7b76c3b3650a29ec1e8377e6732459ba12f3d8df5cde0d50de2c14e5e24
Características:
- No se puede revertir para obtener la contraseña original.
- Al iniciar sesión, se hace hashing de la contraseña ingresada y se compara con el hash almacenado.
Password Salting
Un salt es una cadena aleatoria que se añade a la contraseña antes de aplicar el hash. Esto garantiza que dos usuarios con la misma contraseña no tengan el mismo hash.
¿Por qué es importante?
- Protege contra ataques con rainbow tables (tablas precalculadas de hashes).
- Aumenta la entropía del hash.
Ejemplo:
- Contraseña:
Contraseña123 - Salt aleatorio:
Xy7z!2 - Entrada real al hash:
Contraseña123Xy7z!2 - Resultado:
Un hash único.
¿Qué es bcrypt?
Bcrypt es un algoritmo de hashing diseñado específicamente para proteger contraseñas de manera segura.
Ventajas clave:
- Genera y aplica un salt automáticamente.
- Permite ajustar el nivel de seguridad mediante el cost factor (ej. 10, 12, 14).
- Su lentitud intencional dificulta ataques de fuerza bruta.
La salida del hash incluye:
- El algoritmo usado.
- El cost factor.
- El salt.
- El hash resultante.
¿Qué es JOSE (JSON Object Signing and Encryption)?
JOSE es un conjunto de estándares que permiten firmar, cifrar y proteger datos en formato JSON, asegurando su integridad, autenticidad y confidencialidad.
Componentes clave:
- JWS: Firmas digitales (JSON Web Signature).
- JWE: Cifrado de datos (JSON Web Encryption).
- JWK: Claves criptográficas (JSON Web Key).
- JWA: Algoritmos estándar (JSON Web Algorithms).
Funciones principales:
- Autenticación: Verifica la identidad del emisor.
- Integridad: Detecta modificaciones no autorizadas.
- Confidencialidad: Cifra los datos para acceso exclusivo del receptor.
¿ Quieres conocer más sobre seguridad en aplicaciones web?
¡ Agenda una llamada !
¡ Contáctanos en WhatsApp


