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.
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
).
// 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 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.
- Teoría de Conjuntos: Al principio, definimos los conjuntos de caracteres disponibles (minúsculas, mayúsculas, etc.). El "alfabeto" total de la contraseña es la unión de los conjuntos de caracteres que contiene. Si una contraseña tiene minúsculas y números, su alfabeto es el conjunto {a-z} ∪ {0-9}.
-
Combinatoria (Variaciones con Repetición): Una contraseña es una secuencia ordenada de caracteres donde se permite la repetición. El número total de contraseñas posibles de longitud
L
a partir de un alfabeto de tamañoN
se calcula con la fórmula de variaciones con repetición:VR(N, L) = NL
. Este es el cálculo fundamental que determina el "espacio de búsqueda" para un atacante. -
Logaritmos y Teoría de la Información: La fórmula de la entropía,
H = log₂(NL)
, proviene directamente de la Teoría de la Información. La entropía de Shannon mide la cantidad de "sorpresa" o "incertidumbre" en una variable. En nuestro caso, mide cuántos bits de información se necesitan para codificar una contraseña. Una mayor entropía significa mayor incertidumbre para un atacante, y por lo tanto, mayor seguridad.
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.