Pixie funziona sfruttando le debolezze nella generazione dei nonce E-S1 e E-S2 che sono usati per produrre l'hash degli iscritti, come descritto nel Pixie Dust Attack .
Gli attacchi tradizionali attaccano le due metà del PIN WPS (PSK1, PSK2) in un attacco online, in pratica brute-forzando tutte le opzioni possibili per il PIN fino a quando non viene trovato. Questo deve essere fatto online contro il target, quindi ci vuole molto tempo.
Lo scambio WPS implica il calcolo di due hash (E-Hash1, E-Hash2) derivati da due nonce (E-S1, E-S2), le chiavi pubbliche dell'iscritto e del registrar (PKE, PKR), il authkey (un valore derivato dalla Key Derivation Key / KDK) e due metà del PIN WPS (PSK1, PSK2). I valori PKE, PKR, E-Hash1 ed E-Hash2 sono conosciuti da un utente malintenzionato poiché il router te li fornisce (o li stai fornendo come client) e devi trovare la combinazione corretta di E-S1, E -S2, PSK1 e PSK2 per interrompere l'hash offline.
Il crack delle parti PSK1 e PSK2 è relativamente semplice; ci sono solo 10.000 valori possibili per PSK1 e 1.000 per PSK2 (l'ultimo numero è un checksum) e ciascun hash è separato, quindi è necessario calcolare 11.000 hash. Questo non richiede molto tempo su un sistema moderno.
Tuttavia, il problema è che è necessario conoscere i due valori nonce E-S1 e E-S2. Questo rende l'approccio bruteforce offline insostenibile, poiché si tratta di valori a 128 bit.
Il punto cruciale del Pixie Dust Attack è che gli effetti E-S1 ed E-S2 non vengono generati in modo sicuro in molti router. Ad esempio, i router MediaTek sono noti per utilizzare solo zero per entrambi i valori. In alcuni router Broadcom, il PRNG utilizzato è debole (probabilmente un LFSR o qualcosa come Mersenne Twister) e viene anche utilizzato per generare il PKE. Indovinando i valori seme PRNG possilbe fino a quando non ne trovi uno che genera lo stesso PKE fornito dal router, è possibile generare banalmente i valori E-S1 ed E-S2. I router Realtek utilizzano il timestamp Unix in secondi per generare i valori PKE, E-S1 ed E-S2, ma poiché la generazione è veloce, in genere accade che E-S1 = E-S2 = PKE (o E-S1 = E -S2 = PKE + 1 nel caso in cui ha spuntato oltre un secondo limite) e poiché conosciamo PKE, ora conosciamo E-S1 ed E-S2.
Questo è il motivo per cui l'attacco di Pixie è così veloce. Invece di provare 11.000 possibili PIN contro il router live (che è lento e potrebbe causare il blocco del router), acquisisce i valori dell'hash WPS e li interrompe offline, utilizzando i punti deboli della generazione nonce in modo che debba solo provare 11.000 valori PIN contro ogni possibile coppia di valori E-S1 ed E-S2.