Session Key + Nonce = Keystream?
Sì, il keystream è una funzione della chiave e del nonce, in senso matematico (stessa chiave + combinazione nonce produce lo stesso keystream):
keystream = F(key, nonce)
... dove F
è la funzione di generazione di chiavi del codice di flusso (spesso chiamata semplicemente codifica del flusso). Pensa a F
come alla scatola nera in cui si svolge tutta la magia oscura crittografica-ogni volta che gli dai una chiave segreta e un nonce pubblico, produrrà un output molto lungo che sembra in pratica casuale a qualcuno che non conosce la chiave, ma quale altra parte che conosce la stessa chiave segreta può ricrearla semplicemente usando la stessa combinazione chiave + nonce.
The Keystream is now the part which is used to encrypt the plain text?
Sì, ordinandoli insieme XOR:
ciphertext = plaintext XOR keystream
Oppure, espandendo la definizione di keystream
:
ciphertext = plaintext XOR F(key, nonce)
How is it possible to decrypt anything? Do I need a piece of plain text and an encrypted message from what I suggest this plain text is in there to then derive the keystream?
Poiché 0 XOR x = x
e x XOR x = 0
per tutto x
, l'equazione precedente implica questo:
plaintext = ciphertext XOR F(key, nonce)
Quindi per decodificare il testo cifrato, il destinatario deve solo avere la stessa chiave e nonce che sono stati usati per crittografarlo. Pensa a F
, ancora una volta, come una scatola nera compatta che riproduce lo stesso keystream data la stessa chiave e nonce che sono stati usati per crittografare.
Does every single packet get a new Keystream for encryption or does the keystream renew after a complete new 4-way handshake?
Ogni pacchetto nella stessa sessione è crittografato con la stessa chiave, ma con un nonce diverso; questo significa che in una operazione corretta, viene utilizzato un nuovo keytream per ogni pacchetto. Un contatore di pacchetti incrementali viene utilizzato per i nonces. L'attacco consiste nell'implementazione ingannevole per reimpostare il contatore di pacchetti sul suo valore iniziale senza reimpostare la chiave. Ciò fa sì che la vittima cripta più messaggi con la stessa chiave e nonce, e quindi con lo stesso keystream.