Ataque de Markov (probabilístico) — Operación integral

Documento de referencia del proyecto Time2Crack
Recipientes: desarrolladores, investigadores de seguridad, usuarios avanzados

Índice

  • Sinopsis
  • Antecedentes históricos y académicos
  • Fundaciones matemáticas: cadenas de Markov
  • Arquitectura de un cracktool Markov
  • Fase 1 - formación de corpus de contraseñas reales
  • Fase 2 - Generación ordenada de candidatos
  • Reducing Research Space: The Key to Effectiveness
  • Variaciones e implementaciones notables
  • Comportamiento contra diferentes tipos de contraseñas
  • Integración en Time2Crack: Modelado y Parámetros
  • Comparación con otros ataques probabilísticos
  • Límites del ataque de Markov
  • Defensas eficaces
  • Referencias

  • 1. Sinopsis

    Markov Attack es un método de craqueo de contraseña probabilística y estadística que genera candidatos con base en las frecuencias observadas de transición entre caracteres en contraseñas humanas reales. En lugar de probar todas las combinaciones posibles en orden alfabético —como lo hace la fuerza cruda— clasifica a candidatos de los más probables al menos, concentrando el esfuerzo de cálculo donde se encuentran las contraseñas humanas.

    En términos simples : un atacante que tiene suficiente GPU y un modelo Markov bien entrenado probará "letmein", "p@sssword" y "sun2024" antes de probar "aaaaaaaaab" o "xqzfkw" — porque los humanos crean contraseñas que parecen palabras, no ruido blanco. Eficiencia asegurada : Dürmuth et al. (2015) investigación sobre el RockYou corpus (14 millones de contraseñas) muestra que un modelo Markov 5 reduce el espacio de búsqueda real a 0,6% del espacio bruto para contraseñas con una estructura humana típica: una reducción del 99,4%.

    2. Antecedentes históricos y académicos

    2.1 Origen

    La aplicación de los canales de Markov a la grieta de contraseñas es anterior a las publicaciones académicas formales. Los profesionales de seguridad ofensivos utilizaron modelos similares desde los años 2000, pero la formalización rigurosa data principalmente de los años 2010.

    Cronología de los hitos : AñoEvento ----------------- 2005Nakashima " Oyama: primera aplicación formal de n-gramos a contraseñas 2009Weir et al. (IEEE S flexibleP): PCFG — competidor directo, posiciones de las probabilidades estructurales 2012Ma et al. (USENIX Security): Estudio comparativo de modelos probabilísticos sobre contraseñas de 70M 2013Durmuth: primer análisis OMEN sobre varios corpus 2015Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge: OMEN (ESORICS 2015) - importante referencia académica 2016Wheeler (zxcvbn) confirma la eficacia de los n-gramos en la estimación de la entropía real 2018OMEN+: versión mejorada con suavidad e interpolación 2019–2022Trabajo híbrido Markov + redes neuronales (PassGAN, FuzzyPSM)

    2.2 Cuerpo de referencia

    La formación del modelo Markov se basa en bases de datos de contraseña de las filtraciones de datos conocidas:

  • LinkedIn (2012) : 6,5 millones de hashs SHA-1 sin sal (incluyendo 4,4M rajados)
  • Adobe (2013) : 153 millones de identificadores (3DES hashs - cracked by frequency analysis)
  • Colección #1–5 (2019) : 2.7 milliardes de pares identificando / contraseña
  • ¿He sido Pwned (2024) : ~14 mil millones de credenciales agregadas individuales
  • Este corpus revela la distribución estadística real de contraseñas humanas, que difiere radicalmente de una distribución uniforme.


    3. Fundaciones Matemáticas: Cadenas de Markov

    3.1 Definición formal

    Markov cadena de orden k sobre un alfabeto k Anteriores caracteres:

    P(cₙ | c₁c₂...cₙ₋₁) = P(cₙ | cₙ₋ₖ...cₙ₋₁)

    Para contraseñas, generalmente incluye 95 caracteres ASCII imprimibles (26 mayúsculas + 26 mayúsculas + 10 dígitos + 33 símbolos).

    Orden 1 (bigrama) :
    P("password") = P("p") × P("a"|"p") × P("s"|"a") × P("s"|"s") × ...
    Orden 5 (opcional según Dürmuth 2015) :
    P("password") = P("p") × P("a"|"p") × P("s"|"pa") × P("s"|"pas")
                    × P("w"|"pass") × P("o"|"passw") × P("r"|"passwo")
                    × P("d"|"passwor")

    Orden 5 captura contextos como "después de "pasar", el seguimiento más probable es "o" — información inaccesible a un modelo de orden 1.

    3.2 La matriz de transición

    Para un orden de 1 sobre 95 caracteres, la matriz de transición es tamaño 95 × 95 = 9.025 entradas. Para la Orden 5, va a 955 × 95 = ~7.7 × 1010 insumos teóricos — pero la mayoría del orden n-gramas 5 nunca aparecen en los datos reales. Las implementaciones utilizan estructuras de datos huecos (tries, mapas de hash) para almacenar sólo n-gramas observados.

    3.3 Probabilidad y clasificación de registros

    Para evitar sobrecostos flotantes en contraseñas de 8+ caracteres (probabilidades del orden de 10-20), las herramientas funcionan en Log probabilities :

    log P("password") = log P("p") + log P("a"|"p") + log P("s"|"a") + ...

    Este valor es el puntuación Markov Los candidatos se generan en orden descendente de puntuación, es decir, lo más probable al menos.

    3.4 ¿Por qué la Orden 5?

    La investigación empírica (Dürmuth 2015, confirmada por Ma et al. 2012) muestra que:

  • Orden 1 : captura frecuencias de caracteres individuales (e, a, o común en minúscula), reducción ~50%
  • Orden 2 : captura bigrams comunes (pa, ss, wo, rd), reducción ~75%
  • Orden 3 : captura trigramas (no, culo, ssw), reducción ~90%
  • Orden No 4 : disminución de retornos comienza, reducción ~95 %
  • Orden 5 : Optimum empírico en RockYou, reducción ~99.4%
  • Orden 6+ : overfitting, modelo memoriza contraseñas de entrenamiento sin generalizar

  • 4. Arquitectura de un cracktool Markov

    4.1 Componentes principales

    ┌─────────────────────────────────────────────────────────────┐
    │                    OUTIL DE CRACKING MARKOV                 │
    ├─────────────────┬───────────────────┬───────────────────────┤
    │  Phase          │  Composant        │  Rôle                 │
    ├─────────────────┼───────────────────┼───────────────────────┤
    │  Entraînement   │ Corpus Parser     │ Lit les mots de passe │
    │                 │ N-gram Counter    │ Compte les transitions│
    │                 │ Probability Table │ Normalise en probas   │
    │                 │ Model Serializer  │ Sauvegarde le modèle  │
    ├─────────────────┼───────────────────┼───────────────────────┤
    │  Génération     │ Candidate Gen     │ Énumère par score     │
    │                 │ Length Controller │ Filtre par longueur   │
    │                 │ Threshold Filter  │ Coupe les improbables │
    ├─────────────────┼───────────────────┼───────────────────────┤
    │  Attaque        │ Hash Engine       │ Compare aux cibles    │
    │                 │ GPU Interface     │ Hashcat backend       │
    └─────────────────┴───────────────────┴───────────────────────┘

    4.2 Integración con Hashcat

    La aplicación más generalizada en la práctica es a través de la Modo Stdin Hashcat (G)-a 0 con un generador externo) o a través de módulos Python como statsgen (del kit de herramientas PACK):

    # Exemple d'attaque Markov pratique
    python statsgen.py rockyou.txt --output markovmodelo.stats
    python maskgen.py markovmodel.stats | hashcat -a 0 -m 1000 targethashes.txt

    Herramientas dedicadas como OMEN (Open Markov Estimator of Next passwords) genera directamente listas de candidatos ordenados.


    5. Fase 1 - Cuerpo de formación de contraseña real

    5.1. Extracción de n-gramos

    Para cada contraseña en el cuerpo, todos los n-gramos se extraen (con un marcador de inicio). ^ y fin $)

    Ejemplo con "hola" (orden 2):

    ^h, he, el, ll, lo, o$

    Ejemplo con "P@ss1!" (orden 2):

    ^P, P@, @s, ss, s1, 1!, !$

    5.2 Contabilidad y estandarización

    Para cada contexto (n-1 caracteres anteriores), las ocurrencias de cada personaje siguiente se cuentan y se normalizan:

    Contexte "pa" → {s: 847, r: 12, t: 8, l: 3, ...}
    → P(s|pa) = 847/870 = 0.973
    → P(r|pa) = 12/870 = 0.014

    Estas distribuciones revelan hábitos de lenguaje humano: después de "pa", la gente escribe masivamente "s" (password, pass, pablo...).

    Momento

    El problema de los n-gramas no observados: si "xq" nunca aparece en el corpus, P(c)xq) = 0 para cualquier c — que bloquea la generación. Las técnicas de lijado más utilizadas:

  • Add-one (Laplace) : añadir 1 a todas las cuentas
  • Buen viaje. : redistribuir la probabilidad de los n-gramas vistos una vez a aquellos nunca vistos
  • Kneser-Ney : estado del método de arte, utilizado en OMEN+
  • Smoothing también permite que el modelo genere candidatos fuera del cuerpo de formación — crucial para cubrir contraseñas ligeramente nuevas.

    5.4 Lo que el modelo aprende

    Después de entrenar en RockYou, un modelo Markov de 5 órdenes interioriza patrones como:

  • Sufijos digitales : los números aparecen masivamente al final de la contraseña (→ "123", "2024", "1!")
  • Comienzos actuales : "pa", "mi", "lo", "ch", "123", "abc" son comienzos frecuentes
  • Pago inicial : la maleta superior en la primera posición es mucho más probable que en el centro de la cadena
  • Raras símbolos en el medio : "@", "#", "!" aparece principalmente en sustitución de letras o sufijo
  • Repeticiones humanas : "aaa", "ll", "ee" son más frecuentes que duplicados de consonantes raros

  • 6. Fase 2 - Generación ordenada de candidatos

    6.1 El problema de la enumeración de la puntuación

    Generar candidatos en orden descendente de probabilidad Markov es un problema no-trivial. No podemos simplemente calcular las probabilidades de todos los candidatos posibles (948 x 6 × 1015 para 8 tanques) y luego ordenarlos.

    La solución: Búsqueda heurística con cola prioritaria El algoritmo es similar a Dijkstra:

  • Inicia la línea con los principios más probables (^a, ^p, ^1...)
  • En cada etapa, depilar el candidato parcial más probable
  • Extenderlo con cada personaje posible, calcular la puntuación del candidato extendido
  • Si se alcanza la longitud del objetivo, explique al candidato
  • Si no, vuelve a archivar
  • Este enfoque garantiza una clasificación aproximadamente decreciente sin memorizar todo el espacio.

    6.2. umbral del umbral

    Para evitar generar miles de millones de candidatos improbables, Puntuación mínima debajo del cual se elimina un candidato parcial (esclavamiento).

    Si log P(candidatpartiel) < THRESHOLD → abandon de cette branche

    Threshold es un parámetro crítico: demasiado alto → se pierde contraseñas en el límite; demasiado bajo → se generan demasiados candidatos y ralentizar el ataque.

    Gestión de la longitud

    Los modelos Markov están entrenados y generalmente funcionan por longitud fijaUn ataque típico:

  • Duración 6: generar candidatos N en orden descendente de probabilidad
  • Longitud 7 : Ídem
  • Longitud 8: Ídem (la longitud más común en el cuerpo)
  • Duración 9-12: disminución de la cobertura
  • Distribución de longitud en RockYou: 8 tanques = 24%, 7 tanques = 21%, 9 tanques = 12%, 6 tanques = 10%...


    7. Reducing Research Space: The Key to Effectiveness

    7.1 Cuantificación empírica (Dürmuth 2015)

    Para una contraseña de 8 caracteres con el alfabeto completo (94 tanques):

    MétodoEspacio de investigaciónFactor de reducción -------------- Fuerza bruta948 6 × 10151× (referencia) Orden de Markov 1~3 × 1015~2× Orden 3 de Markov~6 × 1013~100× Markov Order 5~3.6 × 1010~166 000× Markov Orden 5 (típico humano)~4 × 107~150 millones×

    La diferencia entre "espacio reducido" y "espacio humano típico" se explica por el hecho de que las contraseñas humanas reales se concentran en lo más probable Según el modelo.

    7.2 Por qué los humanos son predecibles

    Los factores de previsibilidad utilizados por Markov:

    Limitaciones lingüísticas las contraseñas se derivan de las palabras existentes. "letmein", "sunshine", "iloveyou" siguen las reglas fonóticas del inglés, las transiciones de las letras son muy probables. Limitaciones cognitivas Los humanos no recuerdan secuencias aleatorias. Una contraseña aleatoria como "xqzfw9@" rara vez es elegida espontáneamente. Patrones culturales Estos patrones crean grupos de alta densidad en el espacio de contraseña. Sustituciones predictivas Estos cambios son tan comunes que forman parte del modelo. Posición de números y símbolos : los números al final de la contraseña (passwd123) son 10× más frecuentes que los números al principio. Los símbolos Suffix (passwd!) son 5× más frecuentes que en la posición central.

    7.3 El caso de los patrones de teclado

    Las secuencias de teclado (qwerty, asdf, zxcv, 1234, azerty...) son particularmente vulnerables.

  • Las transiciones de caracteres siguen las limitaciones de la topología del teclado
  • De cada clave, sólo 4-8 vecinos inmediatos son relevantes
  • Un modelo de Markov impulsado en el cuerpo incluyendo estos patrones logra una reducción 99,7 % (vs 99,4% para palabras humanas generales)
  • En Time2Crack (versión actual), esta distinción ya no es un rodamiento fijo. kbPat como señal en un estimador de rango (markovExpectedGuesses) entonces interponer continuamente entre regímenes "humanos" y "como el aleatorio".


    8. Variaciones e implementaciones notables

    8.1 OMEN (Open Markov Estimator of Next passwords)

    Desarrollado por : Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge (ESORICS 2015) Disponibilidad : Fuente abierta (GitHub) Innovación principal : programación optimizada por puntuación de nivel (summarización por pasos de probabilidad)

    OMEN utiliza una discretización de probabilidades niveles completos para acelerar la generación:

  • Cada n-gram recibe un puntaje entero (0 = muy probable, 10 = improbable)
  • La suma de las puntuaciones de una contraseña es su puntuación general
  • Las contraseñas se generan en orden ascendente de puntuación general
  • Este enfoque resuelve elegantemente el problema de la enumeración ordenada sin una cola de prioridad costosa.

    8.2 OMEN+

    Extension of OMEN with:

  • Smoothing Kneser-Ney para una mejor generalización
  • Interpolación de órdenes múltiples : combina las predicciones de orden 3, 4 y 5
  • Adaptación del umbral basado en la distribución empírica del cuerpo
  • Rendimiento informado: +15 a +20% contraseñas cracked vs original OMEN con presupuesto igual.

    8.3 Statsgen / PACK (Password Analysis and Cracking Kit)

    Desarrollado por : Peter Kacherginsky (iphelix) Enfoque : más ligero que OMEN, genera máscaras y estadísticas compatibles Hashcat Uso típico : análisis de un conjunto de contraseñas rotas para adaptar futuros ataques

    8.4 JohnTheRipper — Modo Markov

    John TheRipper integra un modo nativo Markov (desarrollado por Samuele Giovanni Tonon):

    john --markov --min-length=6 --max-length=8 hashes.txt

    Parámetro --markov-threshold (0-400): controla el umbral de corte. 150 = parámetro estándar recomendado.

    El modo JtR Markov utiliza estadísticas precalculadas almacenadas en archivos .mkv (archivos de estadísticas de Markov) generados por calcstat.

    8.5 Modelos híbridos Markov

    Markov + reglas : generar candidatos Markov, luego aplicar reglas de transformación Hashcat Markov + diccionario : utilizar contraseñas Markov como base para ataques híbridos Markov + PCFG : combinar el orden probabilístico Markov con el estrés estructural PCFG

    Estas hibridaciones se utilizan en configuraciones profesionales de cracking para maximizar la cobertura presupuestaria de CPU/GPU.

    8.6 Modelos de lenguaje moderno (LLM/LSTM) — sucesores de Markov

    Las redes LSTM y Transformer se pueden ver como generalizaciones de los canales Markov:

  • Markov orden k = k tokens ventana de contexto fijo
  • LSTM = ventana de contexto variable y sin límites (memoria a largo plazo)
  • Transform = atención general a toda la secuencia
  • PassGAN (2017), FLA (2019), PassBERT (2022) superó los modelos clásicos de Markov en un 20-30% en las tasas de crack en el corpus moderno.


    9. Comportamiento contra diferentes tipos de contraseñas

    9.1 Contraseñas de palabras naturales

    Ejemplos : sol, letmein, dragón, iloveyou Vulnerabilidad : extremo Mecanismo : el modelo asigna muy alta probabilidad a las secuencias del inglés actual. Estas palabras aparecen en el superior 0,001 % los candidatos generados. Hora : milisegundos en MD5/SHA-1

    9.2 Palabras con sustituciones de palanca

    Ejemplos : p@ssw0rd, L3tm3In, $unsh1ne Vulnerabilidad : alto Mecanismo El modelo ha aprendido que "@" a menudo sigue "p" (porque "p@ss..." es muy común en el cuerpo), que "0" a menudo sigue "w" (w0rd...), etc. Las sustituciones más comunes están integradas en la probabilidad de transición. Hora : segundos a minutos

    9.3 Palabras con sufijo digital

    Ejemplos : contraseña123, sol2024, dragón1! Vulnerabilidad : alto Mecanismo Los sufijos numéricos son tan comunes que el modelo tiene una alta probabilidad para la letra→ transiciones al final de la secuencia. "123", "1", "2024", "12" son los sufijos más probables. Hora : segundos a unos minutos

    9.4 Nombres y nombres adecuados

    Ejemplos : Thomas92, AnneM@rie, NICOLAS Vulnerabilidad moderada a alta Mecanismo : Los nombres comunes (en inglés) están bien representados en el corpus de referencia. Menos nombres comunes en inglés corpus (francés, polaco, etc.) se benefician menos del modelo. Hora : minutos a horas dependiendo de la popularidad del nombre

    9.5 Paso palabras de aparente estructura aleatoria pero mnemotécnica

    Ejemplos : Tr0ub4dor aceptar3 (del artículo XKCD), Il0v3myC@t! Vulnerabilidad moderada Mecanismo Estas contraseñas tienen una estructura humana (baseword + substituiones + sufijo), pero la base y las transformaciones específicas no están en la parte superior de los candidatos Markov. El modelo eventualmente los alcanzará, pero caen en el 10-30% del espacio. Hora : horas a días según longitud y algoritmo de hash

    9.6 Pautas de teclado

    Ejemplos : qwerty, 1234567, azerty, qweasdzxc Vulnerabilidad : extremo (menos que palabras naturales) Mecanismo : Las transiciones de teclado están tan representadas en el corpus que el modelo las clasifica entre los primeros miles de candidatos, a veces los primeros diez. Hora : microsegundos a milisegundos

    9.7 Contraseñas aleatorias de verdad

    Ejemplos : xQz7@mK9, 4#pL$2nR, kRf9!Ws3 Vulnerabilidad : bajo a cero Mecanismo : Las transiciones de caracteres en estas contraseñas tienen probabilidades muy bajas en un modelo entrenado en contraseñas humanas. Se encuentran en los últimos porcentajes del espacio generado. Comportamiento El verdadero "costo" de seguridad es una entropía burda. Hora : comparable o superior a la fuerza bruta

    9.8 Frases

    Ejemplos : caballo-batería-correo-correo, monchieneestlouisXIV Vulnerabilidad : variable Mecanismo complejo :
  • Un modelo Markov puede capturar transiciones entre palabras en una breve contraseña (2 palabras) si estas combinaciones son comunes en el corpus
  • Pero para largas contraseñas (4+ palabras), el espacio candidato ordenado por Markov sólo alcanzará después de agotar todas las contraseñas cortas típicas
  • Ataque combinador es generalmente más eficaz que Markov en las contraseñas

  • 10. Integración en Time2Crack: Modelado y Parámetros

    Lógica general del cálculo (v2)

    Time2Crack ahora modelos Markov en rango previsto (basado en barra) en lugar de con factores de reducción fijos.

    Línea de cálculo:

  • Tokenización Unicode en segmentos L/D/S,
  • estimación de un rango humano a través de esqueleto + forma + filas de fichas,
  • modulación por señales estructurales (kbPat, seq, dt, rep, hybridVuln),
  • interpolación continua hacia un régimen "como el azar" según charset y longitud,
  • conversión del tiempo mediante budgetTime(rangestime, vitessehash).
  • 10.2 Unicode Tokenization and Calibrated Profile by Language

    El modelo Markov v2 utiliza clases de Unicode (\p{L}, \p{N}, de otro modo símbolo) y un perfil calibrado por idioma (cargado desde entonces data/markov-calibration.json, con retroceso interno).

    El perfil contiene:

  • skeletonRanks (G)L8D2, L8D2S1, ...),
  • shapeRanks (G)LD, LDS, ...),
  • tokenRanks por clase/duración,
  • multiplicadores de lenguaje (shapeMultipliers),
  • multiplicadores de señal (signalMultipliers).
  • 10.3 Interpolación continua (fin de umbrales empinados)

    El modelo antiguo utiliza rodamientos (0.003 / 0.006 / 0.25 / 0.9). El modelo v2 reemplaza esta lógica con interpolación continua entre:

  • humanRank (zona estructural probable),
  • randomRank (area cerca de crudo, atado).
  • El peso aleatorio es una función continua de la longitud, el tanque y la fuerza de las señales humanas, evitando así las discontinuidades artificiales.

    10.4 Puntaje de confianza y aplicabilidad

    Time2Crack Scoring Model (función annotateScenarioApplicability()) asigna a Markov:

    Confianza básica : 0,75 (línea 4800) Interpretación: El ataque de Markov se considera moderadamente fiable — más fiable que la estimación neural (0,7) o PRINCE (0,7), menos que el diccionario (0,9) o las tablas groove (0,95). Puntaje de aplicabilidad (línea 4873 a 4874):
    case "markov":
      return context.looksHuman ? 0.76 : 0.34;
  • looksHuman = true → puntuación 0.76: El ataque de Markov muy aplicable, el modelo explotará las regularidades humanas
  • looksHuman = false → puntuación 0.34: aplicable pero sin mayor ventaja sobre la fuerza bruta
  • Evidencia puntuación (línea 4829-4830):
    case "markov":
      return Number(!!context.looksHuman) + Number(!!context.kbPat)
           + Number(!!context.seq)        + Number(!!context.rep);
    Cada señal de " carácter humano" de la contraseña aumenta la puntuación obvia de Markov.

    10.5 Ajuste HF

    Con Markov v2, las señales estructurales ya están integradas en el rango estimado. Por lo tanto, el ajuste HF es neutral para Markov con el fin de evitar la doble contabilización.

    10.6 Prioridad en el corte de corbatas

    Cuando múltiples ataques dan tiempos similares (asignados 1ms de diferencia), Time2Crack elige lo más relevante según una prioridad semántica:

    const tieBreakPriority = {
      // ...
      markov: 8,    // Statistical n-gram — broad coverage
      // ...
    };

    Markov es un útil ataque complementario que explota las regularidades estadísticas. Tiene precedencia sobre la fuerza bruta para las contraseñas con estructura humana, pero da precedencia al diccionario y los ataques híbridos que son más directos.

    Caso 10.7 Ultra-weak

    Para contraseñas ultra-bajo (detectadas por isWeakPassword()), Markov utiliza un tiempo basado en un rango mínimo (weakGuessTime) en lugar de una constante fija:

    if (weak) {
      rows.push({ ..., sec: weakGuessTime(a.rate), note: t("nWeakPassword"), cat: "markov" });
    }

    Razonamiento: una contraseña ultra-bajo (password, 123456, qwerty...) está en el top-100 absoluto Espacio Markov — se probará primero, la exactitud del cálculo es irrelevante.


    11. Comparación con otros ataques probabilísticos

    11.1 Markov vs PCFG

    DimensionMarkovPCFG -------------------- Unidad de análisisTransiciones individuales de carácterEstructuras de segmento (L/D/S) Información capturadaRecursos ordinarios locales (n-gram)Global (grammar) FuerzaPalabras naturales, patrones continuosPalabras + números, estructuras compuestas LimitNo capta estructuras globalesNo capture las transiciones locales ComplementaridadIdeal para palabras purasIdeal para Contraseña123 Ejemplo óptimo"Sunshine"Sol#93 Orden en Time2CrackMarkov = 8, PCFG = 6PCFG más precisa si la estructura detectada

    11.2 Markov vs. Rule-Based Attack

    DimensionMarkovBasado en normas ---------------------------- EnfoqueGeneration ab initio probabilisticTransformación de un diccionario existente CoberturaTodas las contraseñas probablesTraducciones de palabras de diccionario FuerzaPalabras raras o ligeramente no diccionarioTransformaciones tradicionales de palabras conocidas LimitMenos eficaz que el dictador+reglas para las mutaciones actualesDepende enteramente de la calidad del diccionario

    11.3 Markov vs Neural Networks (PassGAN, LSTM)

    DimensionMarkov (Order 5)Red neuronal --------------- Sí.- Sí. ComplejidadO(k ×) por predicciónO(n2 × d) (Transformer) Datos necesarios1-10M ejemplos suficientes10M-1B para buenos resultados InterpretabilidadTotal (cuadros de responsabilidad)Caja negra GeneralizaciónLimitado al contexto local kPotencial general Tasa de crackReferencia+20-30% en contraseñas modernas Velocidad de generaciónMuy rápido.Más lento

    11.4 Posición mundial

    En un flujo de trabajo profesional, el orden típico es:

  • Diccionario (credlist) - contraseñas exactas conocidas
  • Embalaje temporal — pares de ID/mdp reutilizados
  • pulverización de contraseña — top-20 común
  • híbrido — reglas dico + Hashcat
  • PCFG - si se detecta la estructura L+D
  • Máscara - si se detecta un patrón posicional
  • Markov - cobertura estadística general
  • Neural - si se dispone de presupuesto
  • Fuerza bruta - último recurso
  • Markov es a menudo el línea de antecedentes fuerza bruta frontal: cubre efectivamente las contraseñas humanas que han escapado a ataques más dirigidos.


    12. Límites del ataque de Markov

    12.1 Dependencia del cuerpo de capacitación

    El modelo es tan bueno como su corpus. Un corpus dominado por contraseñas inglesas (RockYou, LinkedIn) malinterpreta las regularidades:

  • Contraseñas en lenguajes de alta densidad morfológica (Polish, checo, finlandés)
  • Contraseñas basadas en culturas no representadas ( mandarina transliterada, árabe romanizado)
  • Contraseñas de campos especializados ausentes de fugas (largo médico, rara jerga técnica)
  • Solución parcial : formar modelos específicos por idioma y campo (aproximación que requiere diverso corpus).

    12.2 Independencia interposicional de largo alcance

    Un modelo Markov 5 no ve más de 5 caracteres. Para una contraseña de 12 caracteres, no puede correlacionar el 12o carácter con el 1o. Un passphrase como "stargate2004!" tiene una estructura global ("palabra + año +!") que Markov percibe localmente pero no globalmente — PCFG es mejor aquí.

    12.3 Insensibilidad a las estructuras de composición

    "HorseStapleBattery" (majusculo inicial + 3 palabras concatenadas) es difícil para Markov porque las transiciones entre palabras (e→S, e→B) son inesperadas.El ataque combinador o PCFG es mejor adecuado.

    12.4 Ineficacia de la contraseña aleatoria

    Una contraseña generada /dev/urandom con 12 caracteres alfanuméricos no tiene estructura explotable por Markov. El tiempo de ataque Markov converge a la fuerza cruda.

    12.5 Sensibilidad de actualizar la política de contraseña

    Si una organización ha impuesto reglas estrictas (duración ≥ 16, símbolo obligatorio 1 capital + 1 dígito + 1), las contraseñas resultantes pueden tener una distribución diferente del cuerpo de entrenamiento, reduciendo la eficacia del modelo.


    13. Defensas eficaces

    13.1 Lo que neutraliza completamente a Markov

    Generadores de contraseñas aleatorias : cualquier administrador de contraseña (Bitwarden, 1Password, KeePass) con un generador criptográficomente seguro produce secuencias sin estructura explotable por Markov. Una contraseña de 16 caracteres aleatorios está fuera de alcance independientemente del ataque. Suficiente longitud con azar : incluso con un tanque reducido (sólo az), 16 caracteres al azar representan 26^16

    13.2 Lo que reduce considerablemente la eficacia de Markov

    Frases largas de palabras raras : 4+ palabras poco comunes separadas están fuera de los mejores candidatos de Markov, especialmente si las palabras vienen de diferentes idiomas o vocabularios especializados. Evite los sustitutos comunes de la palanca : Las sustituciones a→@, e→3, etc. se integran en el modelo, pero las transformaciones no estándar (a→ Evitar patrones de teclado y palabras naturales : La máxima vulnerabilidad de Markov.

    13.3 Lo que no defiende contra Markov

    Requisitos de complejidad (majuscule + dígito + símbolo) : si estos elementos se añaden a una palabra natural (P@ssw0rd!), el modelo captura estos patrones. falsa seguridad percibido. Sustituciones básicas de palanca : completamente capturado por el modelo (transitions "@"→"s", "3"→"y"...). Sufijos digitales/prefijos : "palabra + 123" o "palabra + 2024" patrones están entre los primeros probados.

    13.4 Recomendación final

    La defensa más efectiva contra Markov (y cualquier ataque probabilístico) eseliminar cualquier estructura humana previsible, lo que equivale a delegar la creación de contraseña a un generador aleatorio seguro.


    14. Referencias

    Académicos (revisados por los espectadores)

    Dürmuth, M., Angelstorf, F., Horsch, J., Nürnberger, S., &quot; Rüegge, A. (2015). OMEN: Contraseña más rápida Adivina usando un Enumerador de Markov ordenado. Ingeniería Software y Sistemas Seguros (ESSoS 2015), LNCS 8978, pp. 119–132. → Referencia principal para la calibración probabilística de Markov utilizado en Time2Crack (RockYou 14M, Order 5) Ma, J., Yang, W., Luo, M., &quot; Li, N. (2014). Un estudio de los modelos probabilísticos de contraseña. Simposio IEEE sobre Seguridad y Privacidad (S plagaP 2014). → Comparación empírica Markov, PCFG, n-gramos en contraseñas de 70M Weir, M., Aggarwal, S., de Medeiros, B., &quot; Glodek, B. (2009). Rastreo de contraseña usando gramáticas libres de contextos probabilísticos. Simposio IEEE sobre Seguridad y Privacidad (S plagaP 2009). → Trabajo de fundición en métodos probabilísticos estructurales (competidor de Markov) Wheeler, D.L. (2016). zxcvbn: Estimación de la fuerza de contraseña de bajo costo. 25o Simposio de Seguridad USENIX. → Confirma la eficacia de los n-gramas para la estimación realista de la fuerza de contraseña Pasquini, D., Cianfriglia, M., Ateniese, G., &quot; Bernaschi, M. (2021). Reduciendo Bias en Modeling Real-World Password Strength via Deep Learning and Dynamic Dictionaries. 30o Simposio de Seguridad USENIX. → Comparación cuantitativa Markov vs aprendizaje profundo en el cuerpo moderno Hitaj, B., Gasti, P., Ateniese, G., &quot; Perez-Cruz, F. (2019). PassGAN: Un enfoque de aprendizaje profundo para adivinar contraseña. ACNS 2019. → Markov Neural Successor, punto de comparación para Time2Crack descNeural

    Implementaciones de código abierto

    OMEN https://github.com/RUB-SysSec/OMEN John TheRipper (modo Markov) https://www.openwall.com/john/doc/MARKOV.shtml PACK (statsgen/maskgen) https://github.com/iphelix/pack Hashcat https://hashcat.net/hashcat/

    Fuentes del corpus

    RockYou (2009) : 14.3M contraseñas del fallo de la red social RockYou He estado en la cabeza https://haveibeenpwned.com — ~14 billion aggregate credenciales (Troy Hunt) SecLists : https://github.com/danielmiessler/SecLists — reference dictionaries and wordlists

    Fuentes web citadas en la aplicación Time2Crack

    Springer (capítulo Markov/grieta probabilística). https://link.springer.com/chapter/10.1007/978-319-24174-67 → Fuente relacionada en descMarkov (app.js) for the effective reduction of the research space by statistical prioritization.
    Documento generado para el proyecto Time2Crack — última actualización : 2026-04-01 Sobre la base de la aplicación en los app.js (markov v2) y las publicaciones académicas citadas