Dove si trova l'hashing utilizzato nell'handshake TLS

0

Comprendo i passaggi di base nell'handshake TLS. La mia domanda è: dove e in che modo l'hashing a senso unico si adatta ai passaggi seguenti? È la chiave di sessione che viene sottoposta a hash? Molti testi menzionano che il "messaggio" originale viene inviato per verificare l'integrità, ma cos'è esattamente questo "messaggio"? Ho esaminato la documentazione di IBM sull'argomento, ma sono ancora confuso su come l'hashing si adatta ai passaggi seguenti. Qualsiasi esempio, mostrato all'interno dei passaggi seguenti, sarà apprezzato.

  1. Il browser si collega al server protetto con TLS (https)
  2. Il browser richiede al server l'identità stessa
  3. Il server invia una copia del suo certificato TLS che include il chiave pubblica del server
  4. Browser controlla la radice del certificato rispetto a un elenco di CA attendibili
  5. Se il browser si fida del certificato, crea, crittografa e invia indietro una chiave di sessione simmetrica utilizzando la chiave pubblica del server
  6. Il server decrittografa la chiave di sessione simmetrica usando la sua chiave privata e rimanda un riconoscimento crittografato con la chiave di sessione a avvia la sessione crittografata
  7. Server e Browser ora crittografa tutti i dati trasmessi con il tasto di sessione
posta 03.06.2018 - 07:06
fonte

2 risposte

3

Ci sono diversi usi delle funzioni di hash all'interno dell'handshake TLS.

  • Creazione del master secret dalle informazioni scambiate nella chiave scambiata, vedere TLS 1.2 sezione 8.1 . Questo non sta usando direttamente la funzione di hash, ma una PRF (funzione pseudo-casuale) viene creata usando gli hash (vedi sezione 5 ).
  • Simile al materiale chiave utilizzato per la crittografia simmetrica e l'HMAC è derivato dall'uso del PRF, vedi sezione 6.3 .
  • E il PRF viene nuovamente utilizzato nel messaggio Terminato per assicurarti che l'handshake TLS non è stato manomesso.
  • In vari luoghi vengono eseguite firme digitali che comportano anche hash. Ad esempio, troverai questi esempi per proteggere il ServerDHParams per lo scambio di chiavi DH ( sezione 7.4.3 ).
  • Un'altra firma viene eseguita in CertificateVerify per assicurarti che il client possieda effettivamente la chiave privata per il certificato del cliente.
  • E naturalmente le firme digitali sono usate nei certificati stessi, quindi gli hash sono coinvolti durante la convalida della catena di certificati .

Una volta terminato l'handshake TLS, troverai nuovamente le funzioni hash utilizzate per HMAC o AE per proteggere i dati dell'applicazione (crittografati) contro le manipolazioni.

    
risposta data 03.06.2018 - 09:19
fonte
1

La RFC TLS1.2 descrive il protocollo di handshake TLS in sezione 7.4 .

Come afferma la RFC, client e server concordano su un algoritmo hash / firma, usato in tutto il protocollo. L'algoritmo viene utilizzato per garantire l'autenticità e l'integrità dei messaggi nel protocollo handshake.

Un esempio di utilizzo dell'algoritmo di hash / firma è la firma del certificato del server ( sezione 7.4.2 ):

If the client provided a "signature_algorithms" extension, then all certificates provided by the server MUST be signed by a hash/signature algorithm pair that appears in that extension.

Inoltre, l'hashing è utilizzato nel messaggio Finito dell'handshake TLS per verificare che lo scambio di chiavi e il processo di autenticazione abbiano avuto esito positivo. Pertanto, l'hash della trascrizione dei messaggi di handshake tra client e server è incluso nel messaggio Finito e deve essere verificato dall'altro lato ( sezione 7.4.2 ).

Ci sono sicuramente più casi d'uso per le funzioni di hash nell'handshake TLS. Sono tutti descritti nella RFC .

    
risposta data 03.06.2018 - 08:44
fonte

Leggi altre domande sui tag