HTTPS - HTTPS

Hypertext Transfer Protocol Secure ( HTTPS ) è un'estensione dell'Hypertext Transfer Protocol (HTTP). Viene utilizzato per la comunicazione sicura su una rete di computer ed è ampiamente utilizzato su Internet. In HTTPS, il protocollo di comunicazione è crittografato utilizzando Transport Layer Security (TLS) o, in precedenza, Secure Sockets Layer (SSL). Il protocollo viene quindi indicato anche come HTTP su TLS o HTTP su SSL .

Le principali motivazioni per HTTPS sono l' autenticazione del sito web a cui si accede e la protezione della privacy e dell'integrità dei dati scambiati durante il transito. Protegge dagli attacchi man-in-the-middle e la crittografia bidirezionale delle comunicazioni tra un client e un server protegge le comunicazioni da intercettazioni e manomissioni . L'aspetto dell'autenticazione di HTTPS richiede che una terza parte fidata firmi i certificati digitali lato server . Storicamente, questa era un'operazione costosa, il che significava che le connessioni HTTPS completamente autenticate venivano solitamente trovate solo su servizi di transazione di pagamento sicuri e altri sistemi di informazioni aziendali protetti sul World Wide Web . Nel 2016, una campagna della Electronic Frontier Foundation con il supporto degli sviluppatori di browser Web ha portato il protocollo a diventare più diffuso. HTTPS è ora utilizzato più spesso dagli utenti Web rispetto all'HTTP non sicuro originale, principalmente per proteggere l'autenticità della pagina su tutti i tipi di siti Web; conti sicuri; e per mantenere private le comunicazioni dell'utente, l'identità e la navigazione web.

Panoramica

URL che inizia con lo schema HTTPS e l' etichetta del nome di dominio WWW

Lo schema URI ( Uniform Resource Identifier ) HTTPS ha una sintassi di utilizzo identica allo schema HTTP. Tuttavia, HTTPS segnala al browser di utilizzare un livello di crittografia aggiuntivo di SSL/TLS per proteggere il traffico. SSL/TLS è particolarmente adatto per HTTP, poiché può fornire una certa protezione anche se solo un lato della comunicazione è autenticato . Questo è il caso delle transazioni HTTP su Internet, dove in genere viene autenticato solo il server (dal client che esamina il certificato del server ).

HTTPS crea un canale sicuro su una rete non sicura. Ciò garantisce una protezione ragionevole da intercettazioni e attacchi man-in-the-middle , a condizione che vengano utilizzate suite di crittografia adeguate e che il certificato del server sia verificato e attendibile.

Poiché HTTPS esegue il piggyback HTTP interamente su TLS, l'intero protocollo HTTP sottostante può essere crittografato. Ciò include l'URL della richiesta (quale particolare pagina Web è stata richiesta), i parametri di query, le intestazioni e i cookie (che spesso contengono informazioni identificative sull'utente). Tuttavia, poiché gli indirizzi dei siti Web e i numeri di porta fanno necessariamente parte dei protocolli TCP/IP sottostanti , HTTPS non può proteggere la loro divulgazione. In pratica questo significa che anche su un server web correttamente configurato, gli intercettatori possono dedurre l'indirizzo IP e il numero di porta del server web, e talvolta anche il nome di dominio (es. www.example.org, ma non il resto dell'URL) che con cui un utente sta comunicando, insieme alla quantità di dati trasferiti e alla durata della comunicazione, ma non al contenuto della comunicazione.

I browser Web sanno come fidarsi dei siti Web HTTPS in base alle autorità di certificazione preinstallate nel loro software. Le autorità di certificazione vengono in questo modo considerate attendibili dai creatori di browser Web per fornire certificati validi. Pertanto, un utente dovrebbe fidarsi di una connessione HTTPS a un sito Web se e solo se tutte le seguenti condizioni sono vere:

  • L'utente si fida che il software del browser implementi correttamente HTTPS con autorità di certificazione correttamente preinstallate.
  • L'utente si fida che l'autorità di certificazione garantisca solo per i siti Web legittimi.
  • Il sito Web fornisce un certificato valido, il che significa che è stato firmato da un'autorità attendibile.
  • Il certificato identifica correttamente il sito web (ad esempio, quando il browser visita " https://example.com ", il certificato ricevuto è correttamente per "example.com" e non per qualche altra entità).
  • L'utente confida che il livello di crittografia del protocollo (SSL/TLS) sia sufficientemente sicuro contro gli intercettatori.

HTTPS è particolarmente importante su reti non sicure e reti che possono essere soggette a manomissione. Le reti non sicure, come i punti di accesso Wi-Fi pubblici , consentono a chiunque sulla stessa rete locale di annusare i pacchetti e scoprire informazioni sensibili non protette da HTTPS. Inoltre, è stato osservato che alcune reti WLAN gratuite e a pagamento manomettono le pagine Web impegnandosi nell'iniezione di pacchetti per pubblicare i propri annunci su altri siti Web. Questa pratica può essere sfruttata in modo dannoso in molti modi, ad esempio iniettando malware nelle pagine Web e rubando le informazioni private degli utenti.

HTTPS è importante anche per le connessioni sulla rete Tor , poiché i nodi Tor dannosi potrebbero altrimenti danneggiare o alterare i contenuti che li attraversano in modo non sicuro e iniettare malware nella connessione. Questo è uno dei motivi per cui la Electronic Frontier Foundation e il Tor Project hanno avviato lo sviluppo di HTTPS Everywhere , incluso in Tor Browser.

Man mano che vengono rivelate ulteriori informazioni sulla sorveglianza di massa globale e sui criminali che rubano informazioni personali, l'uso della sicurezza HTTPS su tutti i siti Web sta diventando sempre più importante, indipendentemente dal tipo di connessione Internet utilizzata. Anche se i metadati sulle singole pagine visitate da un utente potrebbero non essere considerati sensibili, se aggregati possono rivelare molto sull'utente e compromettere la privacy dell'utente.

La distribuzione di HTTPS consente anche l'uso di HTTP/2 (o del suo predecessore, l'ormai deprecato protocollo SPDY ), che è una nuova generazione di HTTP progettata per ridurre i tempi di caricamento, le dimensioni e la latenza delle pagine.

Si consiglia di utilizzare HTTP Strict Transport Security (HSTS) con HTTPS per proteggere gli utenti da attacchi man-in-the-middle, in particolare lo stripping SSL .

HTTPS non deve essere confuso con l' HTTP protetto (S-HTTP) utilizzato di rado specificato in RFC 2660.

Utilizzo nei siti web

Ad aprile 2018, il 33,2% dei primi 1.000.000 di siti Web di Alexa utilizza HTTPS come impostazione predefinita, il 57,1% dei 137.971 siti Web più popolari di Internet ha un'implementazione sicura di HTTPS e il 70% dei caricamenti di pagina (misurato da Firefox Telemetry) utilizza HTTPS.

Integrazione del browser

La maggior parte dei browser visualizza un avviso se riceve un certificato non valido. I browser più vecchi, quando si collegavano a un sito con un certificato non valido, presentavano all'utente una finestra di dialogo che chiedeva se voleva continuare. I browser più recenti visualizzano un avviso in tutta la finestra. I browser più recenti mostrano anche le informazioni di sicurezza del sito in modo prominente nella barra degli indirizzi . I certificati di convalida estesi mostrano la persona giuridica sulle informazioni del certificato. La maggior parte dei browser visualizza anche un avviso per l'utente quando visita un sito che contiene una combinazione di contenuti crittografati e non crittografati. Inoltre, molti filtri Web restituiscono un avviso di sicurezza quando si visitano siti Web vietati.

La Electronic Frontier Foundation , ritenendo che "In un mondo ideale, ogni richiesta web potrebbe essere impostata su HTTPS per impostazione predefinita ", ha fornito un componente aggiuntivo chiamato HTTPS Everywhere per Mozilla Firefox , Google Chrome , Chromium e Android , che abilita HTTPS per impostazione predefinita per centinaia di siti web utilizzati di frequente.

Sicurezza

La sicurezza di HTTPS è quella del TLS sottostante, che in genere utilizza chiavi pubbliche e private a lungo termine per generare una chiave di sessione a breve termine , che viene quindi utilizzata per crittografare il flusso di dati tra il client e il server. I certificati X.509 vengono utilizzati per autenticare il server (e talvolta anche il client). Di conseguenza, sono necessarie autorità di certificazione e certificati a chiave pubblica per verificare la relazione tra il certificato e il suo proprietario, nonché per generare, firmare e amministrare la validità dei certificati. Sebbene ciò possa essere più vantaggioso rispetto alla verifica delle identità tramite una rete di fiducia , le divulgazioni della sorveglianza di massa del 2013 hanno attirato l'attenzione sulle autorità di certificazione come un potenziale punto debole che consente attacchi man-in-the-middle . Una proprietà importante in questo contesto è la segretezza in avanti , che garantisce che le comunicazioni crittografate registrate in passato non possano essere recuperate e decifrate qualora in futuro vengano compromesse chiavi o password segrete a lungo termine. Non tutti i server Web forniscono la segretezza di inoltro.

Affinché HTTPS sia efficace, un sito deve essere completamente ospitato su HTTPS. Se alcuni contenuti del sito vengono caricati su HTTP (script o immagini, ad esempio), o se solo una determinata pagina che contiene informazioni sensibili, come una pagina di accesso, viene caricata su HTTPS mentre viene caricato il resto del sito su HTTP semplice, l'utente sarà vulnerabile ad attacchi e sorveglianza. Inoltre, i cookie su un sito servito tramite HTTPS devono avere l' attributo secure abilitato. Su un sito che contiene informazioni sensibili, l'utente e la sessione verranno esposti ogni volta che si accede a quel sito con HTTP anziché HTTPS.

Tecnico

Differenza da HTTP

Gli URL HTTPS iniziano con "https://" e utilizzano la porta 443 per impostazione predefinita, mentre gli URL HTTP iniziano con "http://" e utilizzano la porta 80 per impostazione predefinita.

HTTP non è crittografato e quindi è vulnerabile agli attacchi man-in-the-middle e di intercettazione , che possono consentire agli aggressori di accedere agli account dei siti Web e alle informazioni sensibili e modificare le pagine Web per iniettare malware o pubblicità. HTTPS è progettato per resistere a tali attacchi ed è considerato sicuro contro di essi (ad eccezione delle implementazioni HTTPS che utilizzano versioni deprecate di SSL).

Livelli di rete

HTTP opera al livello più alto del modello TCP/IP: il livello dell'applicazione ; così come il protocollo di sicurezza TLS (che opera come sottolivello inferiore dello stesso livello), che crittografa un messaggio HTTP prima della trasmissione e decrittografa un messaggio all'arrivo. A rigor di termini, HTTPS non è un protocollo separato, ma si riferisce all'uso del normale HTTP su una connessione SSL/TLS crittografata .

HTTPS crittografa tutti i contenuti dei messaggi, comprese le intestazioni HTTP e i dati di richiesta/risposta. Ad eccezione del possibile attacco crittografico CCA descritto nella sezione delle limitazioni di seguito, un utente malintenzionato dovrebbe al massimo essere in grado di scoprire che è in corso una connessione tra due parti, insieme ai loro nomi di dominio e indirizzi IP.

Configurazione del server

Per preparare un server Web per accettare connessioni HTTPS, l'amministratore deve creare un certificato di chiave pubblica per il server Web. Questo certificato deve essere firmato da un'autorità di certificazione attendibile affinché il browser Web lo accetti senza preavviso. L'autorità certifica che il titolare del certificato è l'operatore del server web che lo presenta. I browser Web sono generalmente distribuiti con un elenco di certificati di firma delle principali autorità di certificazione in modo che possano verificare i certificati firmati da loro.

Acquisizione di certificati

Esistono numerose autorità di certificazione commerciali che offrono certificati SSL/TLS a pagamento di diversi tipi, inclusi i certificati di convalida estesa .

Let's Encrypt , lanciato nell'aprile 2016, fornisce un servizio gratuito e automatizzato che fornisce certificati SSL/TLS di base ai siti Web. Secondo la Electronic Frontier Foundation , Let's Encrypt renderà il passaggio da HTTP a HTTPS "facile come impartire un comando o fare clic su un pulsante". La maggior parte degli host web e dei provider cloud ora sfrutta Let's Encrypt, fornendo certificati gratuiti ai propri clienti.

Usa come controllo di accesso

Il sistema può essere utilizzato anche per l' autenticazione del client al fine di limitare l'accesso a un server web agli utenti autorizzati. Per fare ciò, l'amministratore del sito in genere crea un certificato per ogni utente, che l'utente carica nel proprio browser. Normalmente il certificato contiene il nome e l'indirizzo e-mail dell'utente autorizzato e viene automaticamente controllato dal server ad ogni connessione per verificare l'identità dell'utente, potenzialmente senza nemmeno richiedere una password.

In caso di chiave segreta (privata) compromessa

Una proprietà importante in questo contesto è la perfetta segretezza in avanti (PFS). Il possesso di una delle chiavi segrete asimmetriche a lungo termine utilizzate per stabilire una sessione HTTPS non dovrebbe rendere più semplice derivare la chiave della sessione a breve termine per poi decrittografare la conversazione, anche in un secondo momento. Lo scambio di chiavi Diffie-Hellman (DHE) e lo scambio di chiavi Diffie-Hellman della curva ellittica (ECDHE) sono nel 2013 gli unici schemi noti per avere quella proprietà. Nel 2013, solo il 30% delle sessioni di Firefox, Opera e Chromium Browser lo utilizzava e quasi lo 0% delle sessioni Safari e Microsoft Internet Explorer di Apple . TLS 1.3, pubblicato nell'agosto 2018, ha abbandonato il supporto per i cifrari senza segretezza in avanti. A partire da febbraio 2020, il 96,6% dei server Web intervistati supporta una qualche forma di segretezza in avanti e il 52,1% utilizzerà la segretezza in avanti con la maggior parte dei browser.

Un certificato può essere revocato prima che scada, ad esempio perché è stata compromessa la segretezza della chiave privata. Le versioni più recenti dei browser più diffusi come Firefox , Opera e Internet Explorer su Windows Vista implementano l' Online Certificate Status Protocol (OCSP) per verificare che non sia così. Il browser invia il numero di serie del certificato all'autorità di certificazione o al suo delegato tramite OCSP (Online Certificate Status Protocol) e l'autorità risponde, dicendo al browser se il certificato è ancora valido o meno. La CA può anche emettere un CRL per informare le persone che questi certificati sono revocati.

Limitazioni

La crittografia SSL (Secure Sockets Layer) e TLS (Transport Layer Security) può essere configurata in due modalità: semplice e reciproca . In modalità semplice, l'autenticazione viene eseguita solo dal server. La versione reciproca richiede che l'utente installi un certificato client personale nel browser Web per l'autenticazione dell'utente. In entrambi i casi, il livello di protezione dipende dalla correttezza dell'implementazione del software e dagli algoritmi crittografici in uso.

SSL/TLS non impedisce l'indicizzazione del sito da parte di un web crawler e in alcuni casi l' URI della risorsa crittografata può essere dedotto conoscendo solo la dimensione della richiesta/risposta intercettata. Ciò consente a un utente malintenzionato di avere accesso al testo in chiaro (il contenuto statico disponibile pubblicamente) e al testo crittografato (la versione crittografata del contenuto statico), consentendo un attacco crittografico .

Poiché TLS opera a un livello di protocollo inferiore a quello di HTTP e non conosce i protocolli di livello superiore, i server TLS possono presentare solo un certificato per una particolare combinazione di indirizzo e porta. In passato, ciò significava che non era possibile utilizzare l' hosting virtuale basato sul nome con HTTPS. Esiste una soluzione chiamata Server Name Indication (SNI), che invia il nome host al server prima di crittografare la connessione, sebbene molti vecchi browser non supportino questa estensione. Il supporto per SNI è disponibile da Firefox 2, Opera 8, Apple Safari 2.1, Google Chrome 6 e Internet Explorer 7 su Windows Vista .

Dal punto di vista architettonico:

  • Una connessione SSL/TLS è gestita dalla prima macchina frontale che avvia la connessione TLS. Se, per qualsiasi motivo (instradamento, ottimizzazione del traffico, ecc.), questa macchina frontale non è il server delle applicazioni e deve decifrare i dati, è necessario trovare soluzioni per propagare le informazioni o il certificato di autenticazione dell'utente al server delle applicazioni, che deve sapere chi sta per essere collegato.
  • Per SSL/TLS con autenticazione reciproca, la sessione SSL/TLS è gestita dal primo server che avvia la connessione. In situazioni in cui la crittografia deve essere propagata lungo server concatenati, la gestione del timeout della sessione diventa estremamente difficile da implementare.
  • La sicurezza è massima con SSL/TLS reciproco, ma sul lato client non è possibile terminare correttamente la connessione SSL/TLS e disconnettere l'utente se non attendendo la scadenza della sessione del server o chiudendo tutte le applicazioni client correlate.

Un sofisticato tipo di attacco man-in-the-middle chiamato SSL stripping è stato presentato alla Blackhat Conference del 2009 . Questo tipo di attacco vanifica la sicurezza fornita da HTTPS modificando il https:collegamento in un http:collegamento, sfruttando il fatto che pochi utenti Internet digitano effettivamente "https" nell'interfaccia del browser: raggiungono un sito sicuro facendo clic su un collegamento e quindi sono ingannati nel pensare che stanno usando HTTPS quando in realtà stanno usando HTTP. L'aggressore comunica quindi in chiaro con il client. Ciò ha portato allo sviluppo di una contromisura in HTTP chiamata HTTP Strict Transport Security .

HTTPS ha dimostrato di essere vulnerabile a una serie di attacchi di analisi del traffico . Gli attacchi di analisi del traffico sono un tipo di attacco del canale laterale che si basa su variazioni nei tempi e nelle dimensioni del traffico per dedurre le proprietà del traffico crittografato stesso. L'analisi del traffico è possibile perché la crittografia SSL/TLS modifica il contenuto del traffico, ma ha un impatto minimo sulle dimensioni e sui tempi del traffico. Nel maggio 2010, un documento di ricerca di ricercatori di Microsoft Research e dell'Università dell'Indiana ha scoperto che i dati utente sensibili dettagliati possono essere dedotti da canali secondari come le dimensioni dei pacchetti. I ricercatori hanno scoperto che, nonostante la protezione HTTPS in diverse applicazioni web di alto profilo e top di gamma nel settore sanitario, fiscale, degli investimenti e della ricerca web, un intercettatore potrebbe dedurre le malattie/farmaci/interventi chirurgici dell'utente, il suo/ il suo reddito familiare e segreti di investimento. Sebbene questo lavoro abbia dimostrato la vulnerabilità di HTTPS all'analisi del traffico, l'approccio presentato dagli autori ha richiesto un'analisi manuale e si è concentrato specificamente sulle applicazioni web protette da HTTPS.

Il fatto che la maggior parte dei siti Web moderni, inclusi Google, Yahoo! e Amazon, utilizzino HTTPS causa problemi a molti utenti che cercano di accedere agli hot spot Wi-Fi pubblici, perché una pagina di accesso all'hot spot Wi-Fi non viene caricata se l'utente tenta di aprire una risorsa HTTPS. Diversi siti Web, come neverssl.com e nonhttps.com , garantiscono che rimarranno sempre accessibili tramite HTTP.

Storia

Netscape Communications ha creato HTTPS nel 1994 per il suo browser web Netscape Navigator . In origine, HTTPS veniva utilizzato con il protocollo SSL . Poiché SSL si è evoluto in Transport Layer Security (TLS), HTTPS è stato formalmente specificato da RFC 2818 nel maggio 2000. Google ha annunciato nel febbraio 2018 che il suo browser Chrome avrebbe contrassegnato i siti HTTP come "Non sicuri" dopo luglio 2018. Questa mossa era per incoraggiare il sito web proprietari di implementare HTTPS, come uno sforzo per rendere il World Wide Web più sicuro.

Guarda anche

Riferimenti

link esterno