L'handshake SSL / TLS è protetto dai tentativi di downgrade del messaggio Finito, di un hash firmato e autenticato del master secret e di tutti i precedenti messaggi di handshake.
Considera un cliente che utilizza un insieme di suite di crittografia forti e deboli che si connette a un server che supporta lo stesso set di crittografie. Di solito, una o entrambe le parti preferiscono una cifratura strong e la connessione verrà stabilita in modo sicuro.
Quali funzionalità avrebbe bisogno di un utente malintenzionato per eseguire attivamente il downgrade dell'handshake su uno dei pacchetti di crittografia deboli? Suppongo che la creazione della chiave principale tramite RSA o (EC) DH non possa essere interrotta dall'attaccante.
Penso che debbano essere in grado di fare almeno quanto segue:
- Calcola un valore hash valido per l'handshake modificato (ad esempio con alcune suite di crittografia rimosse o modificate in valori non validi), senza conoscere il master secret e probabilmente anche senza conoscere il valore hash originale (a seconda dello schema di crittografia utilizzato)
- Esegui le modifiche dell'hash ai testi cifrati (con testi in chiaro sconosciuti), poiché il messaggio Finito è crittografato
- Modifica il tag di autenticazione crittografato per il messaggio Finito (poiché SSL / TLS utilizza l'autenticazione-quindi-crittografia) in modo che sia valido per l'hash dell'handshake modificato, anche in questo caso senza conoscere il valore originale.
"Quanto è rotto" ha una funzione di hash, "quanto malleabile" deve essere un codice per abilitare tale attacco? C'è qualche possibilità oggi o nel prossimo futuro (considerando gli attacchi esistenti su MD5, SHA1, RC4, ecc.) Di un attacco che diventa possibile per una delle suite di cifratura legacy esistenti, ad eccezione forse delle versioni di esportazione dove potrebbe essere la chiave master brute-forzato dall'attaccante?
O è sicuro lasciare le suite di crittografia "moderatamente sicure" abilitate nel client e fare affidamento sulla protezione dell'handshake?