Crittografia envelope

Introduzione

L'archiviazione e la crittografia dei dati su scala Google richiede l'utilizzo di un Key Management Service di crittografia centrale con più livelli di chiavi per i dati criptati. Un esempio di più livelli di chiavi è la crittografia busta, ovvero il processo di crittografia di una chiave con un'altra chiave.

Puoi criptare i dati sia al livello di applicazione, responsabile della visualizzazione dei dati agli utenti, sia al livello di archiviazione, che fornisce l'archiviazione fisica dei dati.

Per impostazione predefinita, a livello di archiviazione, Google Cloud cripta i contenuti dei clienti archiviati at-rest utilizzando la crittografia envelope, con il Key Management Service interno di Google come archivio chiavi centrale. Se stai archiviando e criptando i dati in autonomia, puoi utilizzare Cloud Key Management Service come archivio chiavi centrale a livello di applicazione, che è il punto focale di questo argomento.

Cloud KMS archivia le chiavi in una gerarchia di chiavi progettata per facilitare l'accesso, con accesso alle risorse nella gerarchia delle chiavi regolata da Identity and Access Management. Di seguito sono mostrati i livelli principali di una gerarchia di chiavi Cloud KMS:

Risorse

Scopri di più sulla gerarchia delle chiavi nella gerarchia degli oggetti.

Chiavi di crittografia dei dati

La chiave utilizzata per criptare i dati stessi è chiamata chiave di crittografia dei dati (DEK).

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

  • Genera DEK localmente.
  • Una volta archiviate, assicurati sempre che le DEK siano criptate at-rest.
  • Per un facile accesso, archivia la DEK vicino ai dati che cripta.
  • Genera una nuova DEK ogni volta che scrivi i dati. Ciò significa che non devi ruotare le DEK.
  • Non utilizzare la stessa DEK per criptare i dati di due utenti diversi.
  • Utilizza un algoritmo efficace come l'algoritmo Advanced Encryption Standard (AES) a 256 bit in modalità contatore di GAlois (GCM).

Chiavi di crittografia della chiave

La DEK è criptata (nota anche come wrapping) da una chiave di crittografia della chiave (KEK). Il processo di crittografia di una chiave con un'altra chiave è noto come crittografia envelope.

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

  • Archivia le KEK centralmente.

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

  • Ruota le chiavi regolarmente, anche dopo un sospetto incidente. Per scoprire di più, consulta la sezione sulla rotazione della chiave.

Bilanciamento di DEK e KEK

Avere un numero inferiore di KEK rispetto alle DEK e usare un servizio di gestione delle chiavi centralizzato rende più gestibile l'archiviazione e la crittografia dei dati su larga scala. Un servizio chiavi centrale è anche un punto unico per controllare e limitare più facilmente l'accesso ai dati.

A seconda della tua situazione e del volume di dati che stai crittografando, puoi scegliere di utilizzare un modello simile. Una singola KEK può essere utilizzata per proteggere molte DEK. Questo modello consente ai singoli oggetti di dati di avere la propria DEK senza aumentare massicciamente il volume delle chiavi archiviate in un servizio di gestione centrale delle chiavi.

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

Come criptare i dati utilizzando la crittografia envelope

Il processo di crittografia dei dati consiste nel generare una DEK in locale, criptare i dati con la DEK, utilizzare una KEK per eseguire il wrapping della DEK e quindi archiviare i dati criptati e la DEK con wrapping. La KEK non lascia mai Cloud KMS.

Flusso di crittografia

Per criptare i dati utilizzando la crittografia busta:

  1. Genera una DEK localmente. Puoi farlo con una libreria open source come OpenSSL, che specifica un tipo di crittografia e una password da cui generare la chiave. Se vuoi, puoi anche specificare un sale e un digest da utilizzare.

  2. Utilizza questa DEK localmente per criptare i tuoi dati.

    Ad esempio, potresti utilizzare OpenSSL come mostrato nell'esempio di crittografia del messaggio. Come best practice, utilizza la crittografia Advanced Encryption Standard (AES-256) a 256 bit in modalità contatore Galois (GCM).

  3. Genera una nuova chiave in Cloud KMS o utilizza una chiave esistente che agirà come KEK. Utilizza questa chiave per criptare (wrapping) la DEK.

  4. Archivia i dati criptati e la DEK con wrapping.

Come decriptare i dati utilizzando la crittografia envelope

Il processo di decriptazione dei dati consiste nel recuperare i dati criptati e la DEK con wrapping, identificare la KEK che ha aggregato la DEK, utilizzare la KEK per annullare il wrapping della DEK e quindi utilizzare la DEK senza wrapping per decriptare i dati. La KEK non lascia mai Cloud KMS.

Flusso di decrittografia

Per decriptare i dati utilizzando la crittografia busta:

  1. Recupera i dati criptati e la DEK con wrapping.

  2. Utilizza la chiave archiviata in Cloud KMS per annullare il wrapping della DEK criptata.

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

Integrazione con i servizi Google Cloud

Diversi prodotti Google Cloud sono integrati con Cloud KMS per supportare la funzionalità delle chiavi di crittografia gestite dal cliente (CMEK). CMEK con Cloud KMS aggiunge un ulteriore livello di protezione per i tuoi dati, ti offre il controllo delle tue chiavi di crittografia e sfrutta i vantaggi di gestione delle chiavi di Cloud KMS. Consulta Utilizzo di Cloud KMS con altri servizi per visualizzare un elenco completo dei prodotti che supportano CMEK.

Altre opzioni per i servizi Google Cloud

Per i dati archiviati in prodotti Google Cloud che non supportano CMEK, puoi implementare la tua crittografia a livello di applicazione. Ciò richiede l'implementazione della crittografia envelope come descritto in precedenza, in modo da poter archiviare i dati criptati localmente in Google Cloud. Questo è anche il modo in cui 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à della chiave di crittografia fornita dal cliente (CSEK).

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

Con CSEK, fornisci la tua chiave AES-256 da usare come KEK e la tua chiave protegge le DEK che proteggono i dati. La chiave CSEK è protetta da un ulteriore livello di protezione mediante una chiave Cloud KMS.

Ora che puoi importare le chiavi in Cloud KMS, puoi importarle e utilizzarle con servizi abilitati per CMEK invece di utilizzare CSEK.