Che differenza c’è tra HTTP e HTTPS?

Non hai ben capito qual è la differenza tra HTTP e HTTPS? Eccoti allora spiegato che differenza c’è tra HTTP e HTTPS.

Indice

Che differenza c’è tra HTTP e HTTPS?

Che cos’è l’HTTP?

L’HTTP, dall’acronimo inglese di hypertext transfer protocol (pronunciato àipertecst trànsfer pròtocol, in italiano protocollo di trasferimento ipertesto), è un protocollo a livello di applicazione nella suite di protocolli Internet usato come principale sistema per la trasmissione di informazioni sul World Wide Web (si pronuncia uorld uàid ueb). In poche parole, l’HTTP è un protocollo di rete sviluppato per consentire di trasferire delle informazioni sul Web. Tramite l’HTTP è possibile, ad esempio, visitare un certo sito Internet, caricare e/o scaricare dei file, vedere un video su YouTube, fare clic su un link per accedere ad un contenuto disponibile online, o anche soltanto inviare dei dati da un dispositivo ad un altro (per esempio, tra due computer).
A causa di come è stato concepito, il protocollo HTTP non implementa alcuna forma di protezione e quindi le comunicazioni tra il browser utilizzato e i siti il cui indirizzo comincia con http sono facilmente intercettabili da parte di chiunque dato che le comunicazioni avvengono “in chiaro”, a differenza di quanto avviene invece con l’HTTPS.

Come funziona l’HTTP

L’HTTP funziona attraverso due principali tipologie di messaggi, ossia le richieste HTTP e le risposte HTTP. Una richiesta HTTP viene generata dal browser quando un utente interagisce con un certo elemento presente sul Web. Ad esempio, se un utente clicca su un collegamento presente in una pagina di un sito, il browser usato da quell’utente invierà in automatico una serie di richieste del tipo HTTP GET per poter visualizzare il contenuto a cui rimanda quel collegamento. Oppure, un altro esempio ancora, potrebbe essere quello riguardo un utente che fa una ricerca su Google e tra i risultati della ricerca compare un determinato articolo che gli interessa. Se l’utente clicca su quell’articolo, il browser usato dall’utente creerà e spedirà automaticamente una serie di richieste HTTP in modo tale da ottenere le informazioni necessarie per poter visualizzare la pagina contenente l’articolo richiesto.
Tutte le richieste inviate da un qualsiasi browser, a prescindere dal dispositivo utilizzato per farle, vengono ricevute da un certo server il quale provvederà poi ad elaborare ed inviare delle opportune risposte HTTP.

Esempio di una richiesta HTTP e di una risposta HTTP

Una richiesta HTTP non è altro che una serie di linee di testo inviate secondo il protocollo HTTP. Ecco, ad esempio, come potrebbe essere una richiesta HTTP GET che viene fatta per visualizzare la pagina principale di Wikipedia una volta fatto clic su questo collegamento:

GET /wiki/Pagina_principale HTTP/1.1
Host: it.wikipedia.org
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: it
Connection: Keep-Alive

Questo testo, generato in automatico dal browser scelto dall’utente, viene spedito attraverso Internet ad un appropriato server (in questo caso al server di Wikipedia). Il problema dell’HTTP è proprio questo, ovvero il testo viene spedito proprio così e quindi, chiunque capace di monitorare tale connessione, può essere in grado leggerlo. Questo comportamento dell’HTTP è un problema serio, specialmente se l’utente tramite il sito visitato invia delle informazioni sensibili quali una password, i numeri di una carta di credito, o dei dati compilati attraverso un certo form.
Quando il server preposto riceve una richiesta HTTP, questo provvederà in automatico a creare una risposta HTTP simile alla seguente:

HTTP/1.1 200 OK
Date: Fri, 22 Feb 2019 10:50:37 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 22208
Connection: keep-alive
Server: mw1215.eqiad.wmnet
Content-language: it
Content-Encoding: gzip
Last-Modified: Fri, 22 Feb 2019 08:46:20 GMT
Age: 20548
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Vary: Accept-Encoding,Cookie,Authorization
[...]

<!DOCTYPE html>
<html class="client-nojs" lang="it" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Wikipedia, l'enciclopedia libera</title>
[...]
</body>
</html>

Se un sito adopera l’HTTP anziché l’HTTPS tutte le richieste e le risposte scambiate tra un client e il server di quel sito potrebbero quindi esser lette da chiunque sia capace di monitorare la sessione in corso.

Che cos’è l’HTTPS?

L’HTTPS (talvolta indicato anche come HTTP over TLS o HTTP over SSL), dall’acronimo inglese di hypertext transfer protocol secure (pronunciato àipertecst trànsfer pròtocol sechiùr, in italiano protocollo di trasferimento ipertesto sicuro), è un protocollo usato per offrire una comunicazione sicura su una rete di computer ed è ampiamente utilizzato su Internet. In altre parole, l’HTTPS è un protocollo di rete concepito per offrire maggior sicurezza quando ci si trova su Internet e non è altro che l’HTTP con l’aggiunta di un certificato digitale. Tramite l’HTTPS è possibile, ad esempio, proteggere meglio la propria privacy quando si naviga su un certo sito o garantire l’integrità dei dati scambiati durante il transito di una comunicazione avvenuta mediante il proprio browser preferito.
Da notare che l’HTTPS non è un protocollo nuovo: è stato infatti creato nel 1994 dalla Netscape ed è stato il primo protocollo ad utilizzare i certificati digitali. Da allora, è diventato lo standard globale di riferimento per tutte le comunicazioni sicure che avvengono su Internet.

Come funziona l’HTTPS

Nell’HTTPS il protocollo di comunicazione viene crittografato utilizzando il TLS o, in precedenza, l’SSL. In altri termini, l’HTTPS permette di creare un canale di comunicazione criptato attraverso lo scambio di certificati digitali – che possono essere gratuiti o a pagamento – in modo tale da garantire l’identità delle parti coinvolte oltre che la riservatezza dei dati inviati. In pratica, quando ci si connette ad un sito web dotato di un certificato digitale valido, il browser mostra nella barra degli indirizzi un’icona con un lucchetto chiuso e all’inizio dell’URL appare https:// (invece di http:// come avviene nel caso di un sito che utilizza il protocollo HTTP). Questo indica che la connessione in uso è protetta e che si sta navigando su un sito che utilizza il protocollo HTTPS.
Per accedere ad un certo sito mediante il protocollo HTTPS occorre soltanto che il certificato del sito visitato sia valido. L’utilizzo del protocollo HTTPS non è perciò una scelta che può essere fatta dall’utente che visita il sito preso in considerazione ma è una cosa che dipende da chi gestisce quel determinato sito. Se il certificato digitale di un sito è scaduto, all’inizio dell’URL apparirà un https barrato (ovvero https) ad indicare, cioè, che il certificato usato da quel sito non è più valido, con tutti i rischi che questo possa comportare.

Esempio di una richiesta HTTPS e di una risposta HTTPS

Una richiesta HTTPS viene fatta esattamente come nel caso del protocollo HTTP solamente che questa verrà crittografata in modo asimmetrico grazie all’uso del TLS (o dell’SSL). In sostanza, all’atto pratico, invece di una cosa simile come nell’esempio precedente…

GET /wiki/Pagina_principale HTTP/1.1
Host: it.wikipedia.org
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: it
Connection: Keep-Alive

…verrà visualizzato qualcosa di simile a questo:

t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ==

Lo stesso discorso avverrà anche per quanto riguarda la risposta HTTPS fatta dal server. Quindi, invece di una risposta simile come nell’esempio precedente…

HTTP/1.1 200 OK
Date: Fri, 22 Feb 2019 10:50:37 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 22208
Connection: keep-alive
Server: mw1215.eqiad.wmnet
Content-language: it
Content-Encoding: gzip
Last-Modified: Fri, 22 Feb 2019 08:46:20 GMT
Age: 20548
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Vary: Accept-Encoding,Cookie,Authorization
[...]

<!DOCTYPE html>
<html class="client-nojs" lang="it" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Wikipedia, l'enciclopedia libera</title>
[...]
</body>
</html>

…verrà visualizzato qualcosa del tipo:

QHOCKWai4eSmmpM3SzyvISCYwGH3Pxro/IUZMCmwDnM4T+6IIWRVmB0HgjUNF/JeJeiNim5H1wvRiDVV0kYpmDY9gHREsGXx3+1WSmqcbbzpHZUZ

Appare perciò evidente come, tramite l’utilizzo del protocollo HTTPS, sia praticamente impossibile riuscire a risalire al contenuto di qualsiasi richiesta o risposta fatta via Internet.

Quali caratteristiche aggiunge HTTPS al protocollo HTTP?

L’utilizzo del protocollo HTTPS presenta numerosi vantaggi. Innanzitutto crittografa tutte le informazioni inviate al sito web di turno. Questo aiuta a proteggere i dati sensibili (come un nome utente, una password o i numeri di una carta di credito) da criminali informatici, hacker o altri malintenzionati che potrebbero essere in agguato online per cercare di rubare tali preziose informazioni. In secondo luogo, l’HTTPS rende la navigazione su Internet molto più riservata, non consentendo così a nessuno (compresi agli ISP) di vedere ciò che si fa online. Ad esempio, se stai facendo delle ricerche, acquistando un prodotto, o inserendo dei dati sensibili (come informazioni mediche o credenziali di accesso), non vorrai certamente che altre persone possano venire a conoscenza di tali informazioni private. L’HTTPS serve proprio ad evitare questo, ovvero a garantire la riservatezza in tutte quelle situazioni in cui è richiesto un certo grado di sicurezza (come, ad esempio, quando si fa una transazione economica sul sito della propria banca).
Bisogna però precisare che se un sito web supporta solo l’HTTP non significa, di solito, che si deve per forza evitare di visitare quel sito. Ad esempio, un sito che riguarda le previsioni meteo e che utilizza ancora il protocollo HTTP potrebbe essere benissimo visitato senza correre alcun rischio.

Conclusioni

Dunque, mentre l’HTTP rappresenta un protocollo di rete standard che non offre alcuna forma di protezione, l’HTTPS è invece un protocollo concepito per garantire che i dati trasmessi tra un utente e un certo sito rimangano privati in maniera tale che questi non possano essere intercettati da terzi. Molti siti web utilizzano perciò il protocollo HTTPS per trasmettere i dati degli utenti in modo sicuro evitando, così, che questi non possano essere visualizzati o manomessi da nessuno se non dal destinatario previsto (ossia, nella maggior parte dei casi, dal sito visitato). Arrivati comunque a questo punto dovresti aver finalmente capito che differenza c’è tra HTTP e HTTPS.