WPA2 utiliza PBKDF2 para el hashing de contraseñas; está configurado con HMAC / SHA-1 y 4096 iteraciones. El resultado es una cadena de 256 bits. Dado que SHA-1 ofrece solo una salida de 160 bits, PBKDF2 necesita aplicar HMAC / SHA-1 iterado dos veces, para obtener los 256 bits de salida, por lo que esto significa 8192 invocaciones de HMAC / SHA-1. Cada invocación implica dos llamadas elementales a SHA-1 ("llamada elemental" significa "procesamiento de un bloque de 512 bits con la función de compresión SHA-1"), por lo que son 16384 invocaciones de función hash. Una vez que se obtiene la clave dependiente de la contraseña de 256 bits, todavía se necesitan algunos cálculos adicionales para verificar esa clave con respecto a lo que se observó, pero eso es liviano, por lo que ignoramos ese costo aquí (es tan costoso como un par de invocaciones SHA-1 más ). La clave completa de 256 bits debe estar disponible para esa comprobación, por lo que no hay acceso directo aquí: un atacante que ejecute un ataque del diccionario debe pagar el costo de computar 16384 instancias de SHA-1 (más algunos códigos adicionales) por contraseña.
Un atacante con una buena GPU puede esperar mil millones de instancias de SHA-1 por segundo, por lo que podría "probar" 60 miles de contraseñas por segundo, pero eso es suponiendo que tiene una buena , GPU programable, y que el software que utiliza está a la altura. El software de cracking común como Aircrack-ng generalmente será solo para la CPU, lo que le dará el tipo de rendimiento que observe (1500 contraseñas por segundo ).
Suponiendo que puede encontrar un diccionario apropiado (lo que puede ser difícil, como lo observa, cuando el objetivo usa palabras búlgaras), y conocer el método de construcción (como explica: dos palabras, con mayúscula), entonces puede calcular el número de posibles contraseñas (con un diccionario de N palabras, es N2 posibles contraseñas) y una simple división le dará el tiempo necesario para "intentar todos ellos ".
Sin más información sobre las distribuciones de probabilidad de los componentes de contraseña, hay poco más que puede hacer. Esto también muestra que las 4096 iteraciones de PBKDF2 son efectivas para dificultar la vida de los atacantes.
Ahora, ¿hay posibles atajos? Hay un acceso directo potencial , que es que PBKDF2 usa un salt ; es como si no hubiera una función PBKDF2, sino miles de millones de billones de funciones distintas, una por valor de sal. Si varios puntos de acceso usan la misma sal, entonces los atacantes que intentan romper cualquiera de estos puntos de acceso pueden coludir y compartir el esfuerzo, porque las "contraseñas probadas" para un punto de acceso también se aplicarán (de alguna manera) a otros puntos de acceso. En WPA2, la sal para PBKDF2 es el SSID de la red. Por lo tanto, si varios puntos de acceso usan el mismo SSID, entonces transforman la misma contraseña en la misma clave.
Sin embargo, los mensajes reales y la clave de cifrado reales se derivarán no solo de la contraseña cifrada, sino también de los valores de nonce que los puntos de acceso y el cliente de conexión envían como parte de los pasos iniciales del protocolo de enlace. "https://security.stackexchange.com/a/17782/655"> esta respuesta para los punteros). Esto en realidad evita que las precomputaciones sean efectivas. Existe un consejo genérico acerca de no usar un "SSID común" pero, en el caso de WPA2, usar el mismo SSID que muchos otros puntos de acceso no parece provocar ninguna debilidad adicional.
Todo lo anterior se trata de intentar encontrar la contraseña del punto de acceso para descifrar el tráfico, o conectarse al punto de acceso y beneficiarse de sus servicios (es decir, acceso a Internet "gratuito"). Actualmente no se conoce ninguna debilidad en WPA2, por lo que la adivinación de contraseñas es la única ruta de acceso práctica.
Sin embargo, si el verdadero objetivo no es el punto de acceso sino otra máquina que se conecta a ese punto de acceso, entonces pueden aplicarse otros métodos. Por ejemplo, el atacante puede configurar un punto de acceso falso, anunciando el mismo SSID, pero sin requerir ninguna autenticación; es posible (según el sistema operativo y la configuración de la víctima, y la capacidad del usuario humano de "hacer clic" en las ventanas emergentes de advertencia) que la máquina de destino se conectará al punto de acceso falso. En ese momento, el atacante debe proporcionar el servicio de "acceso a Internet", pero también tiene un acceso directo a la máquina de la víctima, lo que le permite probar cualquier explotación remota relevante para esa máquina. Además, esto coloca al atacante en el lugar ideal para probar los ataques Man-in-the-Middle .