In realtà l'articolo non dice che il client SmartScreen utilizza SSLv2; dice semplicemente che il server che i contatti SmartScreen sarebbero felici di accettare le connessioni in entrata usando il protocollo SSLv2. Sarebbe sorprendente se SmartScreen utilizzasse effettivamente SSLv2: la maggior parte plausibilmente, Microsoft ha riutilizzato il proprio codice esistente per un client SSL e tale codice ha SSLv3 + per impostazione predefinita. L'uso di SSLv2 implicherebbe uno sforzo supplementare senza alcun guadagno.
Inoltre, la maggior parte di ciò che viene detto sulla sicurezza di SSLv2 (in questo articolo o altrove) è coperto da un pesante strato di FUD . SSLv2 ha problemi , sufficienti a garantire di non usarlo (specialmente dal momento che SSLv3 e TLS sono disponibili), ma non così terribile di quanto generalmente suggerito. Vedi ad esempio questa pagina ; si afferma che:
- Message integrity compromised. The SSLv2 message authentication uses the MD5 function, and is insecure.
- Man-in-the-middle attack. There is no protection of the handshake in SSLv2, which permits a man-in-the-middle attack.
- Truncation attack. SSLv2 relies on TCP FIN to close the session, so the attacker can forge a TCP FIN, and the peer cannot tell if it was a legitimate end of data or not.
- Weak message integrity for export ciphers. The cryptographic keys in SSLv2 are used for both message authentication and encryption, so if weak encryption schemes are negotiated (say 40-bit keys) the message authentication code uses the same weak key, which isn’t necessary.
Il primo punto è decisamente FUD. È una reazione istintiva: "MD5? BAD BAD BAD!". È infondato. Sono non che dice che MD5 è solido; ma sostengo che il controllo di integrità in SSLv2 non è così facile da sconfiggere.
Il secondo punto è, nel migliore dei casi, confuso e fuorviante. Gli "attacchi man-in-the-middle" a cui si fa riferimento sono i seguenti: in SSL (v2, v3 + ...), sia il client che il server possono supportare diversi pacchetti di crittografia; il client invia l'elenco di suite che supporta e il server ne sceglie uno. Con SSLv2, un utente malintenzionato che è in grado di eseguire un MitM può modificare l'elenco inviato dal client per forzare il client e il server a utilizzare una specifica suite di crittografia (all'interno dell'insieme di suite supportate da entrambi) , ovviamente). L'alterazione non viene rilevata in seguito (mentre, in SSLv3 +, verrà rilevata alla fine dell'handshake). Quindi, il ragionamento va, SSLv2 è debole perché l'utente malintenzionato può forzare client e server a utilizzare una "suite di crittografia debole" (ad esempio una con chiavi a 40 bit). Ma può? In effetti, l'attaccante può forzare l'uso di una suite di crittografia che sia il client che il server erano già pronti ad accettare - e QUESTA è la debolezza. Quello che rompe l'attacco è l'aggiornamento ottimistico a suite di cifratura più potenti quando disponibili; ma la debolezza reale si verifica quando client e server accettano di utilizzare chiavi a 40 bit.
Il quarto punto è più o meno lo stesso: si dice che se una chiave è debole e viene utilizzata per due utilizzi, la rottura della chiave consente di attaccare i due usi. Ma la vera debolezza qui sta usando una chiave debole.
Solo il terzo punto è proprio vero: un utente malintenzionato può forzare una connessione chiusa e le macchine non possono sapere se la chiusura è stata intesa dal peer. Questo è un problema serio con HTTP / 1.0 senza attributo Content-Length ma non con altri protocolli, incluso HTTP come viene usato al giorno d'oggi.
Riepilogo: SSLv2 è "rotto", ma non tanto quanto si dice. No, una connessione SSLv2 non può essere decodificata istantaneamente da un utente malintenzionato. E personalmente ritengo altamente improbabile che il client SmartScreen utilizzi SSLv2; non avrebbe molto senso.
(Nessuno dei precedenti dice nulla riguardo ai problemi di privacy con SmartScreen.)