Crittografia envelope

Introduzione

L'archiviazione e la crittografia dei dati sulla scala di Google richiede l'utilizzo di un servizio di gestione di chiavi crittografiche centrali con più livelli di chiavi per i dati criptati. Un esempio di più livelli di chiavi è la crittografia delle busta, ovvero il processo di crittografia di una chiave con un'altra chiave.

Puoi criptare i dati sia al livello dell'applicazione, che è responsabile della visualizzazione dei dati per gli utenti, sia al livello di archiviazione, che fornisce lo spazio di archiviazione fisico dei dati.

Per impostazione predefinita, a livello di archiviazione, Google Cloud cripta i contenuti archiviati inattivi dei clienti utilizzando la crittografia della busta, con il servizio di gestione delle chiavi interno di Google come archivio centrale delle chiavi. Se stai archiviando e criptando i dati autonomamente, puoi utilizzare Cloud Key Management Service come archivio centrale delle chiavi a livello di applicazione, che è l'argomento centrale di questo argomento.

Cloud KMS archivia le chiavi in una gerarchia di chiavi progettata con facilità, con accesso alle risorse nella gerarchia delle chiavi regolata da Identity and Access Management. Di seguito sono riportati i livelli principali di una gerarchia di chiavi Cloud KMS:

Risorse

Scopri di più sulla gerarchia delle chiavi all'indirizzo gerarchia di oggetti.

Chiavi di crittografia dei dati

La chiave utilizzata per criptare i dati stessi è denominata chiave di crittografia dei dati (DEK, Data Encryption Key).

Di seguito sono riportate le best practice per la gestione delle DEK:

  • Genera DEK localmente.
  • Quando sono archiviate, assicurati che le DEK siano sempre criptate a riposo.
  • Per accedervi facilmente, archivia la DEK vicino ai dati che cripta.
  • Genera una nuova DEK ogni volta che scrivi i dati. Ciò significa che non è necessario rotare le DEK.
  • Non utilizzare la stessa DEK per criptare i dati di due utenti diversi.
  • Utilizza un algoritmo efficace come lo standard Advanced Encryption Standard (AES) a 256 bit in Galois Counter Mode (GCM).

Chiavi di crittografia delle chiavi

La DEK è criptata (nota anche come aggregata) da una chiave di crittografia della chiave (KEK, Key Encryption Key). Il processo di crittografia di una chiave con un'altra chiave è noto come crittografia delle buste.

Di seguito sono riportate le best practice per la gestione delle KEK:

  • Memorizzare le KEK a livello centrale.

  • Imposta la granularità delle DEK crittografate in base al loro caso d'uso. Ad esempio, considera un carico di lavoro che richiede più DEK per criptare i blocchi di dati di carico di lavoro. Puoi utilizzare una singola KEK per aggregare tutte le DEK responsabili della crittografia del carico di lavoro.

  • Ruota le chiavi regolarmente e anche dopo un sospetto incidente. Per scoprire di più, consulta la sezione Rotazione chiavi.

Bilanciare DEK e KEK

La presenza di un numero inferiore di KEK rispetto alle DEK e l'utilizzo di un servizio di gestione delle chiavi centrale rendono l'archiviazione e la crittografia dei dati su larga scala più gestibili. Un servizio chiavi centrale è anche un unico punto di riferimento per controllare e limitare più facilmente l'accesso ai dati.

A seconda della tua situazione e del volume di dati da criptare, puoi scegliere di utilizzare un modello simile. Una singola KEK può essere utilizzata per proteggere molte DEK; questo modello consente a singoli oggetti di dati di avere ciascuno la propria DEK senza aumentare considerevolmente il volume delle chiavi archiviate in un servizio di gestione delle chiavi centrale.

Cloud Key Management Service è stato progettato per gestire le KEK, pertanto la dimensione massima di input di dati per funzioni Encrypt e Decrypt è 64 KiB. Tuttavia, per i dati che non sai che si avvicinano a questo limite, puoi utilizzare Cloud KMS per criptare e decriptare direttamente i dati.

Come criptare i dati utilizzando la crittografia della busta

Il processo di crittografia dei dati prevede la generazione di una DEK a livello locale, la crittografia dei dati con la DEK e l'utilizzo di una KEK per il DEK, quindi l'archiviazione dei dati criptati e del DEK inserito nel codice. La KEK non lascia mai Cloud KMS.

Flusso di crittografia

Per criptare i dati utilizzando la crittografia della busta:

  1. Genera una DEK a livello locale. Potresti farlo con una libreria open source come OpenSSL, specificando un tipo di crittografia e una password da cui generare la chiave. Se vuoi, puoi anche specificare sale e digest da utilizzare.

  2. Utilizza questa DEK a livello locale per criptare i tuoi dati.

    Ad esempio, potresti utilizzare OpenSSL come illustrato nell'esempio Crittografia del messaggio. Per le best practice, utilizza la crittografia avanzata (AES-256) con crittografia a 256 bit in modalità contatore Galois (GCM).

  3. Genera una nuova chiave in Cloud KMS o utilizza una chiave esistente, che fungerà da KEK. Utilizza questa chiave per criptare (avvolgere) la DEK.

  4. Archivia i dati criptati e la DEK aggregata.

Come decriptare i dati utilizzando la crittografia della busta

Il processo di decriptazione dei dati consiste nel recuperare i dati criptati e la DEK aggregata, recuperare la KEK che ha aggregato la DEK, utilizzare la KEK per decriptare la DEK e quindi utilizzare la DEK senza wrapper per decriptare i dati. La KEK non lascia mai Cloud KMS.

Flusso di decriptazione

Per decriptare i dati utilizzando la crittografia della busta:

  1. Recupera i dati criptati e la DEK aggregata.

  2. Utilizza la chiave archiviata in Cloud KMS per decriptare la DEK criptata.

  3. Utilizza la DEK in testo non crittografato per decriptare i dati criptati. Se utilizzi OpenSSL come precedente, vedi l'esempio decriptare il messaggio.

Integrazione con i servizi Google Cloud

Diversi prodotti Google Cloud sono integrati con Cloud KMS per supportare la funzionalità chiave di crittografia gestita dal cliente (CMEK). CMEK con Cloud KMS aggiunge un ulteriore livello di protezione per i tuoi dati, ti consente di controllare le tue chiavi di crittografia e sfrutta i vantaggi in termini di gestione delle chiavi di Cloud KMS. Consulta Utilizzo di Cloud KMS con altri servizi per un elenco completo dei prodotti che supportano CMEK.

Altre opzioni per i servizi Google Cloud

Per i dati archiviati nei prodotti Google Cloud che non supportano CMEK, puoi implementare la tua crittografia a livello di applicazione. Ciò richiede l'implementazione della tua crittografia busta, come descritto sopra, in modo da archiviare i dati criptati localmente in Google Cloud. Ecco come puoi utilizzare Cloud KMS per criptare i dati archiviati in altri provider di servizi cloud o on-premise.

Oltre a supportare CMEK, i seguenti prodotti supportano la funzionalità chiave di crittografia fornita dal cliente (CSEK).

Prodotto Argomento CSEK
Cloud Storage Chiavi di crittografia fornite dal cliente
Compute Engine Cripta i dischi con chiavi di crittografia fornite dal cliente

Con la CSEK, devi fornire la tua chiave AES-256 che funga da KEK e la chiave protegge le DEK che proteggono i tuoi dati. La chiave CSEK è protetta da un livello aggiuntivo di protezione mediante una chiave Cloud KMS.

Ora che puoi importare le chiavi in Cloud KMS, puoi importare le tue chiavi e utilizzarle per i servizi abilitati per CMEK anziché fare affidamento su CRM.