Saltar al contenido

Las contraseñas que crees que son seguras no lo son: cómo funcionan realmente los ataques de diccionario

    Las contraseñas que crees que son seguras

    no lo son: cómo funcionan realmente los ataques de diccionario

    Seguridad digital  |  unfantasmaenelsistema.com

    Hay una escena que se repite constantemente. Alguien crea una contraseña, la evalúa mentalmente y piensa: «esto es suficientemente seguro». Lleva una mayúscula, un número, quizás un símbolo. Cumple todos los requisitos que le pidieron. Y aun así, si esa contraseña cae en manos de alguien con las herramientas adecuadas, puede ser crackeada en segundos.

    El problema no es que la gente sea descuidada. El problema es que la intuición humana sobre lo que es una contraseña segura está sistemáticamente equivocada. Y las políticas de contraseñas que han existido durante décadas han empeorado las cosas, no las han mejorado.

    Este artículo explica exactamente qué ocurre cuando alguien ataca una contraseña, por qué las que parecen complejas son en realidad predecibles, y qué hace que una contraseña sea realmente difícil de romper. Sin tecnicismos innecesarios.

    ¿Qué aprenderás en este artículo?

    Por qué las contraseñas que crees que son seguras probablemente no lo son · Cómo funciona un ataque de diccionario y por qué es tan eficaz · Qué es un hash y por qué las contraseñas se almacenan así · Por qué ‘123456’ sigue siendo la contraseña más usada del mundo en 2024 · Cuánto tarda realmente en crackearse tu contraseña según su longitud · Qué hace que una contraseña sea realmente difícil de atacar · Cómo funcionan las filtraciones de bases de datos y qué hacer si te afectan · La solución práctica: gestores de contraseñas explicados sin tecnicismos

    1. El problema que nadie quiere ver

    Antes de hablar de ataques y técnicas, hay que poner sobre la mesa un dato que resume mejor que nada el estado real de la seguridad de contraseñas en internet.

    LAS 20 CONTRASEÑAS MÁS USADAS EN EL MUNDO (2024)
    Fuente: NordPass análisis de 2,5 TB de filtraciones
     
    1.  123456          (usado por 4,5 millones de personas)
    2.  123456789
    3.  12345678
    4.  password
    5.  qwerty123
    6.  qwerty1
    7.  111111
    8.  12345
    9.  secret
    10. 1234567890
    11. 1234567
    12. password1
    13. iloveyou
    14. 1q2w3e4r5t
    15. abc123
    16. admin
    17. 123123
    18. qwerty
    19. monkey
    20. dragon
     
    Tiempo para crackear '123456': menos de 1 segundo.
    Tiempo para crackear 'password': menos de 1 segundo.
    Tiempo para crackear 'iloveyou': menos de 1 segundo.
     
    El 50% de las personas en internet usa una contraseña
    de esta lista o una variación directa de ella.

    ¿Por qué sigue pasando esto después de décadas de campañas de concienciación? Porque crear y recordar contraseñas seguras es cognitivamente costoso, y los humanos somos muy buenos encontrando el camino de menor resistencia. Si el sistema te permite usar «123456», una parte significativa de los usuarios lo hará. Si te obliga a añadir un número, añadirán «1234561». La naturaleza humana no es un bug que se pueda parchear con formación.

    2. Cómo se guardan las contraseñas: los hashes

    Para entender cómo se atacan las contraseñas, primero necesitas entender cómo las almacenan los sitios web. Porque los atacantes no roban contraseñas directamente: roban huellas digitales matemáticas de esas contraseñas, llamadas hashes.

    QUÉ ES UN HASH Y CÓMO SE GUARDAN LAS CONTRASEÑAS
     
    Cuando creas una cuenta en un sitio web, tu contraseña
    NO se guarda en texto claro en la base de datos.
    (En los sitios bien hechos. Algunos sí la guardan en claro.)
     
    En cambio, se aplica una función de hash:
     
    'MiContraseña123'  →  [función SHA-256]  →
    'a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3'
     
    PROPIEDADES DEL HASH:
    ▸ Siempre produce el mismo resultado para la misma entrada
    ▸ Es irreversible: no puedes obtener la contraseña desde el hash
    ▸ Un cambio mínimo produce un hash completamente diferente:
      'MiContraseña123'  →  a665a459...
      'MiContraseña124'  →  d09bf41b...  (completamente diferente)
     
    CUANDO INICIAS SESIÓN:
    1. Escribes tu contraseña
    2. El servidor calcula el hash de lo que escribiste
    3. Compara ese hash con el que tiene guardado
    4. Si coinciden: acceso concedido
    5. La contraseña original nunca se compara directamente
     
    POR QUÉ IMPORTA:
    Si un atacante roba la base de datos, obtiene los hashes.
    No puede revertirlos directamente.
    Pero puede calcular hashes de millones de contraseñas
    y compararlos con los robados.
    A eso se le llama ataque de diccionario o fuerza bruta.

    Cuando un sitio web gestiona correctamente las contraseñas, nunca guarda «tu contraseña es Pepito123». Guarda algo como «4f7a2b…». Eso significa que ni los propios empleados del sitio pueden ver tu contraseña. Pero hay un problema: si dos personas usan la misma contraseña, tienen el mismo hash. Y ahí es donde entran los atacantes.

    3. El ataque de diccionario: eficaz, rápido y automatizado

    Un ataque de diccionario no es lo que sugiere el nombre. No se limita a probar palabras del diccionario. Las wordlists modernas contienen miles de millones de entradas: contraseñas filtradas de brechas anteriores, variaciones con sustituciones típicas, combinaciones con números y fechas, patrones de teclado como «qwerty» o «1q2w3e4r». En definitiva, todo lo que los seres humanos tienden a usar como contraseña.

    CÓMO FUNCIONA UN ATAQUE DE DICCIONARIO
     
    El atacante tiene: una lista de hashes robados de una filtración
    El atacante tiene: una wordlist (lista de contraseñas comunes)
     
    Wordlist típica:
    123456, password, qwerty, iloveyou, admin, letmein,
    football, monkey, dragon, master, sunshine, princess...
    Las mejores wordlists tienen MILES DE MILLONES de entradas.
     
    El proceso:
    PASO 1: Tomar la primera contraseña de la lista: '123456'
    PASO 2: Calcular su hash: SHA-256('123456') = 8d969eef...
    PASO 3: ¿Hay algún hash igual en la base de datos robada?
            → SÍ: contraseña encontrada: el usuario usaba '123456'
            → NO: pasar a la siguiente contraseña de la lista
    PASO 4: Repetir con 'password', 'qwerty', 'iloveyou'...
     
    VELOCIDAD REAL:
    Una tarjeta gráfica moderna (RTX 4090) puede calcular:
    ▸ 100.000 millones de hashes MD5 por segundo
    ▸ 13.000 millones de hashes SHA-256 por segundo
    ▸ 300 millones de hashes bcrypt por segundo (más lento)
     
    En la práctica: una contraseña de 8 caracteres con solo
    letras minúsculas tiene 26^8 = 208.827.064.576 combinaciones.
    Una RTX 4090 las prueba todas en menos de 2 segundos.

    Esas cifras de velocidad son reales. Una tarjeta gráfica doméstica, el tipo que cualquiera puede comprar en una tienda de informática, puede probar cientos de millones de contraseñas por segundo. Las plataformas de cracking en la nube pueden probar billones. La barrera de entrada para este tipo de ataque es asombrosamente baja.

    4. Cuánto tarda en crackearse tu contraseña

    Esta tabla usa cifras reales basadas en hardware de consumo actual. Los tiempos asumen un hash SHA-256 sin salt, que es uno de los escenarios más comunes en filtraciones de bases de datos mal protegidas.

    ContraseñaLongitudCaracteres usadosTiempo (SHA-256, RTX 4090)
    abc3Solo minúsculasInstantáneo
    password8Solo minúsculasMenos de 1 segundo
    Password19Mayús + minús + númeroMenos de 1 segundo (está en diccionarios)
    P@ssw0rd8Mayús + minús + nº + símboloMenos de 1 segundo (está en diccionarios)
    k7#mQ2xL8Mayús + minús + nº + símbolo22 minutos
    k7#mQ2xLpR10Mayús + minús + nº + símbolo4 años
    k7#mQ2xLpR9!12Mayús + minús + nº + símbolo34.000 años
    correcto caballo batería24Solo minúsculas + espaciosBillones de años

    El dato más revelador de esta tabla: «correcto caballo batería» —cuatro palabras comunes separadas por espacios— tarda billones de años en crackearse, es más fácil de recordar que «k7#mQ2xL», y sin embargo nunca la verías en una lista de «contraseñas recomendadas». La intuición colectiva sobre seguridad de contraseñas está construida sobre bases equivocadas.

    ⚠ La trampa de la ‘complejidad’: P@ssw0rd no es segura

    Durante años, las políticas de contraseñas han exigido: mayúsculas, minúsculas, números y símbolos. El resultado ha sido que la mayoría de personas usa exactamente el mismo patrón: una palabra con la primera letra en mayúscula, alguna vocal sustituida por un número (a→4, e→3, o→0, i→1) y un símbolo al final. P@ssw0rd, S3cur1ty!, Adm1n123@, Contr@seña1… estas contraseñas parecen complejas pero están en todas las wordlists modernas. Los atacantes conocen perfectamente estos patrones y los prueban primero. La complejidad sin longitud no sirve de nada. La longitud sin complejidad tampoco. Pero si tienes que elegir una sola cosa: elige longitud.

    5. La solución elegante: frases de contraseña

    El problema con las contraseñas aleatorias largas como «xK9#mP2@qL5nR8!vT» es que son imposibles de recordar. Y si no puedes recordarla, acabarás apuntándola en un post-it, reutilizándola en varios sitios o usando algo más simple. La seguridad que no es usable no es segura.

    LA SOLUCIÓN: FRASES DE CONTRASEÑA (PASSPHRASES)
     
    El cómic xkcd 936 popularizó esta idea en 2011 y sigue siendo válida.
     
    CONTRASEÑA TRADICIONAL 'COMPLEJA':
    'Tr0ub4dor&3'
    ▸ Difícil de recordar
    ▸ Fácil de crackar: 11 caracteres, patrón predecible
    ▸ Tiempo estimado: días o semanas
     
    FRASE DE CONTRASEÑA:
    'correcto caballo batería grapa'
    ▸ Fácil de recordar (son solo 4 palabras aleatorias)
    ▸ 28 caracteres en total
    ▸ Tiempo estimado: billones de años con hardware actual
     
    Por qué funciona:
    4 palabras aleatorias de un vocabulario de 2.000 palabras
    = 2.000^4 = 16 billones de combinaciones posibles
     
    Cómo elegir las palabras:
    ▸ Que sean aleatorias (no relacionadas entre sí)
    ▸ Al menos 4 palabras
    ▸ Evitar frases conocidas ('en un lugar de la mancha')
     
    Ejemplos de buenas frases de contraseña:
    'mesa nube perro catorce'
    'jueves lampara saltar oceano'
    'rojo bicicleta nueve espejo'
     
    Ninguna de estas está en un diccionario de contraseñas.

    Las frases de contraseña combinan lo mejor de ambos mundos: son largas (lo que las hace resistentes a fuerza bruta), son memorables (son palabras reales que puedes visualizar), y son impredecibles si las palabras son verdaderamente aleatorias. El estándar de la industria para generarlas es el método Diceware: tirar dados para elegir palabras de una lista, eliminando cualquier sesgo humano en la elección.

    6. Filtraciones: por qué reutilizar contraseñas es catastrófico

    Incluso con una contraseña perfecta, hay un vector de ataque que tiene nada que ver con su complejidad: las filtraciones de bases de datos. Y no es una posibilidad remota: es casi seguro que tus datos han aparecido en alguna.

    QUÉ PASA CUANDO SE FILTRA UNA BASE DE DATOS
     
    ESCENARIO REAL (ocurre miles de veces al año):
    1. Un atacante encuentra una vulnerabilidad en el sitio web
    2. Extrae la base de datos: usuarios, emails, hashes de contraseñas
    3. Publica la base de datos en foros de hackers o la vende
    4. Otros atacantes la descargan y atacan los hashes
    5. Las contraseñas crackeadas se usan en 'credential stuffing':
       probar las mismas credenciales en cientos de otros sitios
     
    EL PROBLEMA DE REUTILIZAR CONTRASEÑAS:
    Si usas la misma contraseña en 10 sitios web
    y uno de ellos es comprometido:
    → El atacante tiene acceso a los 10 sitios
    → Incluido tu email, que probablemente tiene recuperación
      de contraseña de todos los demás
    → Con tu email comprometido, puede entrar en casi todo
     
    FILTRACIONES CONOCIDAS MÁS GRANDES:
    ▸ RockYou (2009): 32 millones de contraseñas en texto claro
    ▸ Adobe (2013): 153 millones de cuentas
    ▸ Yahoo (2013-2014): 3.000 millones de cuentas
    ▸ LinkedIn (2012-2016): 164 millones de cuentas
    ▸ Facebook (2019): 533 millones de números de teléfono e IDs
    ▸ Collection #1 (2019): 773 millones de emails únicos compilados
     
    Probabilidad de que tu email esté en alguna filtración: muy alta.
    Compruébalo en: haveibeenpwned.com (gratuito, seguro)

    ⚠ Credential stuffing: el ataque que más cuentas compromete

    El credential stuffing no necesita crackear ningún hash. Funciona así: los atacantes cogen listas de credenciales filtradas (email + contraseña en texto claro) de brechas anteriores y las prueban automáticamente en otros servicios. Si alguien usaba usuario@gmail.com / MiPerro2019 en una tienda online hackeada en 2021, esa combinación se probará en Gmail, Facebook, Amazon, Netflix, tu banco y cientos de servicios más. Este tipo de ataque comprometió más de 193.000 millones de intentos de login en 2023 según Okta. Es automatizado, barato y extraordinariamente efectivo contra personas que reutilizan contraseñas.

    La magnitud del problema es difícil de visualizar. Have I Been Pwned, la base de datos pública de filtraciones creada por Troy Hunt, tiene indexadas más de 14.000 millones de cuentas comprometidas. No son 14.000 millones de personas distintas, porque mucha gente aparece en varias filtraciones. Pero la probabilidad de que tu email no aparezca en ninguna es, estadísticamente, baja. Compruébalo en haveibeenpwned.com: es gratuito, no requiere registro, y el resultado puede ser bastante sorprendente.

    7. Por qué el salting hace más difícil el trabajo del atacante

    Hay un detalle técnico que vale la pena entender porque afecta a lo que ocurre cuando una base de datos es comprometida. Se llama salting, y es la diferencia entre una brecha catastrófica y una manejable.

    POR QUÉ EL 'SALTING' CAMBIA LAS REGLAS PARA LOS ATACANTES
     
    PROBLEMA SIN SALT:
    Si 1.000 usuarios usan '123456', todos tienen el mismo hash.
    El atacante descifra el hash una sola vez y compromete 1.000 cuentas.
     
    SOLUCIÓN: SALT (sal criptográfica)
    Antes de calcular el hash, se añade un valor aleatorio único
    por usuario (el 'salt') que se guarda junto al hash:
     
    Usuario A: salt=x7k2  →  hash('123456' + 'x7k2') = 3f9a1b...
    Usuario B: salt=p9m4  →  hash('123456' + 'p9m4') = 8c2e7f...
    Usuario C: salt=r1n8  →  hash('123456' + 'r1n8') = 4a6d2c...
     
    Aunque los tres usan la misma contraseña, sus hashes son distintos.
    El atacante no puede usar tablas precalculadas (rainbow tables).
    Tiene que atacar cada hash individualmente.
     
    PARA EL USUARIO, LA LECCIÓN ES:
    Un sitio que usa salt + bcrypt/Argon2 hace que crackear
    sea muchísimo más lento. Pero si usas '123456',
    seguirá siendo la primera o segunda contraseña que prueben.
    El salt no salva contraseñas débiles. Solo ralentiza el ataque.

    Para el usuario, la lección práctica es doble: primero, que si usas una contraseña débil, ni el mejor sistema de protección del servidor te salvará. Segundo, que si un sitio te almacena la contraseña correctamente con salt y un algoritmo lento como bcrypt, una brecha en ese sitio tardará mucho más en comprometer tu cuenta, dándote tiempo a cambiar la contraseña antes de que sea crackeada. Por eso es tan importante que cambies las contraseñas cuando te notifican una brecha, incluso si el sitio dice que están «encriptadas».

    8. La solución real: gestores de contraseñas

    Si la conclusión lógica de todo lo anterior es «cada sitio web necesita una contraseña diferente, larga y aleatoria», la pregunta obvia es: ¿cómo se supone que voy a recordar eso? La respuesta es: no tienes que recordarlas. Eso lo hace el gestor de contraseñas.

    CÓMO FUNCIONA UN GESTOR DE CONTRASEÑAS
     
    CONFIGURACIÓN (una sola vez):
    1. Instalar el gestor en el móvil y en el navegador
    2. Crear una contraseña maestra: larga, memorable, ÚNICA
       Ejemplo: 'jueves lampara saltar oceano 7!'
       Esta es la ÚNICA contraseña que necesitas recordar
    3. El gestor crea un 'vault' (caja fuerte) cifrado con esa contraseña
     
    USO DIARIO:
    1. Entras en un sitio web por primera vez
    2. El gestor pregunta: '¿guardar contraseña?'
       O mejor: '¿generar contraseña aleatoria segura?'
       → Genera algo como: xK9#mP2@qL5nR8!vT
       → La guarda automáticamente
    3. La próxima vez que visites ese sitio:
       → El gestor detecta el sitio y rellena automáticamente
       → Tú nunca necesitas recordar ni escribir la contraseña
     
    RESULTADO:
    ▸ Cada sitio tiene una contraseña diferente, larga y aleatoria
    ▸ Tú solo recuerdas una contraseña maestra
    ▸ Si filtran las credenciales de un sitio: solo afecta a ese sitio
    ▸ El credential stuffing no funciona porque ninguna contraseña
      se reutiliza en ningún otro sitio
     
    ¿Y si hackean el gestor?
    El vault está cifrado con tu contraseña maestra.
    Sin esa contraseña, los datos son ilegibles.
    Bitwarden fue auditado independientemente: el cifrado es AES-256.
    GestorPrecioPlataformasPor qué recomendarlo
    BitwardenGratis / 10€ año (Premium)Windows, Mac, Linux, iOS, Android, todos los navegadoresOpen source, auditorías de seguridad independientes publicadas, sincronización en la nube, opción de autoalojamiento
    1Password~3€/mesWindows, Mac, Linux, iOS, AndroidInterfaz muy pulida, modo ‘Travel’ para cruzar fronteras, historial de contraseñas
    KeePassXCGratisWindows, Mac, Linux100% local: el archivo cifrado no va a ningún servidor. Máximo control, requiere gestionar la sincronización manualmente
    Proton PassGratis / incluido en ProtonWindows, Mac, iOS, Android, navegadoresDe los creadores de ProtonMail, integrado con el ecosistema de privacidad de Proton

    La objeción más frecuente es «¿y si hackean el gestor?». Es una pregunta legítima, y la respuesta tiene dos partes. Primera: los gestores de contraseñas bien diseñados no pueden acceder a tu vault aunque quisieran, porque está cifrado con tu contraseña maestra que ellos nunca conocen (arquitectura de conocimiento cero). Segunda: el riesgo de que hackeen el gestor es infinitamente menor que el riesgo actual de reutilizar contraseñas en decenas de sitios, algunos de los cuales guardan contraseñas en texto claro.

    9. El segundo factor: la última línea de defensa

    El segundo factor: por qué la contraseña sola no es suficiente

    Incluso con una contraseña perfecta, si alguien la obtiene (phishing, filtración, malware) puede entrar en tu cuenta. La autenticación de dos factores (2FA) añade una segunda capa: algo que sabes (la contraseña) más algo que tienes (tu teléfono). Tipos de segundo factor, de menos a más seguro: SMS (el más débil, vulnerable a SIM swapping) → App de autenticación como Google Authenticator o Authy (mucho mejor) → Llave física como YubiKey (el más seguro). Activar 2FA en tu email es lo más importante. Si tu email está protegido con 2FA, aunque alguien tenga tu contraseña no puede entrar. Y si no pueden entrar a tu email, no pueden usar ‘olvidé mi contraseña’ para acceder a todo lo demás.

    Una aclaración importante sobre el SMS como segundo factor: aunque es mejor que nada, tiene una vulnerabilidad conocida llamada SIM swapping. Un atacante convence a tu operadora de telefonía de que él es tú y consigue que transfieran tu número a una SIM que controla. A partir de ahí, recibe todos tus SMS de verificación. Ha ocurrido a personas con acceso a información valiosa: periodistas, activistas, ejecutivos. Si la seguridad de tu cuenta importa de verdad, usa una app de autenticación, no SMS.

    10. Plan de acción: qué hacer hoy

    PLAN DE ACCIÓN: QUÉ HACER HOY
     
    PASO 1 (5 minutos): Comprueba si tus datos han sido filtrados
    → Ir a haveibeenpwned.com
    → Introducir tu dirección de email
    → Ver en cuántas filtraciones aparece
    → Si aparece: cambiar esas contraseñas INMEDIATAMENTE
     
    PASO 2 (15 minutos): Instalar un gestor de contraseñas
    → Descargar Bitwarden (gratuito) en el móvil y el navegador
    → Crear una contraseña maestra con frase de contraseña
    → Activar 2FA en el propio gestor
     
    PASO 3 (en los próximos días): Migrar las contraseñas críticas
    → Empezar por las más importantes:
      1. Tu email principal
      2. Tu banco
      3. Redes sociales
      4. Amazon / tiendas online con tarjeta guardada
    → Para cada una: usar el gestor para generar una contraseña nueva
      larga y aleatoria y guardarla en el vault
     
    PASO 4: Activar 2FA donde sea posible
    → Email (Gmail, Outlook): configuración de seguridad → 2FA
    → Redes sociales: seguridad y privacidad → autenticación en dos pasos
    → Banco: suele estar activado por defecto
     
    OBJETIVO FINAL:
    Cada cuenta tiene una contraseña única, larga y aleatoria.
    Las cuentas críticas tienen 2FA activado.
    Tú solo recuerdas una contraseña maestra.

    Conclusión

    Las contraseñas son un mecanismo de seguridad diseñado en una época en que los ordenadores eran lentos, las filtraciones raras y internet pequeño. Hoy, ninguna de esas condiciones se cumple. El hardware actual hace que contraseñas que antes habrían tardado años en crackearse ahora tarden segundos.

    La buena noticia es que la solución es relativamente simple y gratuita: un gestor de contraseñas bien configurado, una contraseña maestra fuerte y 2FA en las cuentas críticas transforman radicalmente tu postura de seguridad. No elimina todos los riesgos, pero convierte a cualquier persona en un objetivo mucho más difícil de comprometer que el promedio.

    Y si hay una sola cosa que hacer después de leer este artículo: entra en haveibeenpwned.com ahora mismo y comprueba si tu email ha aparecido en alguna filtración. El resultado puede ser la motivación que necesitas para dar el siguiente paso.

    Recursos para comprobar y mejorar tu seguridad

    Have I Been Pwned (haveibeenpwned.com): comprueba si tu email aparece en filtraciones conocidas · Bitwarden (bitwarden.com): el gestor de contraseñas gratuito y open source más recomendado · Security.txt de Troy Hunt: el creador de HIBP explica en su blog los fundamentos de seguridad de contraseñas de forma muy accesible · Authy (authy.com): app de autenticación de dos factores con backup en la nube · Password Strength Checker (passwordmonster.com): comprueba cuánto tardaría en crackearse tu contraseña actual

    unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.