II.

Rendere sicure le connessioni web

Ci sono diversi “strati” di responsabilità nel funzionamento di una rete e questi vengono rappresentati nell'Open Systems Interconnection model (OSI)- I vari livelli includono:

  • Il livello fisico della rete, il quale sta alla base della rete stessa. Questo livello si occupa dell'attuale trasmissione fisica dei dati, il che significa che il suo compito è quello di fare in modo che se il mittente manda un 1 il destinatario riceve un 1. Il livello fisico può trasmettere i dati per esempio attraverso cavi (ottici) leggeri. È necessario che determini se il traffico può essere inviato in entrambe le direzioni allo stesso tempo, come si stabilisce la connessione e così via.

  • Il livello di collegamento dati ha il compito di rilevare e correggere gli errori come anche quello di confezionare i dati in pacchetti chiamati frame. Si tratta di un guardiano che sorveglia l'effettiva entrata dei dati nella rete. Definisce anche a quale indirizzo hardware sono destinati i dati. Può trattarsi per esempio di diverse interfacce di rete all'interno dello stesso computer.

  • Il livello di rete ha il compito di indirizzare i dati alla macchina del destinatario nella rete. Si tenga presente che la rete può essere connessa ad un'altra rete e potrebbe non utilizzare lo stesso protocollo di comunicazione. Il livello di rete passa i dati al livello di trasporto.

  • Il livello di trasporto gestisce la connessione tra il nodo di partenza (i pezzi fisici che costituiscono una rete) e il nodo finale. Definisce anche come si gestisce la connessione, se i pacchetti si suppone che arrivino in un certo ordine e se si richiede il rinvio di un pacchetto in caso non arrivi. Il livello di trasporto gestisce anche la capacità di trasmissione, in modo che i nodi più veloci non sovraccarichino i più lenti.

  • Il livello della sessione gestisce come si stabilisce e si mantiene una connessione.

  • Il livello di presentazione gestisce per esempio la codificazione necessaria affinché computer dotati di diversi metodi di rappresentare internamente i dati possano comunicare in un modo che sia comprensibile ad entrambi i nodi. Il livello di presentazione gestisce in alcuni casi anche la criptazione, per esempio quando si naviga su internet su un sito sicuro.

  • Il livello applicativo gestisce il livello dell'effettivo protocollo in uso. Per esempio in un browser per il web il protocollo HTTP definisce come l'applicazione fa una richiesta per una pagina web.

I sette livelli del modello OSI (Open Systems Interconnection)
I sette livelli del modello OSI (Open Systems Interconnection)

Ogni bit di informazione inviata, per esempio la pagina web di questo corso, passa attraverso il livello di rete (chiamato “network stack” o pila di rete). Il sito del corso utilizza il TLS o sicurezza del livello di trasporto (l'SSL dell'immagine riportata sopra è stato quasi del tutto sostituito dal TLS), che è un modo di criptare i dati in modo da impedire ai livelli inferiori di sbirciare all'interno dei pacchetti per visualizzare i dati. Se il sito di questo corso non utilizzasse il TLS, i vostri dati verrebbero trasmessi in chiaro attraverso tutti i livelli e attraverso tutti i computer che partecipano alla trasmissione dei dati. Nel peggiore dei casi può trattarsi di decine di nodi. Tutti quei computer possono in teoria visualizzare e rubare i dati.

Note

Per quanto possa far piacere sapere che il sito di questo corso utilizza il TLS per garantire la sicurezza, cosa succederebbe se i dati in questione non fossero i contenuti del corso ma dati personali confidenziali relativi al proprio conto in banca o alla propria salute? Come ci si può fidare dei nodi attraverso i quali i nostri dati vengono trasmessi se non si può nemmeno sapere chi li opera? Scopriamolo.

Rendere sicure le connessioni web

Quando si mandano e ricevono dati attraverso internet lo si fa molto spesso attraverso un browser per il web. I browser sicuri utilizzano un protocollo chiamato TLS (transport layer security) per proteggere il traffico tra il browser che utilizziamo per accedere ad internet (il cliente) e il server al quale inviamo dati o dal quale riceviamo dati (per esempio il server di un sito).

Si può verificare di essere protetti dal TLS guardando l'indirizzo sulla barra del browser che si sta utilizzando e assicurandosi che compaia il simbolo di un lucchetto accanto al nome corretto del dominio. Se non vediamo un lucchetto accanto alla URL non si è protetti per mezzo di criptazione.

Una lente di ingrandimento che mostra il lucchetto nella barra dell'indirizzo di un browser
Una lente di ingrandimento che mostra il lucchetto nella barra dell'indirizzo di un browser

Come livello di sicurezza di rete, il TLS utilizza dei protocolli criptografici per autenticare, verificare e fornire uno scambio sicuro di comunicazioni criptate a partire dal browser fino al server di destinazione, proteggendo i contenuti dei pacchetti di dati dall'essere esposti ai livelli di rete inferiori e ai nodi terzi che trasmettono i dati lungo la strada.

I protocolli TLS gestiscono lo scambio delle chiavi di criptazione in un modo sicuro. Ci si ricorderà che la chiave di criptazione è ciò che garantisce la confidenzialità e verifica l'integrità della comunicazione (messaggio) che è stata inviata.

I browser che utilizzano il TLS cercano di proteggerci verificando la validità del certificato del server di un sito web e che il certificato corrisponda al nome del dominio del website (la URL). Se il certificato del server non è valido o se viene impiegato su un altro sito, il browser ci avverte che non siamo protetti. In questo caso un messaggio appare sullo schermo mettendoci in guardia contro un certificato non valido, che potrebbe significare per esempio che un aggressore ha inserito un suo proprio certificato al posto di quello di Google.

Alcuni siti permettono che ci si connetta ad essi anche attraverso il protocollo non sicuro HTTP. Ciò significa che tutti i dati inviati tra il proprio browser ed il server di quel sito possono venir spiati da chiunque controlli uno qualsiasi dei nodi attraversati dai dati.

Gli attacchi al TLS

Tuttavia fare semplicemente affidamento sul simbolo del lucchetto non è sufficiente. Chiunque può creare un certificato che viene utilizzato per dire al browser quale criptazione utilizzare per una connessione.

Un aggressore può tentare di indurci a utilizzare il suo sito invece dell'originale con semplici trucchetti come quello di cambiare l'indirizzo URL del sito rendendola molto simile a quella di un sito originale. Ciò avviene per esempio cambiando la lettera minuscola L con il numero 1. In quasi tutti i font si assomigliano abbastanza per poter ingannare un utente se non si fa bene attenzione. Anche questi siti possono fare uso di criptazione, quindi il simbolo del lucchetto non è sufficiente a garantire la nostra sicurezza. Se si riceve un messaggio che contiene un link, si può essere indotti ad accedere ad un sito attraverso di esso. Un buon modo per evitare questo tipo di sostituzione della URL è quello di digitare l'indirizzo noi stessi invece di cliccare sul link che si è ricevuto.

Un attacco man-in-the-middle (MITM) è un tipo di attacco per cui l'aggressore si interpone tra te e il server, decriptando il nostro traffico, archiviandolo e criptandolo di nuovo prima di inoltrarlo al server. Si tratta di un attacco semplice se non si usa la criptazione. Il modo in cui il TLS scambia le chiavi e verifica il server è pensato per provare a proteggerci da questi tipi di attacchi. Tuttavia se si ignorano i messaggi di avvertimento riguardanti siti non sicuri, un attacco man-in-the-middle rimane possibile.

Note
Mani che tengono un tablet con l'icona che indica che un sito web non è sicuro
Mani che tengono un tablet con l'icona che indica che un sito web non è sicuro

Consigli utili per verificare la sicurezza di rete del browser e di un sito web:

Controllare sempre la validità del certificato cercando il simbolo del lucchetto nella barra dell'indirizzo. Fare in modo di non ignorare gli avvertimenti che ci mostra il browser. Se il browser dice che il certificato del server è sospetto, non usare quel sito.

È importante notare che il TLS e altri protocolli di sicurezza come l'SSL non sono pensati solo per la comunicazione tra il browser per il web e i server dei vari website. Attualmente possono venir usati e di fatto vengono usati anche in altri tipi di applicazioni come i client di posta elettronica, i servizi cloud e le app per telefonia mobile. Ciò è importante perché sempre di più i dati che inviamo e riceviamo su internet viaggiano attraverso app di telefonia mobile o il cloud. Determinare il grado di sicurezza di queste comunicazioni è un po' più complicato, come vedremo più in là in questa sezione.

Utilizzare un VPN come protezione

Come ci si può proteggere dal venir spiati su internet o dagli attacchi man-in-the-middle? Un ottima soluzione è l'uso di un VPN (virtual private network). Un VPN cripta i propri dati e li indirizza dal nostro computer ad un nodo intermedio noto e di fiducia, il quale decripta i dati e li inoltra fino al nodo di destinazione.

Si può pensare a un VPN come ad un rivestimento aggiuntivo che cripta i contenuti (il rivestimento originale dei dati) a partire dal nodo del proprio computer e una volta giunto al nodo di uscita, decripta l'involucro esterno e permette ai dati originali di continuare il proprio viaggio normalmente. Ciò impedisce per esempio che una rete Wi-Fi ostile possa spiare la nostra comunicazione.

Note

Per quanto non raccomandabile a causa degli inerenti problemi di sicurezza, se si usa una connessione wifi pubblica, un VPN è un elemento di sicurezza aggiuntivo indispensabile. Come regola generale, se mai ci si connette ad un wifi pubblico come quello di un caffè con internet libero, ci si assicuri di disattivare la condivisione dei file sul proprio dispositivo e di "dimenticare la rete" nelle impostazioni di rete dopo aver lasciato il luogo. Ciò impedirà che ci si riconnetta automaticamente a queste reti senza accorgersene e senza aver preso le dovute precauzioni.

Un esempio di soluzione VPN è una app sul proprio telefono cellulare o istallata su un dispositivo fisico alla periferia della propria rete di fiducia (per esempio il router della rete interna di un'azienda). Se attivati entrambi questi tipi di implementazioni rendono sicure le comunicazioni nascondendole dai livelli di rete sottostanti e contemporaneamente anche dai nodi che gestiscono il traffico.

Una rete che mostra che la connessione è protetta da VPN
Una rete che mostra che la connessione è protetta da VPN

Bisogna tuttavia essere consapevoli del fatto che una volta che il traffico criptato a mezzo di VPN esce dal nodo del fornitore del servizio di VPN prosegue normalmente il suo viaggio verso il nodo destinatario. Perciò se non si sta utilizzando un protocollo di sicurezza di rete come il TLS o la criptazione end-to-end (vedi il capitolo 3.1), il traffico risulta disponibile per ogni nodo sulla rotta rimasta da percorrere.

Un VPN può anche essere impiegato per nascondere l'origine del proprio traffico e far sembrare che provenga dal nodo d'uscita del VPN. Questa funzione può essere utilizzata per aggirare restrizioni geografiche o nascondere il proprio traffico da reti potenzialmente ostili. I VPN possono anche essere utilizzati per nascondere le comunicazioni da governi ostili che cercano di spiare i cittadini del proprio paese. Un VPN riesce a criptare e camuffare l'obiettivo della comunicazione fino a che la connessione non arriva ad un nodo di uscita che può trovarsi in un altro paese.

Una soluzione VPN viene spesso impiegata per connettere reti separate. Ciò avviene spesso quando si vuole estendere una rete tra le diverse sedi di un'azienda. Anche se le diverse reti separate non sono fisicamente connesse, un VPN può fare in modo che le reti appaiano come una rete unica. Il traffico a destinazione interna viene indirizzato attraverso una connessione VPN criptata ad un nodo di uscita, che in questo caso si trova alla periferia dell'altra rete.

Note

Un VPN non è la soluzione giusta in tutti i casi. Se si ha un VPN attivo sul proprio telefono cellulare e si usa quest'ultimo per collegare il proprio laptop a internet, al contrario di quanto si possa pensare, la sicurezza della connessione del proprio laptop non viene garantita dal VPN. Il telefono agisce da router e non impiegherà il tunnel VPN per stabilire una connessione di collegamento, anche se tutte le applicazioni del telefono utilizzano il VPN.

In questo tipo di casi è meglio attivare il VPN sul laptop.

La sicurezza nelle app e nei servizi di cloud

Secondo un modello tradizionale i dati si trovano su un qualche computer chiamato server ed esiste una persona che gestisce il server e la sua sicurezza. L'origine di molte pratiche di cybersecurity, come il controllo degli accessi e la gestione dei log risalgono agli inizi dell'era dei computer quando i dispositivi erano più semplici e tutti i dati avevano una sede locale.

Negli anni ottanta e novanta, la commercializzazione e l'ampio consumo di personal computer ha spostato la responsabilità sui consumatori per quanto riguarda la sicurezza dei loro computer, anche comunemente detti “endpoint” nel gergo delle aziende. Di solito ciò comportava installare un programma antivirus. Al giorno d'oggi sappiamo che questo non è affatto sufficiente sopratutto a livello di cybersecurity aziendale. Se mai i lavoratori di un'azienda lavorano in remoto, inclusi viaggi di lavoro, è come minimo buona pratica offrire regolarmente corsi di aggiornamento sui protocolli di base in ambito di cybersecurity.

Attualmente endpoint come le postazioni di lavoro, i telefoni cellulari e i tablet non vengono utilizzati in modo rigido o per il lavoro o per l'uso privato. Sussiste invece un intrecciarsi di questi scopi per quanto riguarda l'uso dei dispositivi ed i contenuti archiviati in essi. Dove si trovano i dati è ancora meno chiaro. Ciò rende più complicato capire dove vengono effettuati i controlli di sicurezza per quando riguarda le app che usiamo quotidianamente.

“Cloud” semplice o IaaS, PaaS o SaaS?

Qualcuno può aver già sentito la frase “il cloud è sicuro per definizione”. Alcuni dicono anche che “il cloud è tipo il computer di qualcun altro”.

Per quanto questo sia quasi vero in alcuni casi, entrambe le frasi esprimono due dei grandi miti della moderna cybersecurity. Per comprendere la natura del “cloud”, è necessario formulare qualche domanda in più. La natura dei controlli e delle pratiche di cybersecurity si determina in base alle risposte che diamo a queste domande.

Il cloud è diventato sinonimo di elaborazione dati gestita da qualcun altro. Tuttavia sussistono delle differenze tra i vari tipi di cloud, IaaS, PaaS o SaaS:

  • IaaS (infrastructure as a service) significa che un fornitore come AWS, Azure o GCP ospitano server virtuali in ambienti scalabili. In questo caso è il cliente che deve mantenere la sicurezza dei sistemi operativi e dei servizi.

  • PaaS (platform as a service) è un servizio offerto dagli stessi fornitori di cui sopra con la differenza che come servizio offre anche per esempio database o software di data intelligence. In questo caso il cliente può concentrarsi sulle funzionalità della piattaforma rendendola sicura grazie ad una corretta configurazione.

  • SaaS (Software as a service) include servizi come Salesforce, Office 365 e Gmail. In questo caso il cliente non ha voce in capitolo su come il servizio viene reso sicuro. Tuttavia rimane comunque responsabilità del cliente gestire la propria identità all'interno del servizio ed attenersi a buone pratiche di sicurezza di rete come abbiamo imparato in questo corso.

“Mi posso fidare ad installare questa app?”

Si tratta di una domanda molto comune. Controllare le informazioni pubblicate insieme ad una app non ci fornisce molti dettagli sulle misure di sicurezza prese nell'elaborazione dei dati all'interno di una app o nel backend di una app.

Per analizzare una app dal punto di vista della cybersecurity bisogna prendere in considerazione le seguenti domande:

  • Da chi viene pubblicata la app? Si tratta del negozio di chi l'ha prodotta o di una entità sconosciuta? Gli App store (Google Play, Apple store) effettuano un certo tipo di controlli accurati delle app per quanto riguarda funzionalità dannose (come stalkerware, malware e backdoor).

  • Che tipo di informazioni raccoglie una app a proposito di un utente con o senza il suo consenso?

  • In che modo viene garantita la sicurezza nello scambio di informazioni tra la app e il backend? (Per approfondire questo tema, si veda il capitolo 3.)

  • In che modo viene garantita la sicurezza nello scambio di informazioni tra mittente e destinatario (criptazione end-to-end)?

  • Qual è il livello di sicurezza dei protocolli di criptazione e della gestione delle chiavi? - Per esempio l'app possiede un certificato TLS?

  • Dal punto di vista tecnico come fa il publisher della app ad elaborare le nostre informazioni?

  • Dal punto di vista legale il publisher opera all'interno di un contesto per cui è legalmente tenuto a fornire i nostri dati alle autorità locali (per esempio la Cina)?

  • Può il publisher intercettare ed alterare il contenuto dell'informazione in transito (come per esempio WeChat in China)?

Verificare tutti questi elementi richiede grandi sforzi anche per un professionista, quindi diamo un'occhiata a cosa altri hanno già scoperto. Si può cominciare chiedendosi se di recente sia stato svolto un code audit (una verifica completa del codice) e un'analisi indipendente della sicurezza.

La migliore analisi disponibile a livello pubblico è probabilmente la comparazione delle funzionalità di sicurezza e privacy delle diverse applicazioni di chat (Signal, Telegram, WhatsApp, Facebook Messenger).

Per confrontare diverse applicazioni, si può consultare la comparazione effettuata dall'EFF (Electronic Frontier Foundation). Tuttavia è già datata, per cui una versione più recente e maggiormente dettagliata è disponibile sul sito Securemessagingapp.com.

Note

È importante tenere presente che per quanto riguarda qualsiasi tipo di software, sia esso il software di sistema di un dispositivo, il software antivirus o VPN, o il software applicativo, installaregli aggiornamenti più recenti è sempre importante (assicurandosi che l'invito ad effettuare un update proviene da una fonte di fiducia e sicura). Questi aggiornamenti software possono sembrare triviali e venir facilmente ignorati, ma contengono spesso importanti rimedi a questioni di sicurezza, senza i quali il proprio dispositivo e le proprie comunicazioni si troverebbero esposte a degli attacchi.

Next section
III. Il tuo piano d'azione cybersecurity