MasterSecret espansione in chiavi

5

Sto provando a profondamente a capire i passaggi durante un handshake TLS.

Ho letto questa risposta (che è abbastanza completa), ma ho ancora una domanda su l'utilizzo di MasterSecret , nel frame di un handshake di ECDHE-RSA-AES-GCM-SHA TLS.

Alla fine della stretta di mano, abbiamo usato SHA come PRF per generare il Mastersecret (dalla pre-MS e i numeri casuali). Lo espandiamo per creare key e MAC key . La chiave viene utilizzata per cifrare i messaggi e il tasto MAC per calcolare l'hash (sul messaggio cifrato in modalità GCM). OK.

Ho 2 domande sull'espansione del MasterSecret:

  1. Nella sezione 8: 3 , si dice che creiamo 2 tasti MAC e 2 chiavi. Non è abbastanza sicuro se il client e il server utilizzano la stessa chiave e il medesimo tasto MAC ? (dato che queste chiavi sono generate da nientemeno che da un MasterSecret). Penso che sia un po 'troppo protetto ...

  2. Quando hai MasterSecret, come lo estendi per creare chiavi e chiavi MAC? Dubito che prendiamo solo i primi N byte per la chiave e il resto per il tasto MAC ...

    Inoltre, la frase quando vengono generati i tasti e i tasti MAC, il master secret è usato come fonte di entropia. ( sezione 8: 3 ) mi disturba. È per questo che non sono in grado di capire come espandere le chiavi?

posta EisenHeim 04.09.2015 - 11:41
fonte

1 risposta

3

Q1. Perché due set di materiale chiave?

In section 8:3, they say that we create 2 MAC keys and 2 keys. Isn't that enough safe if the client and the server use the same key and MAC key ? (given that these key are generated from no less than a MasterSecret). I kind of think that it seem a bit overprotected..

No. Questo è fatto per una ragione seria. Ciò rende più difficile l'attacco. Esiste una classe di attacco, in cui rifletti solo ciò che un lato ha detto a se stesso. Questo è chiamato Reflection Attack . E avendo la direzione fissa i tasti, rendi impossibile quella classe di attacco.

Q2. Come tagliare il blocco chiave?

When you have the MasterSecret, how do you expand it to create MAC keys and keys ? I doubt that we just take the first N bytes for the key and the rest for the MAC key

Mi dispiace deluderti, ma è proprio così. Non c'è molta magia qui.

Hai il blocco chiave che è una lunga stringa di ottetti. E poi lo si riduce in 6 parti più piccole.

RFC

Questa è la sezione nella RFC TLS 1.2 :

  client_write_MAC_key[SecurityParameters.mac_key_length]
  server_write_MAC_key[SecurityParameters.mac_key_length]
  client_write_key[SecurityParameters.enc_key_length]
  server_write_key[SecurityParameters.enc_key_length]
  client_write_IV[SecurityParameters.fixed_iv_length]
  server_write_IV[SecurityParameters.fixed_iv_length]

Quindi sono sei parti. E in quell'ordine esatto. Le voci dispari (1, 3, 5) sono per la direzione client_write . Anche le voci (2, 4, 6) sono per la direzione server_write .

OpenSSL

Ecco il bit di ritaglio in OpenSSL:

  • p è il blocco chiave.

Questo viene triturato in:

  • ms , segreto MAC
  • key , chiave di crittografia di massa
  • iv , vettore di inizializzazione

Codice sorgente da t1_enc.c di OpenSSL :

if ((which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
    (which == SSL3_CHANGE_CIPHER_SERVER_READ)) {
    ms = &(p[0]);
    n = i + i;
    key = &(p[n]);
    n += j + j;
    iv = &(p[n]);
    n += k + k;
    exp_label = (unsigned char *)TLS_MD_CLIENT_WRITE_KEY_CONST;
    exp_label_len = TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE;
    client_write = 1;
} else {
    n = i;
    ms = &(p[n]);
    n += i + j;
    key = &(p[n]);
    n += j + k;
    iv = &(p[n]);
    n += k;
    exp_label = (unsigned char *)TLS_MD_SERVER_WRITE_KEY_CONST;
    exp_label_len = TLS_MD_SERVER_WRITE_KEY_CONST_SIZE;
    client_write = 0;
}

Non parlo C troppo bene. Quindi non ho capito.

  • Non capisco l'indicizzazione in p .
  • Non capisco perché selezionano solo metà dei tasti. Ogni fine ha bisogno di entrambi i set. Un set per scrivere all'altro capo. E un set legge cosa ha detto l'altra estremità. - Immagino che il taglio si ripeta altrove.
risposta data 04.09.2015 - 22:02
fonte

Leggi altre domande sui tag