A 4-way-handshake audit tool for cracking
[ \text{PRF}{512}(\text{PMK}, \text{text}, \text{key_data}) = \text{Truncate}{512}\left(\bigoplus_{c=0}^{N-1} \text{HMAC-SHA1}(\text{PMK}, \text{text} || \text{key_data} || \text{chr}(c))\right) ]
- PMK: Es la clave derivada de la contraseña Wi-Fi (Pairwise Master Key). Es el secreto base.
- text: Una cadena fija que indica el propósito de la clave derivada (ejemplo:
"Pairwise key expansion"en WPA2). - key_data: Datos adicionales que incluyen las direcciones MAC del cliente y del punto de acceso, además del Nonce (aleatorio) de ambos.
- chr(c): El contador ( c ), que asegura que cada iteración genere una salida única.
- HMAC-SHA1: Es una función hash basada en el algoritmo SHA-1 y el uso de PMK como clave.
- (\bigoplus_{c=0}^{N-1}) : La concatenación de los resultados HMAC-SHA1 generados en cada iteración.
- N: El número de iteraciones necesarias para generar suficientes bits para obtener 512 bits. Esto depende de que cada iteración genera 160 bits ((20 , \text{bytes})):
[ N = \left\lceil \frac{512}{160} \right\rceil = 4 ]
Por lo tanto, se necesitan 4 iteraciones para cubrir 512 bits.
- (\text{Truncate}_{512}): Una operación que toma únicamente los primeros 512 bits (64 bytes) de la concatenación de los bloques generados.
- Para cada iteración ( c ) (desde ( c = 0 ) hasta ( c = N-1 )):
- Generar: [ \text{HMAC-SHA1}(\text{PMK}, \text{text} || \text{key_data} || \text{chr}(c)) ]
- Concatenar todos los bloques generados.
- Tomar los primeros 512 bits del resultado concatenado.
Este algoritmo se utiliza en el proceso de creación de la Pairwise Transient Key (PTK) en el protocolo WPA2, el cual es fundamental para cifrar las comunicaciones entre un dispositivo y el punto de acceso Wi-Fi.

