Confidential computing e la cifratura dei dati in use

confidential computing

Il Confidential Computing è l’ultima frontiera per la protezione e cifratura dei dati, specialmente per quelli definiti in use dai programmi. La tematica dei dati personali pone, infatti, nuovi obiettivi per la protezione che cambiano in base a come si tratta il dato. Tipicamente riconosciamo tre scenari di utilizzo dei dati:

  • a riposo (data at rest): sono tutte quelle informazioni che in qualche modo sono salvate stabilmente su un supporto e non vengono utilizzate attivamente da alcun applicativo;
  • in movimento (data in transit): ovvero flussi di dati, in genere attraverso una rete di comunicazione, che necessitano di protezione durante lo spostamento;
  • in uso (data in use): tutti quei dati che vengono attivamente consumati da un processo, un programma o elaborati con qualsivoglia tecnologia.

Tuttavia, mentre siamo abituati a proteggere i dati delle prime due categorie, è ancora embrionale il processo di protezione dei dati in uso: cerchiamo di capirne le differenze.

Il Confidential Computing protegge i dati durante il loro utilizzo da parte degli applicativi grazie alla cifratura.

I casi d’uso più semplici

Ci sono vari meccanismi che ci permettono di proteggere i dati che produciamo, trasmettiamo e salviamo: ognuno di questi si adatta al tipo di ambiente in cui deve essere applicato. Ad esempio, i dischi di backup sono contenitori di informazioni che tendono ad essere utilizzati non molto di frequente. Qui è possibile usare la crittografia a chiave simmetrica che è di certo più sicura anche se apre al problema della conservazione della chiave. Infatti, in questo caso non abbiamo bisogno di “consumare” i dati molto spesso e con rapidità ma piuttosto di pochi accessi e dilazionati nel tempo.

Al contrario, la trasmissione dei dati in rete ci pone di fronte ad una scelta decisamente più complicata. Da un lato dover trasmettere i dati protetti e al tempo stesso evitare di appesantire la trasmissione in termini di sovrastrutture di protezione aggiunte. Infatti, la trasmissione tramite una rete comporta la suddivisione del dato originale in pacchetti di più piccole dimensioni. Inoltre, nel caso di uno stream di dati (come, per esempio, per contenuti multimediali) si pone il problema di poter proteggere un flusso continuo di informazioni senza doverlo interrompere. Anche in questi casi esistono varie soluzioni come la cifratura a chiave asimmetrica o gli algoritmi a flusso a chiave simmetrica (come RC4).

Dati in uso: cosa c’è di diverso

Ma veniamo al punto focale che è al centro delle ricerche di molti informatici: i dati in uso. Infatti, quando un programma fa uso di dati, tipicamente li carica dal disco rigido (o da qualsiasi altra unità di storage) in memoria centrale, dove la CPU è in grado di prelevarli rapidamente, elaborarli nei registri e salvarli nuovamente in attesa di copiarli stabilmente nel disco rigido. Nell’uso ordinario del computer potrebbe sembrare irrisorio il tempo in cui i nostri applicativi lasciano sprotetti i dati in memoria centrale. Tuttavia diverso è il caso di grandi basi di dati che per qualche ragione necessitano una elaborazione del loro contenuto.

Poniamo, ad esempio, di avere a disposizione una grande tabella su una base di dati. Se volessimo fare un UPDATE di alcuni campi, di fatto il sistema avrebbe bisogno di copiare temporaneamente in memoria centrale i dati, applicare le modifiche e quindi salvare nuovamente i dati aggiornati. In questo caso, però, l’ammontare di tempo è decisamente più grande, esponendo i dati in chiaro a potenziali attacchi che potrebbero comprometterli.

Nel Confidential Computing la cifratura dei dati viene applicata da una struttura hardware direttamente nel processore.

Confidential Computing: come funziona

La tecnologia di Confidential Computing ha come nucleo centrale un ambiente di esecuzione protetto, detto Trusted Execution Environment (TEE). Questo hardware dedicato all’interno della CPU è protetto per mezzo di chiavi di cifratura embedded e meccanismi grazie ai quali le chiavi possono essere accessibili soltanto dalle applicazioni autorizzate.

In questo modo, potenziali applicativi non autorizzati che richiedono alla CPU di elaborare informazioni verranno bloccati direttamente al livello del processore. Questo fa in modo che i dati rimangano protetti nella memoria fino al momento del loro processamento che sarà richiesto dal TEE. Tuttavia, l’elaborazione e la decifratura sono del tutto invisibili al sistema operativo, per cui eventuale software malevolo in esecuzione su di esso non sarà in grado di accedere ai dati sensibili.

Questa tecnologia è diventata ufficialmente l’obiettivo del primo Confidential Computing Consortium, nato nel 2019 da un gruppo di produttori di CPU con il supporto della Linux Foundation. Pur essendo una tecnologia ancora poco utilizzata, in realtà ha grandi potenzialità che potranno essere sfruttate. Fra qualche anno sicuramente ci saranno sempre più aziende che ne riconosceranno i benefici in termini di gestione della sicurezza e riduzione del rischio operativo.