Confidenzialità nell'era dell'informazione

Se usi servizi come quelli di Google e Microsoft, tutti i tuoi dati (o quasi) sono (per loro) in chiaro. Non deve essere per forza così.

12 Agosto 2024
matrix Igino Corona

Nel precedente articolo abbiamo visto cosa sia la sicurezza dell'informazione ed inquadrato i principali requisiti su cui si basa. In particolare, abbiamo definito la confidenzialità come il requisito per cui l’informazione è accessibile solo alle entità autorizzate. Questo requisito è senza dubbio quello che distingue maggiormente la sicurezza informatica da altri problemi di sicurezza. Pensate ad esempio ad un ponte stradale: se i requisiti di integrità e disponibilità sono fondamentali, garantire la confidenzialità ha molto meno senso.

In una maniera o nell’altra, per poter garantire qualsiasi altro requisito di sicurezza dell’informazione, dovremo mantenere confidenziale una qualche (altra) informazione.

Notate infatti che esiste un meccanismo ricorsivo:

  1. per garantire la confidenzialità dei dati gestiti da un sistema, così come tutti gli altri requisiti di sicurezza, è necessario che le entità vengano autenticate;
  2. il meccanismo di autenticazione in genere è basato su informazioni confidenziali, in possesso della sola entità fisica corrispondente.

Il requisito di confidenzialità dell’informazione, in altri termini, può soltanto essere convertito in un altro problema di confidenzialità più facilmente gestibile e più difficile da violare per un attaccante.

Le credenziali di autenticazione possono essere basate su informazioni confidenziali come le classiche nome utente e password, numeri (PIN), sequenza numeriche, ma anche chiavi crittografiche (es. generate dalle app sul vostro smartphone per identificarlo univocamente), e perfino informazioni biometriche (pensate alla costruzione di un clone della vostra impronta digitale). La perdita di confidenzialità in una o più di queste informazioni può causare in cascata la perdita di confidenzialità di altre informazioni gestite dai sistemi che si basano sul meccanismo di autenticazione che le utilizza.

La crittografia e il web

La crittografia è il più chiaro esempio di conversione di un problema di confidenzialità in un altro. Dato un certo messaggio, esso può essere codificato (cifrato) tramite una chiave crittografica, in maniera che sia estremamente difficile risalire al messaggio originale senza conoscere tale chiave (o la sua duale, nel caso di crittografia asimmetrica). La difficoltà è in genere associata alla potenza computazionale necessaria per risolvere il problema matematico di decifratura senza conoscere la chiave. I calcolatori quantistici potranno rivoluzionare la materia, rendendo obsoleti/insicuri gli attuali meccanismi, ma al contempo offrire soluzioni di cifratura (in linea di principio) impossibili da aggirare.

La cifratura permette in sostanza di garantire la confidenzialità del messaggio. Il problema diventa quindi quello di proteggere la confidenzialità della chiave che permette di decifrarlo.

La crittografia può trovare applicazione anche in assenza di chiavi crittografiche, attraverso l’hashing, ovvero una funzione non invertibile che traduce in maniera univoca un messaggio in un altro da cui però non è possibile ricavare in maniera univoca l’originale. L’hashing introduce quindi una perdita di informazione ed è impiegato largamente per la conversione e la verifica di informazioni confidenziali come le password.

La crittografia è oggigiorno fondamentale per garantire la confidenzialità dei dati in transito su Internet, ed in particolare il traffico web, tramite il protocollo HTTP Secure (HTTPS). L’HTTPS è essenzialmente una comunicazione HTTP che avviene attraverso un canale cifrato, in cui client e server web possono autenticarsi vicendevolmente tramite controlli anch’essi crittografici.

Ciò che tipicamente avviene è che il client web autentica il server web verificando che il certificato HTTPS sia firmato da una delle autorità di certificazione (Certificate Authority - CA) di cui si fida, di cui possiede un elenco. La compromissione di anche solo una di queste CA, può compromettere il meccanismo di autenticazione di qualsiasi server/servizio web. Ad esempio, potete consultare la lista delle CA fidate per Firefox o Safari.

Ma la crittografia ha anche un ruolo chiave nelle applicazioni web che garantiscono i più alti standard di confidenzialità per i propri clienti. Nella stragrande maggioranza dei casi, i fornitori dei servizi web (come Google, Microsoft ed in parte Apple) possono accedere a tutti i dati/documenti dei propri clienti, e questo all’apparenza può apparire scontato.

Non deve essere per forza così.

Esistono sempre più servizi basati sulla cosiddetta crittografia end-to-end, che garantisce che nessuno a parte l’utente/proprietario dei dati, nemmeno il fornitore del servizio che li gestisce, sia in grado di accedere i dati.

La cifratura dei dati in questo caso avviene tipicamente tramite una componente client dell’applicazione web basata su JavaScript, prima che i dati vengano inviati al server, che non conosce la chiave e gestisce esclusivamente i dati cifrati. Esempi degni di nota di tali servizi commerciali sono ProtonMail e Tresorit, ma esistono anche applicazioni web open-source (e molte istanze online gratuite) come KeyBase e CryptPad.

Security through Obscurity e Principio di Minimizzazione delle Informazioni

Realizzare la sicurezza attraverso l’occultazione di informazioni, ovvero affidandosi alla confidenzialità è spesso indicato come Security through Obscurity. Questa è chiaramente una pratica sconsigliata, se rappresenta l’unica maniera con cui la sicurezza dell’informazione è garantita. D’altro canto, abbiamo visto che per garantire la sicurezza dell’informazione una qualche informazione deve rimanere necessariamente confidenziale, quindi potremmo dire che "security through obscurity" è anche in qualche modo inevitabile.

In aggiunta, possono esservi informazioni che non è necessario siano confidenziali, ma è utile che lo siano per incrementare gli sforzi di un eventuale attaccante motivato a violare il sistema che le gestisce. Questo a sua volta può ridurre la probabilità che un attacco abbia successo, e dunque ridurre il rischio associato, perché anche gli attaccanti hanno risorse e conoscenze limitate. Rientrano in questa classe tutte le informazioni che i sistemi espongono durante le loro interazioni, che non sono utili al loro funzionamento, ma molto utili per realizzare attacchi contro di essi. Ad esempio, i messaggi HTTP scambiati da client e server tipicamente includono delle intestazioni (header) che indicano in maniera puntuale la loro versione, i componenti installati, nonché quella del sistema operativo in cui sono in esecuzione, permettendo facilmente ad un qualsiasi attaccante o (ro)bot di comprendere se per essi sono note vulnerabilità e magari disponibili programmi di sfruttamento di vulnerabilità (exploit) già pronti e di dominio pubblico.

Possiamo quindi concludere che "security through obscurity" nel complesso è un utile meccanismo per incrementare il costo di un attacco (e dunque ridurne la probabilità), da abbinare però a tutte le migliori pratiche di sicurezza. Il meccanismo è essenzialmente equivalente al principio di minimizzazione delle informazioni, che trova una sua fondamentale collocazione in contesti specifici come la protezione dei dati personali (si veda ad esempio, il regolamento europeo GDPR).

La confidenzialità nella OWASP TOP 10

Nella OWASP TOP 10 2021, il requisito confidenzialità è contemplato dalla problematica Cryptographic Failures ("Errori crittografici") in seconda posizione.

Vengono considerati errori crittografici, l’assenza di (o incorretta) identificazione di categorie di dati sensibili da proteggere, l’assenza di meccanismi di cifratura per la protezione di dati in transito e memorizzati, errori implementativi degli algoritmi, utilizzo di algoritmi con nota vulnerabilità.

Notate che nella lista di CWE associate a questa TOP 10, ve ne è una (CWE-296: Improper Following of a Certificate's Chain of Trust) associabile più propriamente al requisito autenticazione, in quanto la principale debolezza è associata al meccanismo di autenticazione HTTPS. Non c’è da stupirsi di questo aspetto: come abbiamo visto, gli stessi meccanismi di autenticazione hanno tipicamente necessità di affidarsi ad informazioni confidenziali.

Come dovrebbe essere evidente a questo punto, il rispetto del requisito confidenzialità è coperto solo in parte da questa TOP 10. In particolare, come abbiamo discusso, non include il principio di minimizzazione delle informazioni (o equivalentemente Security Through Obscurity) utile per ridurre il rischio di violazioni di sicurezza. Inoltre, abbiamo visto che la crittografia è essenzialmente un meccanismo di conversione di un problema di confidenzialità in un altro. La confidenzialità dei dati dipende in maniera fondamentale dal livello di astrazione in cui la crittografia ha luogo, ma questo aspetto non è contemplato dalla TOP 10. Le applicazioni web in cui la cifratura dei dati ha luogo presso la macchina utente (crittografia end-to-end), sono in genere capaci di offrire più ampie garanzie.

Scopri altri articoli con etichette simili

Articoli filtrati per etichetta sicurezza informatica