Documentação Técnica v2.0

Especificações do algoritmo híbrido (Matemática + Heurística) e arquitetura Serverless do BP PassGuard.

Arquitetura Privacy-First

Diferente de validadores tradicionais que enviam senhas para um servidor backend, o BP PassGuard opera em modelo 100% Client-Side.

  • Sem Backend: Não há banco de dados ou endpoints API, eliminando riscos de vazamento em trânsito (Man-in-the-Middle) ou repouso.
  • Processamento Local: Todo o cálculo matemático ocorre no navegador do usuário via JavaScript (V8 Engine).
  • Persistência Volátil: O histórico é salvo no `localStorage` do navegador, dando ao usuário total controle sobre seus dados.

1. O Algoritmo de Shannon

A base da pontuação é a fórmula de entropia da informação. Ela mede a "incerteza" matemática da senha baseada no tamanho do pool de caracteres.

Bits = Comprimento × log₂(Pool)

2. Heurística e "Smart Cap"

A matemática pura pode ser enganada (ex: "aaaaaaaa" tem alta entropia matemática se considerado aleatório, mas é péssima na prática). Por isso, implementamos uma camada de Sanidade Heurística.

O sistema aplica penalidades e define um Teto Máximo (Cap) para a nota caso detecte padrões humanos ruins.

Lógica de Penalidades (JavaScript)

// Exemplo simplificado do entropy.js
getPenalties: (password) => {
    let penalty = 0;
    let cap = 999; // Sem limite inicial

    // 1. Dicionário (ex: "123456", "password")
    if (commonPasswords.includes(password)) {
        return { score: 1000, cap: 0 }; // Força nota ZERO
    }

    // 2. Repetições (ex: "eeeeeeee")
    if (/^(.)\1+$/.test(password)) {
        return { score: 1000, cap: 10 }; // Força nota MÁXIMA de 10 bits
    }

    // 3. Padrões de Teclado (ex: "qwerty")
    if (keyboardPatterns.includes(password)) {
        penalty += 50;
        cap = 30; // Limita a categoria "Fraca"
    }

    return { score: penalty, cap: cap };
}

Modelo de Dados (LocalStorage)

O histórico de análises é armazenado no navegador sob a chave bp_passguard_history. Armazenamos apenas metadados, nunca a senha em texto plano.

Estrutura JSON

[
  {
    "id": 1709234001,       // Timestamp único
    "bits": 45.50,          // Pontuação de Entropia
    "label": "Razoável",    // Classificação
    "date": "14/12/2025"    // Data legível
  },
  {
    "id": 1709234055,
    "bits": 12.00,
    "label": "Muito Fraca",
    "date": "14/12/2025"
  }
]