15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
14.10.2024

Cómo Determinar la Fortaleza de una Contraseña: Guía Técnica sobre Entropía, Resistencia al Cracking y Gestión Segura de Credenciales

La fortaleza de una contraseña es una medida cuantitativa de su resistencia al descubrimiento no autorizado mediante ataques de fuerza bruta, ataques de diccionario, relleno de credenciales y adivinación estadística. Está determinada por tres variables compuestas: longitud, diversidad del espacio de caracteres e imprevisibilidad (entropía). Una contraseña que supera los 60 bits de entropía de Shannon y contiene al menos 16 caracteres extraídos de un conjunto de caracteres mixto se considera criptográficamente fuerte según los estándares actuales NIST SP 800-63B.

Comprender la fortaleza de una contraseña no consiste simplemente en seguir una lista de verificación — requiere comprender la relación matemática entre los grupos de caracteres, la longitud de la contraseña y el costo computacional impuesto a un atacante. Esta guía cubre esa relación en términos técnicos precisos, explica cómo los ingenieros de seguridad profesionales evalúan las credenciales y proporciona prácticas aplicables tanto para usuarios individuales como para administradores de sistemas que gestionan políticas de autenticación en servidores e infraestructura de alojamiento.

Qué mide realmente la fortaleza de una contraseña

La fortaleza de una contraseña es un indicador del costo de ataque — específicamente, el número de intentos que un adversario debe realizar antes de encontrar la credencial correcta. Este costo se expresa en bits de entropía mediante la fórmula:

H = L × log₂(N)

Donde H es la entropía en bits, L es la longitud de la contraseña en caracteres y N es el tamaño del grupo de caracteres (el número de símbolos distintos que el atacante debe considerar).

Un valor de entropía más alto significa exponencialmente más trabajo de adivinación. La diferencia entre 40 bits y 80 bits no es el doble de dificultad — es 2^40 veces más difícil, lo que se traduce en aproximadamente un billón de intentos adicionales.

El grupo de caracteres y su impacto en la entropía

Conjunto de caracteresTamaño del grupo (N)Entropía por carácter
Solo minúsculas (a–z)264,70 bits
Minúsculas + mayúsculas525,70 bits
Alfanumérico (a–z, A–Z, 0–9)625,95 bits
ASCII imprimible completo (con símbolos)956,57 bits
Frase de contraseña Diceware (lista grande EFF)7.776 palabras12,92 bits por palabra

Esta tabla ilustra por qué agregar incluso un símbolo a una contraseña puramente alfabética produce una ganancia de entropía medible, y por qué una frase de contraseña Diceware de cuatro palabras puede superar a una contraseña compleja pero corta.

Factores clave que determinan la fortaleza de una contraseña

Longitud de la contraseña

La longitud es la variable de mayor impacto en la fórmula de entropía. Duplicar la longitud de una contraseña eleva al cuadrado el espacio de búsqueda para un grupo de caracteres fijo. Considere el contraste:

  • Una contraseña de 8 caracteres usando ASCII imprimible completo: H = 8 × 6.57 = ~52.6 bits
  • Una contraseña de 16 caracteres usando el mismo conjunto de caracteres: H = 16 × 6.57 = ~105 bits

Con 52,6 bits, los equipos de descifrado acelerados por GPU modernos que ejecutan Hashcat en hashes MD5 pueden agotar el espacio en horas. Con 105 bits, el mismo hardware requeriría escalas de tiempo geológicas. NIST SP 800-63B recomienda un mínimo de 8 caracteres para contraseñas elegidas por el usuario, pero los administradores conscientes de la seguridad deben aplicar un mínimo de 12–16 caracteres, sin límite superior artificial.

Variedad de caracteres y complejidad

Mezclar clases de caracteres expande N y por lo tanto aumenta la entropía por carácter. Una contraseña fuerte debe incluir:

  • Letras mayúsculas (A–Z)
  • Letras minúsculas (a–z)
  • Dígitos (0–9)
  • Caracteres especiales (!, @, #, $, %, ^, &, *, etc.)

Sin embargo, un matiz crítico que muchas guías omiten: las reglas de complejidad obligatorias pueden paradójicamente debilitar las contraseñas. Cuando se obliga a los usuarios a incluir un símbolo, predeciblemente añaden ! o 1 al final de una palabra. Este patrón es bien conocido por los crackers y está codificado en los conjuntos de reglas utilizados por herramientas como Hashcat. La verdadera complejidad proviene de la aleatoriedad, no de satisfacer una casilla de verificación.

Imprevisibilidad y resistencia a ataques de patrones

El descifrado moderno de contraseñas no es puramente de fuerza bruta. Herramientas como Hashcat y John the Ripper utilizan ataques basados en reglas que aplican transformaciones a palabras del diccionario — poniendo en mayúscula la primera letra, sustituyendo a por @, añadiendo años, etc. Una contraseña como P@ssw0rd!23 parece compleja pero se descifra trivialmente porque sigue un patrón de sustitución bien conocido.

La verdadera imprevisibilidad significa:

  • Sin palabras del diccionario, incluso con sustituciones leetspeak
  • Sin recorridos de teclado (qwerty, zxcvbn)
  • Sin información personal (nombres, fechas de nacimiento, nombres de mascotas)
  • Sin patrones predecibles al inicio o al final (sufijo !, prefijo 1)

La fuente más confiable de imprevisibilidad es un generador de números aleatorios criptográficamente seguro (CSPRNG), que es lo que utilizan internamente los gestores de contraseñas de buena reputación.

Unicidad entre cuentas

La reutilización de credenciales transforma una sola brecha en un compromiso sistémico. Cuando un servicio que almacena contraseñas en texto plano o con MD5 débil es vulnerado, los atacantes inmediatamente prueban esas credenciales contra otros objetivos de alto valor — una técnica llamada relleno de credenciales. Los servicios como Gmail, portales bancarios y paneles de control de alojamiento son objetivos principales.

Cada cuenta debe tener una contraseña distinta. Esto es operativamente imposible sin un gestor de contraseñas para la mayoría de los usuarios que gestionan más de un puñado de cuentas.

Métodos para evaluar la fortaleza de una contraseña

Cálculo de entropía

La fórmula de entropía H = L × log₂(N) es la medida más objetiva. Aquí hay valores de referencia para una evaluación práctica:

Ejemplo de contraseñaLongitudGrupo de caracteresEntropía (bits)Resistencia
`password`826~37,6Insignificante
`P@ssw0rd`895~52,6Horas (GPU)
`Tr0ub4dor&3`1195~72,3Meses
`correct-horse-battery-staple`2826+1~130+Siglos
16 caracteres ASCII aleatorios completos1695~105Astronómica

Tenga en cuenta que correct-horse-battery-staple — la famosa frase de contraseña XKCD — logra una entropía extraordinaria a través de la longitud a pesar de usar solo letras minúsculas y guiones. Este es el poder de la longitud sobre la complejidad.

Herramientas de descifrado de contraseñas utilizadas por profesionales de seguridad

Los ingenieros de seguridad y los evaluadores de penetración utilizan las siguientes herramientas para probar empíricamente las políticas de contraseñas:

Hashcat es la herramienta de recuperación de contraseñas acelerada por GPU estándar de la industria. Admite más de 300 tipos de hash y puede ejecutar ataques de diccionario, fuerza bruta, basados en reglas e híbridos. En una RTX 4090 moderna, Hashcat puede probar aproximadamente 164 mil millones de hashes MD5 por segundo — contexto que hace que los números de entropía anteriores sean visceralmente reales.

John the Ripper es un descifrador basado en CPU con sólidas capacidades de ataque basado en reglas y amplia compatibilidad con formatos de hash. Se utiliza comúnmente en contextos forenses y de auditoría.

zxcvbn es un estimador de fortaleza de contraseñas del lado del cliente desarrollado por Dropbox. A diferencia de los simples calculadores de entropía, modela el comportamiento realista del atacante verificando contra diccionarios, patrones comunes, secuencias de teclado y formatos de fecha. Es el medidor de fortaleza más preciso para aplicaciones orientadas al usuario.

Para probar un hash de contraseña sin conexión usando Hashcat en modo de referencia:

hashcat -b -m 0

Para ejecutar un ataque de diccionario con reglas contra un archivo de hash MD5:

hashcat -a 0 -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule

Herramientas de prueba de contraseñas en línea

Varias herramientas basadas en navegador proporcionan una evaluación rápida de la fortaleza:

  • Have I Been Pwned (HIBP) Password Check — verifica el prefijo SHA-1 de una contraseña contra una base de datos de más de 800 millones de contraseñas comprometidas usando un modelo de k-anonimato, lo que significa que la contraseña completa nunca se transmite.
  • Bitwarden Password Strength Tester — utiliza zxcvbn internamente para una estimación realista del tiempo de descifrado.
  • Kaspersky Password Checker — proporciona análisis de longitud, complejidad y patrones.

Advertencia operativa crítica: Nunca ingrese una contraseña real en uso en ninguna herramienta en línea. Use una credencial de prueba estructuralmente similar pero distinta. Incluso las herramientas que usan modelos de k-anonimato no deben recibir sus contraseñas de producción reales.

Medidores de fortaleza de contraseñas en aplicaciones

Los medidores de fortaleza integrados varían significativamente en calidad. Muchos utilizan heurísticas simplistas (umbrales de longitud, presencia de clase de caracteres) que pueden ser manipuladas. Un medidor que califica P@ssw0rd1! como "Fuerte" es engañoso — esa cadena aparece en todos los principales diccionarios de brechas. Prefiera aplicaciones que integren zxcvbn o estimadores equivalentes con reconocimiento de patrones.

Vectores de ataque a contraseñas: contra qué se defiende realmente

Comprender el modelo de amenaza perfecciona cada decisión sobre la política de contraseñas.

Los ataques de fuerza bruta prueban sistemáticamente cada combinación posible dentro de un espacio de caracteres. Están limitados computacionalmente y se vuelven impracticables por encima de ~80 bits de entropía con el hardware actual.

Los ataques de diccionario utilizan listas de palabras derivadas de contraseñas reales filtradas en brechas. El conjunto de datos RockYou (14 millones de contraseñas) y sus sucesores cubren la gran mayoría de las contraseñas elegidas por humanos. Si su contraseña aparece en lenguaje natural, está en un diccionario.

Los ataques basados en reglas aplican reglas de transformación a palabras del diccionario — capitalización, adición de números, sustitución de símbolos. Estos descifran la mayoría de las contraseñas "complejas" que los usuarios construyen modificando palabras simples.

El relleno de credenciales utiliza pares de nombre de usuario/contraseña de una brecha para atacar otros servicios. Esto se derrota completamente mediante la unicidad de contraseñas.

Los ataques de tabla arcoíris utilizan asignaciones precomputadas de hash a texto plano. Estos se derrotan mediante el hash adecuado de contraseñas con una sal única (bcrypt, Argon2, scrypt) en el lado del servidor — una responsabilidad de la aplicación, no del usuario.

La ingeniería social y el phishing eluden completamente la fortaleza de la contraseña. La autenticación multifactor es la principal defensa aquí.

Mejores prácticas para crear y gestionar contraseñas seguras

Use un gestor de contraseñas

Un gestor de contraseñas es la mejora de seguridad de mayor impacto disponible para la mayoría de los usuarios y administradores. Herramientas como Bitwarden (código abierto, auditado), 1Password y KeePassXC (sin conexión, almacenamiento local) generan contraseñas aleatorias criptográficamente y las almacenan en una bóveda cifrada. Esto elimina la carga cognitiva de la memorización y hace que las contraseñas aleatorias únicas de más de 20 caracteres sean prácticas para cada cuenta.

Para los administradores de sistemas que gestionan credenciales en servidores — incluidos los entornos de Alojamiento VPS y Servidores Dedicados — un gestor de contraseñas orientado a equipos con control de acceso basado en roles (como Bitwarden Teams o HashiCorp Vault) es infraestructura esencial.

Genere contraseñas con un CSPRNG

Nunca construya contraseñas manualmente. Use el generador de su gestor de contraseñas, o en Linux/macOS:

# Generate a 20-character random password using /dev/urandom
LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^&*()-_=+' < /dev/urandom | head -c 20; echo
# Generate a Diceware-style passphrase using OpenSSL
openssl rand -base64 32

Implemente la autenticación multifactor (MFA)

MFA es una capa innegociable para cualquier cuenta con valor significativo. Incluso una contraseña comprometida no puede otorgar acceso sin el segundo factor. Prefiera aplicaciones de autenticación TOTP (Authy, Google Authenticator, Aegis) sobre la 2FA basada en SMS, que es vulnerable a ataques de intercambio de SIM. Para entornos de mayor seguridad, use llaves de seguridad de hardware (YubiKey, FIDO2) que son resistentes al phishing por diseño.

En servidores que ejecutan aplicaciones web o paneles de control — incluidos los entornos gestionados a través de Paneles de Control VPS — aplique MFA en la capa de aplicación y considere la autenticación basada en claves SSH como reemplazo del inicio de sesión SSH basado en contraseña por completo.

Aplique políticas de contraseñas seguras a nivel del sistema

Para los administradores que gestionan servidores Linux, PAM (Módulos de Autenticación Conectables) proporciona una aplicación granular de políticas de contraseñas. Instale y configure libpam-pwquality:

apt install libpam-pwquality

Luego edite /etc/security/pwquality.conf:

minlen = 16
minclass = 3
maxrepeat = 2
gecoscheck = 1
dictcheck = 1

Esto aplica una longitud mínima de 16 caracteres, requiere caracteres de al menos 3 clases, prohíbe más de 2 caracteres idénticos consecutivos y verifica contra palabras del diccionario y el campo GECOS del usuario (nombre).

Para la política de antigüedad de contraseñas, edite /etc/login.defs:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   14

Monitoree las brechas de credenciales

Integre el monitoreo de brechas en sus operaciones de seguridad. Have I Been Pwned ofrece una API gratuita para verificar direcciones de correo electrónico contra bases de datos de brechas conocidas. Para uso organizacional, servicios como SpyCloud o Enzoic proporcionan monitoreo de credenciales en tiempo real y pueden activar restablecimientos de contraseña forzados cuando las credenciales de un empleado aparecen en un conjunto de datos de brechas.

Hash seguro de contraseñas en el lado del servidor

Si opera aplicaciones web que almacenan credenciales de usuario — ya sea en Alojamiento Web Compartido o en un entorno dedicado — nunca almacene contraseñas en texto plano o con algoritmos de hash débiles (MD5, SHA-1, SHA-256 sin sal). Use una función de hash de contraseñas diseñada específicamente para este propósito:

  • Argon2id — ganador de la Competencia de Hash de Contraseñas; recomendado por OWASP para nuevas aplicaciones
  • bcrypt — ampliamente compatible, probado en batalla; use un factor de trabajo de 12 o superior
  • scrypt — con uso intensivo de memoria; buena resistencia a ataques basados en GPU

Ejemplo usando la biblioteca argon2-cffi de Python:

from argon2 import PasswordHasher

ph = PasswordHasher(time_cost=2, memory_cost=65536, parallelism=2)
hash = ph.hash("user_supplied_password")
# Verify:
ph.verify(hash, "user_supplied_password")

Frases de contraseña como alternativa práctica

Para contraseñas que deben memorizarse (contraseña maestra del gestor de contraseñas, clave de cifrado de disco completo), una frase de contraseña Diceware ofrece el mejor equilibrio entre entropía y memorabilidad. Lance un dado físico cinco veces para seleccionar cada palabra de la Lista de Palabras Grande de EFF. Cinco palabras producen aproximadamente 64,6 bits de entropía; seis palabras producen 77,5 bits.

Example: "clam-unmasked-revival-stunt-dagger"
Entropy: ~64.6 bits (5 words × 12.92 bits)

Esto es más fuerte que la mayoría de las contraseñas "complejas" elegidas por el usuario y mucho más memorable.

Protección de credenciales en toda su infraestructura de alojamiento

La seguridad de las contraseñas se extiende más allá de las cuentas individuales a toda la pila de infraestructura. Los administradores que gestionan entornos de alojamiento deben aplicar controles de credenciales en capas:

  • Acceso SSH: Deshabilite la autenticación por contraseña por completo; use pares de claves Ed25519 o RSA-4096. Almacene las claves privadas con una frase de contraseña segura.
  • Credenciales de base de datos: Use contraseñas largas generadas aleatoriamente para los usuarios de la base de datos. Nunca use cuentas de base de datos root para conexiones de aplicaciones.
  • Cuentas del panel de control: Aplique contraseñas seguras y MFA para todos los inicios de sesión del panel de control. Las plataformas accesibles a través de VPS con cPanel deben tener la aplicación de fortaleza de contraseñas de cPanel establecida en una puntuación mínima de 65.
  • Cuentas de correo electrónico: Las contraseñas de correo electrónico débiles son un vector de ataque principal para la toma de control de cuentas. Si gestiona Alojamiento de Correo Electrónico, aplique políticas de contraseñas seguras a nivel del servidor de correo y habilite DMARC, DKIM y SPF para reducir la exposición al phishing.
  • Claves privadas SSL/TLS: Proteja las claves privadas asociadas con Certificados SSL con permisos del sistema de archivos (chmod 600) y, cuando sea posible, almacénelas en un módulo de seguridad de hardware (HSM) o gestor de secretos.

Fortaleza de contraseña vs. política de contraseñas: una comparación

DimensiónResponsabilidad del usuarioResponsabilidad del administrador
Generación de contraseñasUsar un gestor basado en CSPRNGAplicar requisitos mínimos de entropía
AlmacenamientoBóveda cifrada (gestor de contraseñas)Argon2id/bcrypt con sales únicas
Prevención de reutilizaciónContraseña única por cuentaAplicar mediante el parámetro PAM `remember`
Detección de brechasMonitorear HIBPIntegrar la API de brechas en el flujo de autenticación
MFAHabilitar en todas las cuentasAplicar a nivel de aplicación/servidor
RotaciónCambiar ante sospecha de compromisoEstablecer vencimiento basado en política (90–180 días)
Acceso SSHUsar pares de clavesDeshabilitar `PasswordAuthentication yes` en `sshd_config`

Matriz de decisión y conclusiones técnicas clave

Use esta lista de verificación para evaluar y fortalecer su postura actual de contraseñas:

  • Objetivo de entropía: Apunte a un mínimo de 80 bits para cuentas generales; 100+ bits para acceso privilegiado (root del servidor, contraseña maestra del gestor de contraseñas, claves de cifrado).
  • Longitud mínima: Nunca acepte contraseñas de menos de 12 caracteres en ningún sistema que controle; prefiera 16–20 para cuentas de usuario, 32+ para cuentas de servicio y claves API.
  • Grupo de caracteres: Use ASCII imprimible completo para contraseñas generadas aleatoriamente; use Diceware para frases de contraseña memorizadas.
  • Unicidad: Tolerancia cero para la reutilización de credenciales. Implemente un gestor de contraseñas para hacer esto operativamente factible.
  • Algoritmo de hash: Argon2id es el estándar de oro actual para el almacenamiento de contraseñas en el lado del servidor. Migre desde bcrypt solo si Argon2id está disponible en su pila.
  • Capa MFA: TOTP como mínimo; FIDO2/WebAuthn para cuentas privilegiadas y administrativas.
  • Fortalecimiento SSH: Deshabilite el inicio de sesión SSH basado en contraseña en todos los servidores. Use PasswordAuthentication no en /etc/ssh/sshd_config.
  • Monitoreo de brechas: Suscríbase a las notificaciones de HIBP para todos los dominios de correo electrónico organizacionales.
  • Cadencia de auditoría: Ejecute auditorías de contraseñas contra su propia base de datos de hash usando Hashcat trimestralmente para identificar credenciales débiles antes que los atacantes.
  • Aplicación de políticas: Use PAM pwquality en sistemas Linux; aplique controles equivalentes en Windows mediante Directiva de grupo (Directivas de contraseña específicas).

Preguntas frecuentes

¿Cuál es la longitud mínima de contraseña recomendada por NIST en 2024?

NIST SP 800-63B establece el mínimo absoluto en 8 caracteres para contraseñas elegidas por el usuario, pero recomienda explícitamente que los verificadores permitan contraseñas de hasta al menos 64 caracteres. Los profesionales de seguridad deben aplicar un mínimo práctico de 12–16 caracteres y fomentar frases de contraseña de más de 20 caracteres para cuentas sensibles.

¿Es una contraseña de 12 caracteres con símbolos más fuerte que una frase de contraseña de 20 caracteres en minúsculas?

No necesariamente. Una frase de contraseña de 20 caracteres en minúsculas generada aleatoriamente tiene aproximadamente 94 bits de entropía (20 × 4,70), mientras que una contraseña ASCII mixta de 12 caracteres tiene aproximadamente 78,8 bits (12 × 6,57). La frase de contraseña más larga gana en entropía a pesar de usar un grupo de caracteres más pequeño — la longitud se compone más rápido que la diversidad de caracteres.

¿Cuál es la diferencia entre un ataque de diccionario y un ataque de fuerza bruta?

Un ataque de fuerza bruta prueba cada combinación de caracteres posible dentro de un espacio definido — es exhaustivo pero computacionalmente limitado. Un ataque de diccionario usa una lista de palabras curada de contraseñas reales, palabras comunes y patrones conocidos. Los ataques de diccionario descifran la gran mayoría de las contraseñas elegidas por humanos en segundos; la fuerza bruta se reserva para contraseñas cortas donde el espacio de búsqueda completo es tratable.

¿Debo cambiar mis contraseñas regularmente incluso si no hay una brecha?

La guía actual de NIST (SP 800-63B) recomienda explícitamente en contra de la rotación periódica obligatoria de contraseñas sin evidencia de compromiso, porque la rotación forzada lleva a los usuarios a realizar cambios predecibles e incrementales (por ejemplo, de Password1 a Password2). Cambie las contraseñas inmediatamente ante una brecha confirmada o sospechada, y rote las credenciales de cuentas de servicio en un calendario definido (90–180 días) como práctica de gestión de riesgos.

¿Cómo puedo verificar si mi contraseña ya ha sido expuesta en una brecha de datos sin enviarla a un servidor de terceros?

Use la API de Pwned Passwords de Have I Been Pwned con su implementación de k-anonimato. Su cliente calcula el hash SHA-1 de la contraseña, envía solo los primeros 5 caracteres de ese hash a la API y recibe de vuelta todos los sufijos de hash coincidentes. El hash completo — y por lo tanto la contraseña — nunca abandona su máquina. Esto se puede automatizar directamente:

PASSWORD="YourTestPassword"
HASH=$(echo -n "$PASSWORD" | sha1sum | awk '{print toupper($1)}')
PREFIX="${HASH:0:5}"
SUFFIX="${HASH:5}"
curl -s "https://api.pwnedpasswords.com/range/$PREFIX" | grep "$SUFFIX"

Si el comando devuelve un resultado, la contraseña ha sido vista en una brecha y no debe usarse.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar