La fuerza bruta gira alrededor de adivinar el tipo de caracteres en la cadena. Asumamos una contraseña con 5 caracteres en las siguientes clases:
- letras inglesas en minúsculas (26)
- letras mayúsculas en inglés (26)
- Dígitos del 0 al 9 (10)
Eso nos da un total de 62 opciones para cada posición, lo que significa:
62 x 62 x 62 x 62 x 62 = 916 132 832
916 132 832 posibles combinaciones. Ahora vamos a agregar un carácter más:
62 x 62 x 62 x 62 x 62 x 62 = 56 800 235 584
Aumenta logarítmicamente con cada carácter agregado. En este caso, no estamos contando símbolos que lo convertirían en un salto aún más pronunciado. En lugar de necesitar 10 horas para adivinar una contraseña de 7 caracteres, puede necesitar 40 días para adivinar una contraseña de 8 caracteres.
Cuando estás adivinando una contraseña por medio de fuerza bruta, por lo general no sabes la longitud o las clases involucradas, por lo que también debes probar los símbolos (y, con suerte, no los caracteres acentuados). Incluso con la capacidad de procesamiento actual, en una computadora de escritorio, el tiempo que se tarda en probar todas estas combinaciones suele ser demasiado. (Publiqué más información sobre descifrado de contraseñas aquí si está interesado).
Hashear una contraseña más veces aumentará el tiempo consumido por ronda, por ejemplo, en lugar de necesitar 1 segundo por contraseña, tomaría 1.5 (de nuevo, esto es solo un ejemplo), por lo que mitiga el ataque de manera efectiva. Sin embargo, también agrega consumos de recursos al sistema, en un servicio ocupado puede ser lo suficientemente grande como para aceptar el riesgo de implementar un mecanismo de autenticación menor.