Mi è capitato di dover verificare quanto sia sicuro il certificato digitale installato su un server che eroga servizi web. Non verificare se il certificato sia valido, cosa che è garantita dal processo di autenticazione attraverso la CA (Certificato Authority), ma capire quali protocolli il sito utilizza per implementare la sicurezza delle comunicazioni. Ma andiamo con ordine.
Cosa significa SSL?
Brevemente, con il termine SSL (Secure Socket Layer) viene indicato un protocollo attraverso il quale è possibile gestire la compressione e la cifratura delle informazioni nelle comunicazioni su Internet.
Il protocollo è stato realizzato da Netscape (chi si ricorda di Netscape metta il dito qui sotto!) nella seconda metà degli anni ’90 per consentire di gestire in modo sicuro sul Web le comunicazioni che riguardavano transazioni economiche su siti di commercio elettronico e di home banking, password, dati personali.
Nella pila protocollare SSL si pone tra il livello applicativo e il trasporto.
Applicazione | HTTP |
Sicurezza | SSL |
Trasporto | TCP |
Rete | IP |
Data Link | PPP |
Fisico | ADSL, xDSL, Fibra |
In dettaglio, SSL consente di:
- – autenticare il server;
- – mettere in comunicazione due socket in modo sicuro;
- – cifrare le informazioni trasmesse in modo da renderle segrete e
- – negoziare i parametri di sicurezza tra client e server.
Attualmente lo sviluppo del protocollo SSL si è arrestato alla versione 3 e da questo si è derivato il protocollo TLS (Transport Layer Security) che ad oggi è alle versione 1.3. I due protocolli non sono in grado di interoperare quindi i sistemi possono essere in grado di utilizzare entrambi i protocolli.
Ad oggi i certificati digitali sono TLS anche se il termine comunemente utilizzato per indicarli rimane SSL.
Come verificare il protocollo utilizzato da un domino/server?
A questa domanda ho trovato una serie di risposte su Google che riportano al sito ssllabs.com. Ho trovato il sito è molto interessante perché consente di analizzare quali protocolli di sicurezza vengono utilizzati da un server o un dominio fornendo un report dettagliato e il grado di validità generale.
Il report contiene anche dei link tramite i quali è possibile avere una spiegazione chiara del tipo di vulnerabilità riscontrata e di come questa venga utilizzata per rendere insicura la comunicazione tra client e server. Un esempio di questa è data dalla vulnerabilità OpenSSL Padding Oracle vuln. (CVE-2016-2107) che viene ben spiegata nell’articolo raggiungibile attraverso il link presente nel report.
Si possono verificare siti come google.com e notare che questo, secondo ssllabs.com, raggiunge un livello di sicurezza pari a B

mentre altri siti come finecobank.com arrivano al livello A

o meglio ancora intesasanpaolo.com raggiunge A+

Anche il browser è importante
Il sito ssllabs.com consente anche di verificare il livello di sicurezza raggiunto dal vostro browser. Questo aspetto è molto importante perché il massimo livello di sicurezza può essere offerto dal server a patto che anche il client consenta l’utilizzo dei protocolli al pari livello. Se il browser non è in grado di gestire un protocollo TLS si dovrà scendere al livello SSL v3 e questo rende la comunicazione molto più vulnerabile.
Conclusioni
La sicurezza, a mio avviso, è il tema più importante da prendere in considerazione quando si offrono servizi internet. Il tema sicurezza ovviamente è molto ampio e non si conclude con questa analisi ma certamente è un punto che non può essere trascurato.
Le analisi offerte da ssllabs.com sono particolarmente utili per assicurare che l’impianto SSL utilizzato sia valido e, al momento, non ho trovato altre soluzioni interessanti quanto ssllabs.com.
Il sistema ssllabs.com offre anche delle API per integrare le funzioni offerte dal sito nel proprio impianto. Alcuni progetti sono pubblici e recuperabili da GitHub all’indirizzo https://github.com/ssllabs