Guía del Analizador

Midiendo la Fortaleza Real

Descubre cómo el analizador convierte una simple cadena de texto en una medida concreta de seguridad, usando principios de la matemática discreta.

Paso 1: Identificar el "Alfabeto"

El primer paso es deconstruir la contraseña para ver qué tipos de caracteres contiene. Cada tipo de carácter (minúsculas, mayúsculas, números, símbolos) que se encuentra, se suma a un "conjunto" o "alfabeto" de posibles caracteres.

El tamaño de este alfabeto (N) es la base de toda la fortaleza.

// El algoritmo revisa la contraseña y construye el tamaño del alfabeto.
let alphabetSize = 0;

if (/[a-z]/.test(password)) {
  alphabetSize += 26; // Conjunto de minúsculas
}
if (/[A-Z]/.test(password)) {
  alphabetSize += 26; // Conjunto de mayúsculas
}
if (/[0-9]/.test(password)) {
  alphabetSize += 10; // Conjunto de números
}
if (/[^a-zA-Z0-9]/.test(password)) {
  alphabetSize += 32; // Conjunto de símbolos (ej. OWASP)
}

Paso 2: Calcular la Entropía

La "entropía" es la medida real de la fortaleza de una contraseña. Mide la imprevisibilidad y se expresa en "bits". Cada bit de entropía duplica la dificultad para un atacante.

La fórmula se basa en el tamaño del alfabeto (N) y la longitud de la contraseña (L).

// La entropía se calcula con el logaritmo en base 2 del total de combinaciones.
// Total de Combinaciones = N^L

const length = password.length;
const combinations = Math.pow(alphabetSize, length);
const entropy = Math.log2(combinations);

// Una fórmula simplificada y más eficiente es:
const entropy = length * Math.log2(alphabetSize);

Una entropía de 80 bits o más se considera muy segura para los estándares actuales.

Paso 3: Estimar el Tiempo de Ataque

Para dar una perspectiva del mundo real, calculamos cuánto tiempo tomaría descifrar la contraseña mediante un ataque de fuerza bruta. Esto se hace dividiendo el número total de combinaciones posibles por una tasa de intentos por segundo.

Nuestra herramienta asume una tasa de 10 mil millones (1010) de intentos por segundo, una capacidad realista para un atacante con hardware dedicado.

const guessesPerSecond = 10_000_000_000;
const combinations = Math.pow(alphabetSize, length);
const secondsToCrack = combinations / guessesPerSecond;

// Luego, convertimos los segundos a un formato legible (minutos, horas, años...).

La Matemática Discreta en Acción

El análisis de contraseñas es una aplicación directa y poderosa de la matemática discreta, específicamente en el campo de la Combinatoria y la Teoría de la Información.

En resumen, cada vez que analizas una contraseña, estás aplicando principios de matemática discreta para cuantificar un concepto abstracto como la "seguridad" en un valor numérico y comprensible.