TLS e il suo predecessore, SSL, sono protocolli crittografici per fornire la sicurezza delle comunicazioni (riservatezza e integrità in alcuni casi e non ripudio in altri casi) su una rete.

In TLS unidirezionale, o TLS normale, il certificato X.509 del server è creato da una CA di cui il client può fidarsi quando vuole collegarsi. L’infrastruttura a chiave pubblica (PKI) è responsabile della gestione della fiducia e della distribuzione dei certificati. Le autorità di certificazione (CA) giocano un ruolo molto importante nella PKI. Un certificato X.509 non è altro che alcune informazioni sul server e la chiave pubblica del server che è firmata digitalmente da una CA.

Un server può essere configurato per permettere connessioni da qualsiasi client (come in TLS a senso unico) o può essere configurato per chiedere a qualsiasi client che tenta di connettersi di autenticarsi. Quindi, perché un client si autentichi, è necessario un certificato client. Nell’autenticazione TLS a due vie, alias TLS con autenticazione tramite certificato client, è coinvolto anche il certificato client oltre al certificato del server per rendere più duro il processo di autenticazione. Proprio come un certificato del server, un certificato client contiene informazioni di base sull’identità del cliente, la sua chiave pubblica e la firma digitale di una CA su questo certificato verifica che queste informazioni siano autentiche. Il certificato del client dovrebbe essere firmato da una CA di cui il server si fida ed è ovvio che entrambi i certificati X.509 dovrebbero esistere prima della connessione!

Un modo in cui TLS è abbastanza sicuro quando lo si usa con l’autenticazione, qualcosa che si affronta quando si vuole accedere a Gmail. Quando usi l’interfaccia web di Gmail, usi TLS a senso unico attraverso la funzionalità https del browser oltre alla tua password. Se non usi la tua password, solo tu puoi verificare che sei stato connesso ad un server legittimo ma il server di Gmail non può verificare la tua identità quindi non possiamo dire che la connessione sia sicura. Se Gmail offre un TLS bidirezionale, puoi facilmente connetterti senza inserire la password e la connessione è considerata sicura.

L’intento principale di usare una connessione TLS bidirezionale sarebbe quando un server dovrebbe accettare connessioni TLS solo da un gruppo limitato di client consentiti. Un esempio può essere uno scenario in cui un’organizzazione vuole limitare le connessioni TLS a un server per provenire solo da partner o clienti legittimi dell’organizzazione. Sicuramente l’IP whitelisting per i client non è una buona pratica di sicurezza perché l’IP può essere spoofato.

Per semplificare il processo di handshake TLS a 2 vie, possiamo dire

  1. Un client invia una richiesta di accesso a informazioni protette sul server.

2. Il server presenta il suo certificato X.509 al client.

3. Il client verifica il certificato del server convalidando la firma digitale della chiave pubblica del server usando la chiave pubblica della CA.

4. Se l’ultimo passo ha successo, il client invia il suo certificato al server.

5. Il server verifica il certificato del client. Il server verifica il certificato del client usando lo stesso approccio del passo 3.

6. Se ha successo, il server dà accesso alle informazioni protette al client.

Se è necessario configurare un server web Apache per gestire TLS bidirezionale, consultare questo documento: http://www.robinhowlett.com/blog/2016/01/05/everything-you-ever-wanted-to-know-about-ssl-but-were-afraid-to-ask/

Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.