|
Wedge Rumor Crusher ha pubblicato qualche giorno fa: "L'accesso a Internet con WiFi pubblico metterà a rischio la sicurezza dei conti bancari? L'articolo introduce alcune situazioni nell'uso di HTTPS per la trasmissione cifrata in rete e, a giudicare dalla risposta, ci sono ancora controversie. Man mano che Internet diventa sempre più popolare, l'applicazione si sta diffondendo sempre di più, e alcune questioni di sicurezza di rete attireranno sempre più attenzione da parte dei netizen; qui parleremo di TLS/SSL, che è ciò che spesso chiamiamo HTTPS, dal principio all'applicazione vera e propria per capire cosa sia e quali problemi prestare attenzione nell'uso di HTTPS e tecniche di sicurezza correlate. La cybersecurity è un evento olistico che coinvolge la sicurezza di computer personali, protocolli, trasmissione dati e aziende e siti web di sviluppo software. Spero che, spiegando poco a poco le questioni legate alla sicurezza in futuro, più persone possano comprendere la sicurezza di rete, così da poterla utilizzare in modo più sicuro. L'articolo sarà lungo ed è previsto che venga suddiviso in tre parti per il momento: La prima parte descrive principalmente il principio di HTTPS; La seconda parte descrive principalmente il processo di verifica dei certificati SSL e alcune precauzioni per l'uso. La terza parte presenta alcuni casi di attacchi HTTPS. 1. Cos'è HTTPS?Prima di parlare di HTTPS, parliamo di cosa sia HTTP, che è un protocollo che di solito usiamo quando navighiamo sul web. I dati trasmessi dal protocollo HTTP sono non criptati, cioè in testo chiaro, quindi è molto insicuro trasmettere informazioni private utilizzando il protocollo HTTP. Per garantire che questi dati privati possano essere criptati e trasmessi, Netscape progettò il protocollo SSL (Secure Sockets Layer) per criptare i dati trasmessi dal protocollo HTTP, dando così origine a HTTPS. La versione attuale di SSL è la 3.0, definita nell'RFC 6101 dall'IETF (Internet Engineering Task Force), e successivamente l'IETF ha aggiornato SSL 3.0, risultando in TLS (Transport Layer Security) 1.0, definito nell'RFC 2246. In realtà, il nostro attuale HTTPS è il protocollo TLS, ma poiché SSL è apparso relativamente presto ed è ancora supportato dai browser attuali, SSL è ancora sinonimo di HTTPS, ma che sia TLS o SSL è una cosa del secolo scorso, l'ultima versione di SSL è la 3.0, e TLS continuerà a fornirci servizi di crittografia in futuro. La versione attuale di TLS è la 1.2, definita nell'RFC 5246, e non è ancora ampiamente utilizzata. Per chi è interessato alla storia, puoi consultare il http://en.wikipedia.org/wiki/Transport_Layer_Security, che contiene una descrizione dettagliata di TLS/SSL.
2. HTTPS è sicuro?La risposta è sì, è sicuro. Nelle prossime settimane, Google abiliterà HTTPS per tutti i domini locali nel mondo, gli utenti dovranno solo accedere con il proprio account Google prima di effettuare la ricerca, e tutte le operazioni di ricerca saranno criptate utilizzando il protocollo TLS, vedi: http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Come funziona HTTPSHTTPS richiede una stretta di mano tra il client (browser) e il server (sito web) prima di trasmettere i dati, e le informazioni sulla password di entrambe le parti saranno stabilite durante il processo di handshake. Il protocollo TLS/SSL non è solo un insieme di protocolli di trasmissione criptati, ma anche un'opera d'arte progettata con cura da artisti, utilizzando crittografia asimmetrica, cifratura simmetrica e algoritmi HASH. Una descrizione semplice del processo di stretta di mano è la seguente:
- Il browser invia un insieme di regole di crittografia che supporta al sito web.
- Il sito seleziona un insieme di algoritmi di crittografia e algoritmi HASH da questi e invia le proprie informazioni di identità al browser sotto forma di certificato. Il certificato contiene informazioni come l'indirizzo del sito web, la chiave pubblica di crittografia e l'emittente del certificato.
- Dopo aver ottenuto un certificato del sito web, il browser fa quanto segue:
- Verifica la legittimità del certificato (se l'autorità che lo emitte è legittima, se l'indirizzo del sito web contenuto nel certificato è lo stesso dell'indirizzo visitato, ecc.), se il certificato è fiducioso, verrà visualizzato un piccolo blocco nella barra del browser, altrimenti verrà fornito un messaggio che indica che il certificato non è fidata.
- Se il certificato è affidabile, o se l'utente accetta un certificato non affidabile, il browser genera un numero casuale di password e le cripta con la chiave pubblica fornita nel certificato.
- Il messaggio di stretta di mano viene calcolato utilizzando l'HASH concordato, il messaggio viene criptato con il numero casuale generato, e infine tutte le informazioni generate precedentemente vengono inviate al sito web.
4. Dopo aver ricevuto i dati dal browser, il sito web fa quanto segue: - Usa la tua chiave privata per decifrare la password, usa la password per decifrare il messaggio di handshake inviato dal browser e verifica che l'HASH sia lo stesso di quello inviato dal browser.
- Un messaggio di stretta di mano viene criptato con una password e inviato al browser.
5. Il browser decripta e calcola l'HASH del messaggio di handshake; se è coerente con l'HASH inviato dal server, il processo di handshake termina e tutti i dati di comunicazione saranno criptati dalla password casuale generata dal browser precedente e utilizzando l'algoritmo di crittografia simmetrica.
Qui, il browser e il sito web si inviano un messaggio di handshake criptato e verificano, per assicurarsi che entrambe le parti abbiano ottenuto la stessa password, possano cifrare e decriptare i dati normalmente, effettuando un test per la successiva trasmissione di dati reali. Inoltre, gli algoritmi di crittografia e HASH comunemente usati da HTTPS sono i seguenti: - Algoritmi di crittografia asimmetrica: RSA, DSA/DSS
- Algoritmi di crittografia simmetrica: AES, RC4, 3DES
- Algoritmo HASH: MD5, SHA1, SHA256
Tra questi, l'algoritmo di crittografia asimmetrica viene utilizzato per cifrare la password generata durante il processo di handshake, l'algoritmo di cifratura simmetrica viene impiegato per criptare i dati effettivamente trasmessi e l'algoritmo HASH viene utilizzato per verificare l'integrità dei dati. Poiché la password generata dal browser è la chiave per la crittografia dell'intero dato, viene criptata utilizzando un algoritmo di crittografia asimmetrica durante la trasmissione. L'algoritmo di crittografia asimmetrica genera chiavi pubbliche e private, le chiavi pubbliche possono essere usate solo per criptare i dati, quindi possono essere trasmesse a piacimento, e le chiavi private del sito web vengono usate per decifrare i dati, quindi il sito manterrà la sua chiave privata con molta attenzione per evitare fughe di notizie. Qualsiasi errore durante il processo di handshake TLS può interrompere la connessione criptata, impedendo la trasmissione di informazioni private. È proprio perché HTTPS è molto sicuro che gli attaccanti non trovano da dove iniziare, quindi usano certificati falsi per ingannare i clienti e ottenere informazioni in testo chiaro, ma questi metodi possono essere identificati, di cui parlerò in un articolo successivo. Tuttavia, nel 2010, gli esperti di sicurezza hanno scoperto una vulnerabilità nella gestione del protocollo TLS 1.0: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/, in realtà, questo metodo di attacco chiamato BEAST è stato scoperto dagli esperti di sicurezza già nel 2002, ma non è stato reso pubblico. Microsoft e Google hanno risolto questa vulnerabilità. Vedi: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 La versione semplificata di HTTPS funziona anche in Crittografia Simmetrica rispetto a Crittografia Asimmetrica. |