KRACK e Keystream

6

Sono un po 'confuso riguardo al keystream. Quando si installa nuovamente la stessa chiave di sessione, il nonce verrà ripristinato e ricominciato.

  • Chiave sessione + Nonce = Keystream?

  • Il Keystream è ora la parte che viene utilizzata per crittografare il testo normale?

Come è possibile decodificare qualcosa? Ho bisogno di un pezzo di testo semplice e di un messaggio crittografato da quello che suggerisco che questo testo in chiaro sia lì per ricavare il keystream?

Ogni singolo pacchetto riceve un nuovo Keystream per la crittografia o il keytream si rinnova dopo un nuovo handshake a 4 vie completo?

    
posta Rene 18.10.2017 - 12:24
fonte

3 risposte

2

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.

    
risposta data 17.05.2018 - 02:16
fonte
0

Guarda questa pagina di wikipedia . Dal momento che stiamo utilizzando una derivata della modalità CTR raffigurata, un reset del contatore è fatale. Ogni pacchetto di dati trasmesso è crittografato con la stessa parte del "keystream".

Quindi, nessuno dei due è la chiave AES recuperata tramite un attacco di testo in chiaro noto, né è possibile derivare immediatamente il flusso di chiavi completo.

Ma forzando la crittografia di molti pacchetti diversi con potenzialmente la stessa (prima) parte del flusso di chiavi (contatore resettato a zero!), abbiamo un attacco in chiaro noto contro le prime parti del flusso di chiavi e può presumibilmente col passare del tempo recupera tutti i bit da esso:

  1. decodifica dal presupposto che sia un pacchetto TCP alcuni bit davanti alla parte 0 del flusso di chiavi (parti costanti dell'intestazione TCP).
  2. pacchetto successivo sei fortunato: decifri di nuovo il pacchetto con i bit già noti del flusso di chiavi e scopri l'inizio del testo della dichiarazione di indipendenza nella codifica latina. Ciò comporterebbe la conoscenza di un'ampia parte del flusso di chiavi.

Solo il principio - ancora non banale, ma abbastanza da contare come "rotto", suppongo.

Vedi anche questa domanda .

    
risposta data 18.10.2017 - 17:48
fonte
0

Oltre a ciò che user1931751 ha già risposto, vorrei aggiungere quanto segue alla tua seconda domanda.

Does every single packet get a new Keystream for encryption or does the keystream renew after a complete new 4-way handshake?

L'handshake a 4 vie ricava una nuova chiave di sessione che porta a un nuovo keytream che non corrisponde a quello precedente in quanto una nuova chiave viene utilizzata per la crittografia (input per la crittografia AES). Negli attacchi KRACK contro l'handshake a 4 vie, la stessa chiave di sessione viene installata due volte. Quindi lì avrai lo stesso keystream. Ma hai chiesto una "stretta di mano a 4-vie" che non è ciò che provoca l'attacco, quindi proverò a spiegare in breve dopo che è stata completata una stretta di mano completa.

Se una chiave di sessione è installata, un nonce (combinato con alcune cose fisse) inizializzato con uno sarà usato come IV (vettore di inizializzazione) per crittografare il primo pacchetto. Questo pacchetto (MPDU) dello standard 802.11 è costituito da più blocchi e la modalità CCM (RFC 3610) è utilizzata per far fronte a questo. Quindi per lo standard 802.11 il nonce è un contatore che viene incrementato di uno per ogni pacchetto. Questo pacchetto composto da pochi blocchi AES utilizzerà questo contatore come vettore di inizializzazione per la propria modalità contatore "interno" come specificato in RFC 3610. Pertanto, ogni blocco e ogni pacchetto devono crittografare nella parte successiva del keytream corrente determinato dalla chiave di sessione corrente e dal vettore di inizializzazione 802.11 (quello costituito da nonce, indirizzo MAC ecc.).

    
risposta data 15.02.2018 - 22:01
fonte

Leggi altre domande sui tag