Pixie funciona aprovechando las debilidades en la generación de los nonces E-S1 y E-S2 que se utilizan para producir el hash de afiliados, como se describe en Pixie Dust Attack .
Los ataques tradicionales atacan las dos mitades del PIN de WPS (PSK1, PSK2) en un ataque en línea, esencialmente forzando la aplicación de todas las opciones posibles para el PIN hasta que se encuentre. Esto se debe hacer en línea contra el objetivo, por lo que lleva mucho tiempo.
El intercambio de WPS implica calcular dos hashes (E-Hash1, E-Hash2) que se derivan de dos nonces (E-S1, E-S2), las claves públicas del inscrito y el registrador (PKE, PKR), las authkey (un valor derivado de Key Key Derivation Key / KDK), y dos mitades del PIN de WPS (PSK1, PSK2). Un atacante conoce los valores de PKE, PKR, E-Hash1 y E-Hash2, ya que el enrutador los proporcionará (o los proporcionará como cliente) y debe encontrar la combinación correcta de E-S1, E -S2, PSK1 y PSK2 para romper el hash sin conexión.
El agrietamiento de las piezas PSK1 y PSK2 es relativamente fácil; solo hay 10,000 valores posibles para PSK1 y 1,000 para PSK2 (el último número es una suma de comprobación) y cada hash es independiente, por lo que solo necesita calcular 11,000 hashes. Esto no lleva mucho tiempo en un sistema moderno.
Sin embargo, el problema es que necesita conocer los dos valores de nonce E-S1 y E-S2. Esto hace que el enfoque de fuerza bruta fuera de línea sea insostenible, ya que estos son valores de 128 bits.
El quid de Pixie Dust Attack es que los nonces E-S1 y E-S2 no se generan de forma segura en muchos enrutadores. Como ejemplo, se sabe que los enrutadores MediaTek solo usan cero para ambos valores. En algunos enrutadores Broadcom, el PRNG utilizado es débil (probablemente un LFSR o algo así como Mersenne Twister) y también se usa para generar el PKE. Al adivinar los posibles valores iniciales de PRNG hasta que encuentre uno que genere el mismo PKE que proporcionó el enrutador, puede generar los valores E-S1 y E-S2 de forma trivial. Los enrutadores Realtek utilizan la marca de tiempo Unix en segundos para generar los valores PKE, E-S1 y E-S2, pero como la generación es rápida, generalmente es el caso que E-S1 = E-S2 = PKE (o E-S1 = E -S2 = PKE + 1 en el caso de que haya marcado un segundo límite) y como conocemos PKE, ahora conocemos E-S1 y E-S2.
Es por esto que el ataque Pixie es tan rápido. En lugar de probar los 11,000 PIN posibles contra el enrutador en vivo (lo cual es lento y puede hacer que el enrutador lo bloquee), captura los valores de hash de WPS y los rompe sin conexión, utilizando puntos débiles en la generación de nonce para que solo tenga que probar los 11,000 valores de PIN contra cada posible par de valores E-S1 y E-S2 adivinados.