La differenza tra http e https

Quante volte potresti aver visto sulla barra degli indirizzi, prima del nome di dominio, la sigla “http” o “https”? Magari non te ne sei preoccupato più di tanto, ma questa differenza è sostanziale e assume connotati abbastanza importanti.

Indice

Http

E’ un protocollo di rete utilizzato nei sistemi informatici, è la base della comunicazione dei dati per il www (World Wide Web). In pratica significa che trasferisce dati (testo, immagini, audio, video, ecc.) su www.

Questo protocollo, il più utilizzato a livello applicativo, permette lo scambio di informazioni attraverso regole e istruzioni indispensabili affinché due macchine collegate in rete possano interagire tra di loro.

Fin dall’inizio l’hypertext transfer protocol (http) fu proposto come un’architettura client-server. Ovvero, si parte da un client (generalmente il browser che l’utente utilizza per navigare in Rete) che effettua una determinata richiesta, e un server (classicamente la macchina che ospita il sito web) che la elabora attraverso un host e fornisce una risposta.

Immediatamente il protocollo http si dimostrò più funzionale nello scambio di informazioni sul web. Rispetto ad altri protocolli di rete, come l’FTP per esempio, stabilisce collegamenti di natura stateless (senza stato). Questo significa che le connessioni tra client e server vengono chiuse immediatamente dopo che la singola richiesta è stata soddisfatta. Ciò garantisce un minor impiego di risorse e un minor carico sia del server che del client. Di contro non è possibile mantenere lo stato dell’utente tra una sessione e l’altra (ecco perché stateless), da qui la necessità di ricorrere ad altri sistemi come , ad esempio, i cookie.

La prima versione del protocollo HTTP del 1996, non mancava di imperfezioni e vulnerabilità. Nel tempo si è provato a correggere questi difetti con altre versioni.

HTTP e HTTPS

Che aspetto ha una tipica richiesta http

Una richiesta http è solo una serie di righe di testo che seguono un protocollo. Una richiesta GET potrebbe essere simile alla seguente:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

Non perdere troppo tempo nella comprensione di queste scritte. L’importante è che venga capita la differenza tra questo testo e quello che verrà mostrato più avanti.

Questa sezione di testo, generata dal browser dell’utente, viene inviata su Internet in chiaro, e chiunque monitori la connessione ha la possibilità di leggerla. (Coloro che non hanno familiarità con il protocollo HTTP possono trovare informazioni nella sezione dedicata).

Questo è grosso problema quando si inviano dati sensibili tramite un sito Web. Una password, un numero di carta di credito o qualsiasi altro dato inserito in un modulo, verrebbero intercettati da malfattori.

Https

Http e https sono due varianti dello stesso protocollo, molto utilizzati dai più conosciuti browser, come Google Chrome, Microsoft Edge e Safari.

La principale differenza tra http ed https (la cui s finale sta per Secure) risiede appunto nella maggiore sicurezza che quest’ultima variante offre. Infatti, se nell’ http lo scambio di risorse tra client e server avviene “in chiaro” (ovvero l’informazione che viene diffusa può essere letta da chi decide di intromettersi senza diritto nel passaggio di informazioni), nell’https la comunicazione è protetta grazie all’impiego di determinati certificati (come quello SSL, acronimo di Secure Socket Layer) che garantiscono alcuni aspetti quali l’identità dei dati e la loro riservatezza, la cifratura del traffico e la verifica di integrità del traffico.

Un’altra differenza risiede nell’utilizzo di una differente porta standard. Http usa la porta 80, mentre https utilizza la porta 443.

Se facciamo adesso riferimento all’esempio precedente, invece del testo, un utente malintenzionato vedrebbe un gruppo di caratteri apparentemente casuali. Cioè invece di:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en

vedrebbe qualcosa come:


t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

Perché è meglio usare protocollo https

Dal 2018 Google Chrome, uno dei motori di ricerca più utilizzati al mondo, ha iniziato a segnalare all’utente come “non sicuri” tutti i siti che sono sprovvisti di certificati SSL. Il messaggio è accompagnato da una “i” e da un’icona rossa di avvertimento. La scomparsa della dicitura “sicuro” è, quindi, un monito ad impiegare il protocollo https, che è diventato lo standard per definizione.

Inoltre, Google ha deciso di inserire il protocollo https tra i fattori di ranking del motore di ricerca. Cioè significa che, a parità di autorevolezza e valore, risorse che utilizzano il protocollo https si posizioneranno meglio di quelle che non lo usano.

Dove acquistare un certificato SSL

Il protocollo HTTPS, insieme al certificato SSL, rappresenta lo standard più importante da utilizzare quando si ha intenzione di creare un sito web professionale. Ancora però c’è molta confusione su dove acquistare questi certificati e se propendere per quelli a pagamento oppure quelli gratuiti.

I certificati SSLLet’s Encrypt sono gratuiti e sono forniti da un’autorità garante no profit. Sono ottimi, anche se non garantiscono una protezione completa, e sono usati per gli e-commerce e per altri portali di carattere commerciale dove sono previste transazioni in denaro.

Il certificato SSL a pagamento (Commercial Certificate) è quello assolutamente più raccomandato. L’autenticazione avviene con la validazione del dominio, verificando che la proprietà sia del privato che dell’azienda che lo ha registrato. Inoltre offre un’ulteriore garanzia in caso di violazione dei dati personali.

Per finire possiamo dire che un certificato SSL, rilasciato da un’autorità garante attendibile, migliora sensibilmente la fiducia da parte dei visitatori.

In https, in che modo TLS/SSL crittografa le richieste e le risposte

TLS utilizza una tecnologia chiamata crittografia a chiave pubblica: ci sono due chiavi, una chiave pubblica e una chiave privata, e la chiave pubblica è condivisa con i dispositivi client tramite il certificato SSL del server. Quando un client apre una connessione con un server, i due dispositivi utilizzano la chiave pubblica e privata per concordare nuove chiavi, chiamate chiavi di sessione, per crittografare ulteriori comunicazioni tra di loro.

In questo modo chiunque intercetti le comunicazioni vedrà soltanto una stringa casuale di caratteri, non il testo in chiaro.

Https aiuta ad autenticare i server Web

Verificare che una persona o una macchina sia chi afferma di essere è estremamente importante. In http, non esiste una verifica dell’identità. Si va a fiducia!

Allo stato attuale però, la fiducia è qualcosa che non ci possiamo permettere.

Quando un client apre un canale con un server di origine (ad esempio si naviga su un sito Web), il possesso della chiave privata, che corrisponde alla chiave pubblica nel certificato SSL di un sito Web, dimostra che il server è in realtà l’host legittimo del sito Web. Ciò impedisce o aiuta a bloccare una serie di attacchi possibili in assenza di autenticazione come attacchi sul percorso, dirottamento DNS, dirottamento BGP o spoofing del dominio.

Inoltre, il certificato SSL è firmato digitalmente dall’autorità di certificazione che lo ha emesso, garantendo l’identità del server.