Crittografia envelope

Introduzione

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

Puoi criptare i dati sia a livello di applicazione, responsabile la visualizzazione dei dati agli utenti e il livello di archiviazione, che fornisce le informazioni l'archiviazione dei dati.

Per impostazione predefinita, a livello di archiviazione, Google Cloud cripta i contenuti archiviati inattivi dei clienti utilizzando la crittografia envelope, con il Key Management Service interno come archivio chiavi centrale. Se archivi e per la crittografia dei dati, puoi utilizzare Cloud Key Management Service come servizio a livello dell'applicazione, che è il fulcro di questo argomento.

Cloud KMS archivia le chiavi in una gerarchia di chiavi progettata per essere semplificata, con accesso alle risorse nella gerarchia delle chiavi regolato 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 nella pagina dedicata alla gerarchia degli oggetti.

Chiavi di crittografia dei dati

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

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

  • Genera le DEK localmente.
  • Se vengono archiviate, assicurati sempre che le DEK siano criptate at-rest.
  • Per un facile accesso, memorizza la DEK vicino ai dati che cripta.
  • Genera una nuova DEK ogni volta che scrivi i dati. Ciò significa che non devi ruota le DEK.
  • Non utilizzare la stessa DEK per criptare i dati di due utenti diversi.
  • Utilizzare un algoritmo avanzato, come l'Advanced Encryption Standard (AES) a 256 bit nelle Modalità contatore 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 envelope la crittografia dei dati.

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

  • Memorizza le KEK a livello centrale.

  • Impostare la granularità delle DEK che criptano in base al caso d'uso. Per Ad esempio, considera un carico di lavoro che richiede più DEK per criptare dei blocchi di dati del 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 in seguito a un sospetto incidente. Per saperne di più, vedi la rotazione della chiave.

Bilanciare le DEK e le KEK

Avere un numero inferiore di KEK rispetto alle DEK e utilizzare una gestione delle chiavi centralizzata rende più gestibile l'archiviazione e la crittografia dei dati su larga scala. Un centro il servizio chiavi è anche un punto singolo per controllare e limitare più facilmente i dati l'accesso.

A seconda della situazione e del volume di dati che cripti, è possibile scegliere di utilizzare un modello simile. È possibile usare una singola KEK per proteggere molte DEK. questo modello consente ai singoli oggetti dati di avere la propria DEK senza aumentando in modo massiccio il volume delle chiavi archiviate in una soluzione di gestione centrale completamente gestito di Google Cloud.

Cloud Key Management Service è stato progettato per gestire le KEK e, di conseguenza, il massimo la dimensione per le funzioni Encrypt e Decrypt è 64 KiB. Tuttavia, nel caso di dati che non si avvicinerà a tale limite, puoi utilizzare Cloud KMS di 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 localmente, criptare i dati con DEK, utilizza una KEK per eseguire il wrapping della DEK, quindi archivia i dati criptati DEK con wrapping. La KEK non lascia mai Cloud KMS.

Flusso di crittografia

Per criptare i dati utilizzando la crittografia envelope:

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

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

    Ad esempio, potresti utilizzare OpenSSL come mostrato nella sezione relativa alla crittografia esempio. Come best practice, utilizza la crittografia avanzata a 256 bit Crittografia standard (AES-256) in Galois Counter Mode (GCM).

  3. Genera una nuova chiave in Cloud KMS o utilizza una chiave esistente, che fungerà da 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 i DEK, identificare la KEK che ha eseguito il wrapping della DEK, utilizzare la KEK per scartare la DEK e e poi usare la DEK con wrapping per decriptare i dati. La KEK non esce mai di Cloud KMS.

Flusso di decriptazione

Per decriptare i dati utilizzando la crittografia envelope:

  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 sulla decriptazione del messaggio.

Per il codice campione che mostra come criptare e decriptare con una busta vedi Crittografia lato client con Tink e Cloud KMS.

Integrazione con i servizi Google Cloud

Diversi prodotti Google Cloud sono integrati con Cloud KMS per supportare la funzionalità CMEK (Customer-Managed Encryption Key). CMEK con Cloud KMS aggiunge un ulteriore livello di protezione per i dati, il controllo delle chiavi di crittografia e sfrutta la gestione delle chiavi vantaggi di Cloud KMS. Consulta Utilizzo di Cloud KMS con altre 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 la tua crittografia envelope come descritto sopra, in modo da archiviare i dati criptati localmente in Google Cloud. Anche in questo caso potresti usare Cloud KMS per criptare i dati archiviati in altri servizi cloud o on-premise.

Oltre a supportare CMEK, i seguenti prodotti supportano 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 utilizzare come KEK e la tua chiave protegge le DEK che proteggono i tuoi dati. La chiave CSEK è protetta da un token un ulteriore livello di protezione, usando una chiave Cloud KMS.

Ora che puoi importare chiavi in Cloud KMS, puoi importa le tue chiavi e usale con servizi abilitati per CMEK anziché affidarti a CSEK (CSEK).