Ataque de Markov (probabilístico) — Operação global

Documento de referência do projeto Time2Crack
Destinatários: desenvolvedores, pesquisadores de segurança, usuários avançados

Índice

  • Visão geral
  • Formação histórica e académica
  • Fundamentos matemáticos: as correntes de Markov
  • Arquitetura de um cracktool de Markov
  • Fase 1 – treinamento de corpus de senhas reais
  • Fase 2 — Geração ordenada de candidatos
  • Redução do espaço de pesquisa: a chave para a eficácia
  • Variações e implementações notáveis
  • Comportamento contra diferentes tipos de senhas
  • Integração no Time2Crack: Modelação e Parâmetros
  • Comparação com outros ataques probabilísticos
  • Limites do ataque de Markov
  • Defesas eficazes
  • Referências

  • Resumo

    Markov Attack é um método de quebra de senha probabilística e estatística Em vez de testar todas as combinações possíveis em ordem alfabética — como faz a força bruta — classifica os candidatos dos mais prováveis, concentrando o esforço de cálculo onde as senhas humanas estão realmente localizadas.

    Em termos simples : um atacante que tem GPU suficiente e um modelo de Markov bem treinado irá testar "letmein", "p@ssword" e "sun2024" antes de testar "aaaaaaa", "aaaaab" ou "xqzfkw" - porque os humanos criam senhas que parecem palavras, não ruído branco. Eficiência medida : Dürmuth et al. (2015) pesquisa sobre o RockYou corpus (14 milhões de senhas) mostra que um modelo Markov 5 reduz o espaço de busca real para 0,6% do espaço bruto Para senhas com uma estrutura humana típica — uma redução de 99,4 %.

    2. Antecedentes históricos e acadêmicos

    2.1 Origens

    A aplicação dos canais de Markov para quebra de senhas é anterior às publicações acadêmicas formais. Profissionais de segurança ofensivos usaram modelos semelhantes desde os anos 2000, mas datam de formalização rigorosa principalmente a partir dos anos 2010.

    Cronologia dos marcos : AnoEvento ---------------------- 2005Nakashima & Oyama: primeira aplicação formal de n-grams para senhas 2009Weir et al. (IEEE S&P): PCFG — concorrente directo, posições probabilidades estruturais 2012Ma et al. (USENIX Security): Estudo comparativo de modelos probabilísticos em senhas 70M 2013Durmuth: primeira análise da OMEN em vários corpus 2015Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge: OMEN (ESÓRICO 2015) — principal referência académica 2016Wheeler (zxcvbn) confirma a eficácia dos n-gramas na estimativa da entropia real 2018OMEN+: versão melhorada com suavização e interpolação 2019–2022Trabalho híbrido de Markov + redes neurais (PassGAN, FuzzyPSM)

    2.2 Organismo de referência

    O treinamento do modelo de Markov é baseado em bases de dados de senha de vazamentos de dados conhecidos:

  • LinkedIn (2012) : 6,5 milhões de haxixes SHA-1 não salgados (incluindo 4,4M rachados)
  • Adobe (2013) : 153 milhões de identificadores (3 hashs DES — rachados por análise de frequência)
  • Colecção #1–5 (2019) : 2,7 bilhões de pares de identificação/senha
  • Fui enganado (2024) : ~14 bilhões de credenciais agregadas
  • Esses corpus revelam a distribuição estatística real das senhas humanas, que difere radicalmente de uma distribuição uniforme.


    3. Fundações Matemáticas: Correntes de Markov

    3.1 Definição formal

    Cadeia de ordem Markov k num alfabeto k Caracteres anteriores:

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

    Para senhas, geralmente inclui 95 caracteres ASCII imprimíveis (26 minúsculas + 26 maiúsculas + 10 dígitos + 33 símbolos).

    Ordem 1 (bigrama) :
    P("password") = P("p") × P("a"|"p") × P("s"|"a") × P("s"|"s") × ...
    Ordem 5 (ótima de acordo com 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")

    A ordem 5 captura contextos como "após "passw", o seguimento mais provável é "o" — informação inacessível a um modelo de ordem 1.

    3.2 A matriz de transição

    Para uma ordem de 1 sobre 95 caracteres, a matriz de transição é tamanho 95 × 95 = 9,025 entradasPara a Ordem 5, vai para 955 × 95 = ~7.7 × 1010 inputs teóricos — mas a maioria dos n-gramas de ordem 5 nunca aparece nos dados reais.

    3.3 Probabilidade de log e ordenação

    Para evitar sobreposições flutuantes em senhas de 8 caracteres (probabilidades da ordem de 10-20), as ferramentas funcionam em probabilidades de log :

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

    Este valor é o pontuação Markov Os candidatos são gerados em ordem decrescente de pontuação, ou seja, o mais provável, pelo menos.

    3.4 Por que a Ordem 5?

    Pesquisa empírica (Dürmuth 2015, confirmada por Ma et al. 2012) mostra que:

  • Ordem 1 : captura frequências de caracteres individuais (e, a, o comum em minúsculo), redução ~50%
  • Ordem 2 : captura bigrams comuns (pa, ss, wo, rd), redução ~75%
  • Ordem 3 : captura trigramas (não, ass, ssw), redução ~90%
  • Ordem 4 : diminuição do início dos retornos, redução ~95 %
  • Ordem 5 : Óptima empírica em RockYou, redução ~99,4%
  • Ordem 6+ : overfitting, modelo memoriza senhas de treinamento sem generalizar

  • 4. Arquitetura de um cracktool de Markov

    4.1 Principais componentes

    ┌─────────────────────────────────────────────────────────────┐
    │                    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 Integração com Hashcat

    A implementação mais generalizada na prática é através da Hashcat stdin mode (-a 0 com um gerador externo) ou através de módulos Python como statsgen (do kit de ferramentas PACK):

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

    Ferramentas dedicadas como OMEN (Open Markov Estimator of Next passwords) gera diretamente listas de candidatos ordenados.


    5. Fase 1 — Corpo de treino de senha real

    5.1. Extração de n-gramas

    Para cada senha no corpus, todos os n-gramas são extraídos (com um marcador inicial). ^ e fim $) :

    Exemplo com "olá" (ordem 2):

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

    Exemplo com "P@ss1!" (ordem 2):

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

    5.2 Contagem e normalização

    Para cada contexto (n-1 caracteres anteriores), as ocorrências de cada caractere a seguir são contadas e normalizadas:

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

    Essas distribuições revelam hábitos de linguagem humana: depois de "pa", as pessoas escrevem maciçamente "s" (senha, passe, pablo...).

    Suavização

    O problema de n-gramas não observados: se "xq" nunca aparece no corpus, P(c)xq) = 0 para qualquer c — que bloqueia a geração. As técnicas de suavização mais utilizadas:

  • Adicionar um (Laplace) : adicionar 1 a todas as contas
  • Boa Turing : redistribuir a probabilidade dos n-gramas vistos uma vez para aqueles nunca vistos
  • Kneser-Ney : método de ponta, utilizado em OMEN+
  • A suavização também permite que o modelo gere candidatos fora do corpus de treinamento — crucial para cobrir senhas ligeiramente novas.

    5.4 O que o modelo aprende

    Depois de treinar no RockYou, um modelo de 5-ordem Markov internaliza padrões como:

  • Sufixos digitais : números aparecem massivamente no final da senha (→ "123", "2024", "1!")
  • Início atual : "pa", "my", "lo", "ch", "123", "abc" são começos frequentes
  • Pagamento inicial : a parte superior na primeira posição é muito mais provável do que no meio da cadeia
  • Símbolos raros no meio : "@", "#", "!" aparecem principalmente em substituição de letras ou sufixo
  • Repetições Humanas : "aa", "ll", "ee" são mais frequentes que duplicatas de consoantes raras

  • 6. Fase 2 — Geração ordenada de candidatos

    6.1 O problema da enumeração da pontuação

    Gerando candidatos em ordem decrescente de probabilidade Markov é um problema não trivial. Nós não podemos simplesmente calcular as probabilidades de todos os candidatos possíveis (948 x 6 × 1015 para 8 tanques) e, em seguida, ordená-los.

    A solução: Busca heurística com cauda prioritária O algoritmo é semelhante ao Dijkstra:

  • Inicializar a linha com os começos mais prováveis (^a, ^p, ^1...)
  • Em cada fase, depila o candidato parcial mais provável
  • Estendê-lo com cada caractere possível, calcular a pontuação do candidato estendido
  • Se o comprimento do alvo atingido, emitir candidato
  • Caso contrário, arquivar de volta
  • Esta abordagem garante uma classificação aproximadamente decrescente sem memorizar todo o espaço.

    6.2. Limiar

    Para evitar gerar bilhões de candidatos improváveis, a Pontuação mínima abaixo do qual um candidato parcial é eliminado (slading).

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

    Limiar é um parâmetro crítico: muito alto → você perde senhas no limite; muito baixo → você gera muitos candidatos e retarda o ataque.

    6. 3 Gestão do comprimento

    Os modelos Markov são treinados e geralmente operam por comprimento fixoUm ataque típico:

  • Comprimento 6: gerar N candidatos em ordem decrescente de probabilidade
  • Comprimento 7 : Ídem
  • Comprimento 8: Idem (comprimento mais comum no corpus)
  • Comprimentos 9-12: cobertura decrescente
  • Distribuição de comprimento em RockYou: 8 tanques = 24%, 7 tanques = 21%, 9 tanques = 12%, 6 tanques = 10%...


    7. Redução do espaço de pesquisa: a chave para a eficácia

    7.1 Quantificação empírica (Dürmuth 2015)

    Para uma senha de 8 caracteres com o alfabeto completo (94 tanques):

    MétodoEspaço de investigaçãoFactor de redução ----------------------------------------------------- Resistência bruta948 6 × 10151× (referência) Ordem de Markov 1~3 × 1015~2× Ordem de Markov 3~6 × 1013~100× Ordem de Markov 5~3,6 × 1010~166 000× Ordem de Markov 5 (humano típico)~4 × 107~150 milhões×

    A diferença entre "espaço reduzido" e "espaço humano típico" pode ser explicada pelo fato de que as senhas humanas reais estão concentradas em topo- k% mais provável Dependendo do modelo.

    7.2 Por que os humanos são previsíveis

    Os factores de previsibilidade utilizados por Markov:

    Restrições linguísticas senhas são derivadas de palavras existentes. "letmein", "sunshine", "iloveyou" seguem regras fonóticas do inglês — as transições de letras são altamente prováveis. Restrições cognitivas Os humanos não se lembram de sequências realmente aleatórias. Uma senha aleatória como "xqzfw9@" raramente é escolhida espontaneamente. Padrões culturais Esses padrões criam clusters de alta densidade no espaço de senha. Substituições previsíveis Essas mudanças são tão comuns que fazem parte do modelo. Posição dos números e símbolos : os números no final da senha (passwd123) são 10× mais frequentes do que os números no início. Os símbolos do sufixo (passwd!) são 5× mais frequentes do que na posição central.

    7.3 O caso dos padrões de teclado

    As sequências de teclado (qwerty, asdf, zxcv, 1234, azerty...) são particularmente vulneráveis.

  • As transições de caracteres seguem as restrições da topologia do teclado
  • De cada chave, apenas 4-8 vizinhos imediatos são relevantes
  • Um modelo Markov impulsionado no corpus, incluindo estes padrões atinge uma redução de 99,7 % (vs 99,4% para palavras humanas gerais)
  • No Time2Crack (versão atual), esta distinção não é mais um rolamento fixo. kbPat como sinal num estimador de classificação (markovExpectedGuesses) então interpolo continuamente entre regimes "humanos" e "leandom-like".


    8. Variações e implementações notáveis

    8.1 OMEN (Estimador de Markov Aberto das Próximas Senhas)

    Desenvolvido por : Dürmuth, Angelstorf, Horsch, Nürnberger, Rüegge (ESORICS 2015) Disponibilidade : Código aberto (GitHub) Principais inovações : escalonamento otimizado por pontuação de nível (síntese por etapas de probabilidade)

    A OMEN utiliza uma discretização das probabilidades em níveis inteiros acelerar a geração:

  • Cada n-grama recebe uma pontuação inteira (0 = muito provável, 10 = improvável)
  • A soma das pontuações de uma senha é a sua pontuação global
  • As senhas são geradas em ordem crescente de pontuação global
  • Esta abordagem elegantemente resolve o problema da enumeração ordenada sem cauda de prioridade cara.

    8.2 OMEN+

    Extensão do OMEN com:

  • Alisando o Kneser-Ney para uma melhor generalização
  • Interpolação de várias ordens : combina previsões de ordem 3, 4 e 5
  • Adaptação do limiar baseado na distribuição de corpus empíricos
  • Desempenho relatado: +15 a +20% senhas rachadas vs original OMEN com orçamento igual.

    8.3 Statsgen / PACK (Análise de Senha e Kit de Cracking)

    Desenvolvido por : Peter Kacherginsky (iphelix) Aproximação : mais leve do que a OMEN, gera máscaras e estatísticas compatíveis com Hashcat Utilização típica : análise de um conjunto de senhas rachadas para adaptar ataques futuros

    8.4 JohnTheRipper — Modo Markov

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

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

    Parâmetro --markov-threshold (0-400): controla o limiar de corte. 150 = parâmetro padrão recomendado.

    O modo JtR Markov usa estatísticas pré- calculadas armazenadas em arquivos .mkv (arquivos de estatísticas de marcov) gerados por calcstat.

    8.5 Modelos híbridos de Markov

    Markov + regras : gerar candidatos Markov, em seguida, aplicar regras de transformação Hashcat Markov + dicionário : use senhas de Markov como base para ataques híbridos Markov + PCFG : combinar a ordem probabilística Markov com a tensão estrutural PCFG

    Essas hibridizações são usadas em configurações de cracking profissional para maximizar a cobertura de orçamento da CPU/GPU.

    8.6 Modelos de linguagem modernos (LLM/LSTM) — sucessores de Markov

    As redes LSTM e Transformer podem ser vistas como generalizações de canais Markov:

  • Ordem de Markov k = k tokens janela de contexto fixa
  • LSTM = janela de contexto variável e não ligada (memória de longo prazo)
  • Transformar = atenção global a toda a sequência
  • PassGAN (2017), FLA (2019), PassBERT (2022) superou os modelos clássicos de Markov em 20-30% nas taxas de crack no corpus moderno.


    9. Comportamento contra diferentes tipos de senhas

    9.1 Senhas de palavras naturais

    Exemplos Deixa-me entrar, dragão, amo-te Vulnerabilidade : extremo Mecanismo : o modelo atribui probabilidade muito alta às sequências do inglês atual. Topo 0,001 % Os candidatos gerados. Tempo : milissegundos em MD5/SHA-1

    9.2 Palavras com substituições de leetspeak

    Exemplos : p@ ssw0rd, L3tm3In, $unsh1ne Vulnerabilidade : Alta Mecanismo O modelo aprendeu que "@" muitas vezes segue "p" (porque "p@ss..." é muito comum no corpus), que "0" muitas vezes segue "w" (w0rd...), etc As substituições mais comuns são integradas na probabilidade de transição. Tempo : segundos para minutos

    9.3 Palavras com sufixo digital

    Exemplos Senha123, raio de sol2024, dragão1! Vulnerabilidade : Alta Mecanismo Os sufixos numéricos são tão comuns que o modelo tem uma alta probabilidade para a letra→ transições no final da sequência. Tempo : segundos para alguns minutos

    9.4 Nomes e nomes próprios

    Exemplos : Thomas92, AnneM@rie, NICOLAS Vulnerabilidade moderada a alta Mecanismo : Os nomes comuns (em inglês) são bem representados no corpus de referência. Os nomes menos comuns no corpus inglês (francês, polonês, etc.) beneficiam menos do modelo. Tempo : minutos a horas dependendo da popularidade do primeiro nome

    9.5 Passe palavras de estrutura aleatória aparente mas mnemotechnic

    Exemplos : Tr0ub4dor&3 (do artigo XKCD), Il0v3myC@t! Vulnerabilidade moderado Mecanismo Estas senhas têm uma estrutura humana (palavra de base + substituições + sufixo), mas a base e as transformações específicas não estão no topo- k dos candidatos a Markov. O modelo irá, eventualmente, alcançá-los, mas eles caem no 10-30% do espaço. Tempo : horas a dias de acordo com o algoritmo de comprimento e hash

    9.6 Padrões de teclado

    Exemplos : qwerty, 1234567, azerty, qweasdzxc Vulnerabilidade : extremo (pior que palavras naturais) Mecanismo : transições de teclado são tão representadas no corpus que o modelo as classifica entre os primeiros milhares de candidatos — às vezes as primeiras dezenas. Tempo : microssegundos a milissegundos

    9.7 Senhas Realmente Aleatórias

    Exemplos : xQz7@ mK9, 4# pL$2nR, kRf9!Ws3 Vulnerabilidade : baixo a zero Mecanismo : As transições de caracteres nessas senhas têm probabilidades muito baixas em um modelo treinado em senhas humanas. Elas são encontradas nas últimas porcentagens do espaço gerado. Comportamento O verdadeiro "custo" da segurança é entropia grosseira. Tempo : comparável ou superior à força bruta

    9. 8 Frases- senhas

    Exemplos : cavalo-bateria-estaca-correcto, monchieneestlouisXIV Vulnerabilidade : variável Mecanismo complexo :
  • Um modelo de Markov pode capturar transições inter-palavras em uma frase-passe curta (2 palavras) se estas combinações são comuns no corpus
  • Mas para frases longas (4+ palavras), o espaço candidato ordenado por Markov só irá alcançá-los depois de esgotar todas as senhas curtas típicas
  • Ataque combinador é geralmente mais eficaz do que Markov em frases- senha

  • 10. Integração em Time2Crack: Modelação e Parâmetros

    Lógica geral de cálculo (v2)

    Time2Crack agora modelos Markov em classificação esperada (rank-based) em vez de com fatores de redução fixos.

    Linha de cálculo:

  • Unicode tokenization em segmentos L/D/S,
  • estimativa de um posto humano via esqueleto + forma + linhas de fichas,
  • modulação por sinais estruturais (kbPat, seq, dt, rep, hybridVuln),
  • interpolação contínua para um regime "aleato" de acordo com charset e comprimento,
  • conversão de tempo via budgetTime(rangestime, vitessehash).
  • 10.2 Tokenization Unicode e perfil calibrado por idioma

    O modelo Markov v2 usa classes Unicode (\p{L}, \p{N}, de outra forma símbolo) e um perfil calibrado por idioma (carregado desde data/markov-calibration.json, com retrocesso interno).

    O perfil contém:

  • skeletonRanks (L8D2, L8D2S1, ...),
  • shapeRanks (LD, LDS, ...),
  • tokenRanks por classe/comprimento,
  • multiplicadores de línguas (shapeMultipliers),
  • multiplicadores de sinais (signalMultipliers).
  • 10.3. Interpolação contínua (fim dos limiares íngremes)

    O modelo antigo usou rolamentos (0.003 / 0,006 / 0.25/ 0.9). O modelo v2 substitui esta lógica por interpolação contínua entre:

  • humanRank (superfície estrutural provável),
  • randomRank (área próxima do bruto, delimitada).
  • O peso aleatório é uma função contínua do comprimento, tanque e força dos sinais humanos, evitando descontinuidades artificiais.

    10.4 Pontuação de confiança e aplicabilidade

    Modelo de Pontuação Time2Crack (função annotateScenarioApplicability()) atribuições a Markov:

    Confiança básica : 0,75 (linha 4800) Interpretação: O ataque de Markov é considerado moderadamente fiável — mais fiáveis do que a estimativa neural (0,7) ou PRINCE (0,7), menos do que o dicionário (0,9) ou as tabelas de sulcos (0,95). Pontuação de aplicabilidade (linha 4873-4874):
    case "markov":
      return context.looksHuman ? 0.76 : 0.34;
  • looksHuman = true → pontuação 0.76: Markov ataque é muito aplicável, o modelo explorará as regularidades humanas
  • looksHuman = false → pontuação 0.34: aplicável, mas sem grande vantagem sobre a força bruta
  • Pontuação de evidência (linha 4829-4830):
    case "markov":
      return Number(!!context.looksHuman) + Number(!!context.kbPat)
           + Number(!!context.seq)        + Number(!!context.rep);
    Cada sinal de "caracter humano" da senha aumenta a pontuação óbvia de Markov.

    10,5 HF de ajustamento

    Com Markov v2, os sinais estruturais já estão integrados na classificação estimada. O ajuste HF é, portanto, neutro para Markov, a fim de evitar a dupla contagem.

    10.6 Prioridade no empate

    Quando vários ataques dão tempos semelhantes (< 1ms de diferença), o Time2Crack escolhe o mais relevante de acordo com uma prioridade semântica:

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

    Markov é um ataque de complemento útil que explora regularidades estatísticas. Ele tem precedência sobre a força bruta para senhas com estrutura humana, mas dá precedência a ataques de dicionário e híbridos que são mais diretos.

    10.7 Caso ultrafraco

    Para senhas ultra- baixas (detectado por isWeakPassword()), Markov usa um tempo baseado em uma classificação mínima (weakGuessTime) em vez de uma constante fixa:

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

    Raciocínio: uma senha ultra-low (senha, 123456, qwerty...) está no absoluto superior- 100 Espaço de Markov — será testado primeiro, a precisão do cálculo é irrelevante.


    11. Comparação com outros ataques probabilísticos

    11, 1 Markov vs PCFG

    DimensãoMarkovPCFG ------------------------------ Unidade de análiseTransições de caracteres individuaisEstruturas de segmentos (L/D/S) Informações capturadasRegularidades locais (n-grama)Global (gramática) ForçarPalavras naturais, padrões contínuosPalavras + números, estruturas compostas LimiteNão captura estruturas globaisNão capturar transições locais ComplementaridadeIdeal para palavras purasIdeal para senha123 Exemplo ideal"Sunshine"Sunshine# 93 Ordem no tempo2CrackMarkov = 8, PCFG = 6PCFG mais preciso se a estrutura detectada

    11.2 Markov vs. Ataque baseado em regras

    DimensãoMarkovCom base em regras ------------------------------------- AproximaçãoGeração ab initio probabilisticTransformação de um dicionário existente CoberturaTodas as senhas prováveisTraduções de palavras de dicionário ForçarPalavras raras ou ligeiramente sem dicionárioTransformações tradicionais de palavras conhecidas LimiteMenos eficaz do que as regras ditadoras para mutações atuaisDepende inteiramente da qualidade do dicionário

    11. 3 Markov vs Redes Neurais (PassGAN, LSTM)

    DimensãoMarkov (Ordem 5)Rede neuronal -------------------------------------------------------------------------------- ComplexidadeO(k ×) por previsãoO(n2 × d) (Transformador) Dados necessários1-10M exemplos suficientes10M-1B para bons resultados InterpretabilidadeTotal (quadros de probabilidades)Caixa preta GeneralizaçãoLimitado ao contexto local kPotencial global Taxa de fissuraçãoReferência+20-30% em senhas modernas Velocidade de geraçãoMuito rápido.Mais lento

    11.4 Posicionamento global

    Em um fluxo de trabalho de cracking profissional, a ordem típica é:

  • Dicionário (credlist) — senhas exatas conhecidas
  • Recheio credencial — pares ID/mdp reutilizados
  • Pulverização de senha — top-20 comum
  • Híbrido — regras dico + Hashcat
  • PCFG — se a estrutura L+D for detectada
  • Máscara — se for detectado um padrão posicional
  • Markov — cobertura estatística geral
  • Neuural — se disponível
  • Resistência bruta — último recurso
  • Markov é frequentemente o linha de fundo força bruta frontal: efetivamente cobre senhas humanas que escaparam de ataques mais direcionados.


    12. Limites do Ataque de Markov

    12.1 Dependência do corpo de formação

    O modelo é tão bom quanto seu corpus. Um corpus dominado por senhas inglesas (RockYou, LinkedIn) não entende as regularidades:

  • Senhas em línguas de alta densidade morfológica (Polish, Checo, Finlandês)
  • Senhas baseadas em culturas não representadas (mandarim transliterado, árabe romanizado)
  • Senhas de campos especializados ausentes de vazamentos (gíria médica, jargão técnico raro)
  • Solução parcial : formar modelos específicos por linguagem e campo (abordagem que exige corpus diversificados).

    12.2 Independência interposicional de longo alcance

    Um modelo Markov 5 não vê mais de 5 caracteres. Para uma senha de 12 caracteres, não pode correlacionar o 12o caracter com o 1o. Uma frase-passe como "stargate2004!" tem uma estrutura global ("palavra + ano +!") que Markov percebe localmente, mas não globalmente — PCFG é melhor aqui.

    12.3 Insensibilidade às estruturas composicionais

    "HorseStapleBattery" (majusculum inicial + 3 palavras concatenadas) é difícil para Markov porque transições inter-palavras (e→S, e→B) são inesperadas. O ataque combinador ou PCFG é mais adequado.

    12. 4 Ineficácia da senha aleatória

    Uma senha gerada por /dev/urandom com mais de 12 caracteres alfanuméricos não tem estrutura explorável por Markov. O tempo de ataque Markov converge para a força bruta.

    12.5 Sensibilidade à política de senhas atualizada

    Se uma organização impôs regras rigorosas (comprimento ≥ 16, obrigatório 1 capital + 1 dígito + 1 símbolo), as senhas resultantes podem ter uma distribuição diferente do corpus de formação — reduzindo a eficácia do modelo.


    13. Defesas eficazes

    13.1 O que neutraliza completamente Markov

    Geradores de senhas aleatórios : qualquer gerenciador de senhas (Bitwarden, 1Password, KeePass) com um gerador criptograficamente seguro produz sequências sem estrutura explorável por Markov. Uma senha de 16 caracteres aleatórios está fora de alcance, independentemente do ataque. Comprimento suficiente com aleatório : mesmo com um tanque reduzido (apenas a-z), 16 caracteres aleatórios representam 26^16

    13.2 O que reduz consideravelmente a eficácia de Markov

    Frases longas de palavras raras : 4+ palavras incomuns separadas estão fora dos principais candidatos Markov, especialmente se as palavras vêm de diferentes línguas ou vocabulários especializados. Evite substitutos comuns de leetspeak : Substituções a→@, e→3, etc. são integradas no modelo, mas transformações não-padrão (a→ Evite padrões de teclado e palavras naturais : A vulnerabilidade máxima de Markov.

    13.3 O que não defende contra Markov

    Requisitos de complexidade (majuscule + dígito + símbolo) : se estes elementos são adicionados a uma palavra natural (P@ssw0rd!), o modelo captura estes padrões. segurança falsa Percebido. Substituições básicas de leetspeak : totalmente capturado pelo modelo (transições "@"→"s", "3"→"y"...). Sufixos/prefixos digitais : "palavra + 123" ou "palavra + 2024" padrões estão entre os primeiros testados.

    13.4 Recomendação final

    A defesa mais eficaz contra Markov (e qualquer ataque probabilístico) éeliminar qualquer estrutura humana previsível, que equivale a delegar a criação de senha para um gerador aleatório seguro.


    14. Referências

    Acadêmicos (avaliados pelos pares)

    Dürmuth, M., Angelstorf, F., Horsch, J., Nürnberger, S., & Rüegge, A. (2015). OMEN: Senha mais rápida adivinhando usando um Enumerador Markov ordenado. Software e Sistemas Seguros de Engenharia (ESSOS 2015), LNCS 8978, pp. 119–132. → Referência principal para calibração probabilística Markov usada no Time2Crack (RockYou 14M, Ordem 5) Ma, J., Yang, W., Luo, M., & Li, N. (2014). Um estudo de modelos de senha probabilísticos. Simpósio IEE sobre Segurança e Privacidade (S&P 2014). → Comparação empírica Markov, PCFG, n-grams em senhas 70M Weir, M., Aggarwal, S., de Medeiros, B., & Glodek, B. (2009). Rastreamento de senhas usando Gramática Probabilística Livre de Contexto. Simpósio IEE sobre Segurança e Privacidade (S&P 2009). → Trabalhos de fundação de métodos probabilísticos estruturais (competidor Markov) Wheeler, D.L. (2016). zxcvbn: Estimativa de Força de Senha de Baixo Orçamento. 25o Simpósio de Segurança USENIX. → Confirma a eficácia de n-grams para estimativa realista da força de senha Pasquini, D., Cianfriglia, M., Ateniese, G., & Bernaschi, M. (2021). Redução de Bias na Modelação de Força de Senha do Mundo Real através de Aprendizagem Profunda e Dicionários Dinâmicos. 30o Simpósio de Segurança USENIX. → Comparação quantitativa Markov vs aprendizagem profunda no corpus moderno Hitaj, B., Gasti, P., Ateniese, G., & Perez-Cruz, F. (2019). PassGAN: Uma abordagem de aprendizagem profunda para adivinhar senha. ACNS 2019. → Sucessor Neural de Markov, ponto de comparação para Time2Crack descNeural

    Implementação de código aberto

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

    Fontes de corpus

    RockYou (2009) : 14,3M senhas da falha da rede social RockYou Fui enganado? https://hapibeenpwned.com — ~14 bilhões de credenciais agregadas (Troy Hunt) SecListas : https://github.com/danielmiessler/SecLists — dicionários de referência e listas de palavras

    Fontes da Web citadas no aplicativo Time2Crack

    Springer (capítulo Markov/cracking probabilístico). https://link.springer.com/chapter/10.1007/978-3-3-19-24174-67 → Fonte relacionada em descMarkov (app.js) para a redução efetiva do espaço de pesquisa por priorização estatística.
    Documento gerado para o projeto Time2Crack — última atualização : 2026-04-01 Baseado na implementação em app.js (Markov v2 rank-based) e publicações acadêmicas citadas