Ataque de la fuerza bruta - Operación integral
Documento de referencia del proyecto Time2Crack
Recipientes: desarrolladores, investigadores de seguridad, usuarios avanzados
Índice
1. Sinopsis
La fuerza bruta es el ataque más fundamental en el cracking de contraseña: consiste en pruebas sistemáticamente todas las combinaciones posibles No hay inteligencia, no heurística — sólo el poder de cálculo crudo contra el tamaño del espacio para viajar.
En Time2Crack, la fuerza bruta juega un doble papel:
2. Antecedentes históricos y académicos
2.1 Origen
La fuerza prima precede al ordenador: el principio de probar todas las combinaciones posibles se utiliza desde las primeras máquinas de encriptación mecánica (Enigma durante la Segunda Guerra Mundial).La bomba de Alan Turing fue, en un sentido amplio, un dispositivo de fuerza cruda obligado por una hipótesis de cunas.
Con el advenimiento de las computadoras, la fuerza de contraseña unix fue formalizada entre los años 70 y 1980:
| Año | Evento |
| --- | -------------- |
| 1979 | Morris & Thompson: Primer artículo académico sobre seguridad de contraseñas Unix, con análisis de fuerza en /etc/passwd |
| 1988 | Morris Worm: primera hazaña de masa usando, entre otras cosas, un diccionario y contraseña de fuerza cruda |
| 1993 | Crack 5.0 (Alec Muffett): primera herramienta pública de cracking por fuerza cruda en Unix |
| 2004 | Ophcrack : tablas de ranura + fuerza cruda en LM/NTLM hashes Windows |
| 2007 | GPU-accelerated cracking (Elcomsoft): first public use of the GPU to accelerate gross force |
| 2012 | Fuente abierta Hashcat: herramienta de referencia, operación GPU máxima |
| 2016 | Hive Systems: Publicación anual de tablas "fuerza bruta por GPU" se convierten en referencia industrial |
2.2 Puntos de referencia
La revolución de la GPU cambió el orden de magnitud de la fuerza cruda. En la CPU, un atacante de la década de 1990 probó ~10,000 MD5/segundo contraseñas. 168.900 millones por segundo — una aceleración de 16 millones de veces en 30 años.
Principales fuentes académicas :- Gosney, J (2012) : primer punto de referencia público multi-GPU sobre LM/NTLM, mostrando 180 GH/s con 8 GPU
- Hive Systems (2025) : tablas anuales calibradas en 12× RTX 4090, citadas por Forbes, CNBC, BBC
- Sprengers, M. (2011) : Tesis de la Universidad Radboud sobre el cracking GPU, formalización matemática
3. Bases de matemáticas: espacio clave y entropía
3.1 Keyspace
Keyspace (keyspace) es el número total de posibles contraseñas para una longitud y tanque dados:
keyspace = charset_size ^ length
Ejemplos:
| Charset | Tamaño | Duración | Keyspace | Valoración |
| -------- | --- | --------- | --------- | --------- |
| dígitos individuales | 10 | 8 | 108 = 100 millones | ~108 |
| Minuscules alone | 26 | 8 | 268 millones | ~2 × 1011 |
| Alphanumeric | 62 | 8 | 628 millones | ~2 × 1014 |
| Full ASCII | 95 | 8 | 958 millones | ~6 × 1015 |
| Full ASCII | 95 | 12 | 9512 - 5.4 × 1023 | ~5 × 1023 |
| Full ASCII | 95 | 16 | 9516 - 4.4 × 1031 | ~4 × 1031 |
3.2 binario entropy
La entropía (medida en bits) es la formulación logarítmica del espacio clave:
entropie = length × log₂(charset_size)
En Time2Crack (función entropy())
function entropy(pw) {
return pw.length * Math.log2(getCharset(pw).size);
}
La relación entre la entropía y el espacio clave:
keyspace = 2^entropie
entropie = log₂(keyspace)
Ejemplos concretos :
| Contraseña | Charset | Duración | Entropy | Keyspace |
| ---------------- | -------- | --------- | --------- | --------- |
| "12345678" | 10 (digits) | 8 | 26.6 bits | 108 |
| "palabra" | 26 (más bajo) | 8 | 37,6 bits | 268 |
| Contraseña1 | 62 (alfanum) | 9 | 53.6 bits | 629 |
| "¡P@ssw0rd!" | 95 (lleno de ASCII) | 9 | 59,3 bits | 959 |
| xQz7@mK9#2pL | 95 (lleno de ASCII) | 12 | 79 bits | 9512 |
3.3 Esperanza Matemática: Keyspace / 2
La fuerza bruta no siempre prueba keyspace Combinaciones enteros, en promedio, encuentra la contraseña a mitad de camino, ya que el objetivo está distribuido equitativamente en el espacio.expectativa matemática por lo tanto, el número de intentos es:
tentatives_attendues = keyspace / 2
Esto es exactamente lo que modelos bruteTime() en Time2Crack:
// "For brute force: expected value is keyspace/2 (uniform random search)"
function bruteTime(keyspace, rate) {
const ls = Math.log(keyspace / 2) - Math.log(rate);
return Math.exp(ls); // = (keyspace / 2) / rate
}
Esta división para 2 es correcta bajo la suposición de que el atacante viaja el espacio linealmente (no-repetitivo). keyspace/2 Intentos.
14. Defensas eficaces
14.1 lado del usuario: longitud y aleatoriedad
La fuerza bruta es derrotada por dos factores combinados:
Duración : cada personaje adicional multiplica el espacio clave porcharset_sizeDe 8 a 12 caracteres (charset 95) multiplica el espacio clave por 954 - 81 millones.
Verdadero azar : un generador criptográficamente seguro (CSPRNG) produce contraseñas que no se benefician de ninguna reducción probabilística. Markov, PCFG y Neural no tienen ventaja sobre una contraseña realmente aleatoria.
Recomendación práctica :
- Administrador de contraseñas + Generación aleatoria ≥ 16 caracteres con flotación completa = fuera de rango de cualquier fuerza prima en un horizonte de vida humano
14.2 lado servidor: algoritmos resistentes
La elección del algoritmo hash multiplica o divide el tiempo de fuerza cruda por factores hasta varios millones :
| Recomendación | Algoritm | Razón |
| . | ----------- | --- |
| Recomendado | Argon2id | Memory-hard, resistente a GPU |
| Recomendado | bcrypt (cost ≥ 12) | Intencionalmente lento, salado |
| Aceptable | scrypt | Memoria dura pero menos estandarizada |
| Inadecuado | SHA-256 salado | Demasiado rápido incluso con sal |
| Peligroso | MD5, SHA-1, NTLM | No salado, extremadamente rápido |
15. Referencias bibliográficas
Academics
Morris, R., " Thompson, K. (1979). Seguridad de contraseña: historial de casos. Comunicaciones de la ACM, 22(11), 594-597. → Artículo fundador sobre seguridad de contraseña de UnixSprengers, M. (2011). Seguimiento de contraseñas basado en GPU (Tesis de maestría). Universidad Radboud Nijmegen. → formalización matemática de la grieta GPU, puntos de referencia sobre la GPU única
Wheeler, D.L. (2016). zxcvbn: Estimación de la fuerza de contraseña de bajo costo. 25o Simposio de Seguridad USENIX. → Datos sobre el espacio clave eficaz (tabla 2: -30% para contraseñas estructuradas)
Dürmuth, M. et al. (2015). Ordenado Markov Enumerator. ESORICS 2015. → Referencia comparativa para terminales probabilistas vs fuerza bruta
Industria
Hive Systems. (2025). 2025 Hive Systems Password Table. https://www.hivesystems.io/password-table → Puntos de referencia anuales de 12× RTX 4090, referencia estándarGosney, J (2012). 8x Nvidia GTX 1080 Puntos de referencia Hashcat. GitHub Gist. → Primer punto de referencia multi-GPU público, referencia histórica
Hashcat. (2024). Parámetros oficiales Hashcat v6.2.6. https://hashcat.net/hashcat/ → Velocidades oficiales por algoritmo, fuente de Time2Crack constantes
NIST SP 800-63B. (2017, actualizado 2024). Directrices de identidad digital: autenticación y gestión del ciclo de vida. → Recomendaciones oficiales sobre la longitud y complejidad de la contraseña
OWASP. (2024). Ficha de almacenamiento de contraseña. https://cheatssheetseries.owasp.org/cheatssheets/Password Storage Cheat Sheet.html → Recomendaciones sobre bcrypt (cost ≥ 12), Argon2id como estándares modernos
Documento generado para el proyecto Time2Crack — última actualización: 2026-04-18 Basado en la implementación en app.js, funciones primasTime(), getCharset(), y monotonicity guard