Introduzione
L'archiviazione e la crittografia dei dati su larga scala come quella di Google richiedono l'utilizzo di un Key Management Service di crittografia centralizzato con più livelli di chiavi per i dati criptati. Un esempio di più livelli 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 livello di applicazione, che si occupa di visualizzare i dati per gli utenti, sia a livello di livello di archiviazione, che fornisce l'archiviazione fisica dei dati.
Per impostazione predefinita, a livello di livello di archiviazione, Google Cloud cripta i contenuti dei clienti archiviati in stato inattivo utilizzando la crittografia dell'involucro, con il Key Management Service interno di Google come keystore centrale. Se memorizzi e cripta i dati autonomamente, puoi utilizzare Cloud Key Management Service come tuo amministratore delle chiavi centralizzato a livello di applicazione, che è l'argomento di questo articolo.
Cloud KMS archivia le chiavi in una gerarchia delle chiavi progettata per la semplicità, con accesso alle risorse nella gerarchia delle chiavi regolato da Identity and Access Management. Di seguito sono riportati i livelli principali di una gerarchia delle chiavi Cloud KMS:
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 dei DEK:
- Genera i DEK localmente.
- Quando vengono archiviati, assicurati sempre che i DEK siano criptati a riposo.
- Per un facile accesso, memorizza la chiave DEK vicino ai dati che cripta.
- Genera un nuovo DEK ogni volta che scrivi i dati. Ciò significa che non devi girare i DEK.
- Non utilizzare la stessa DEK per criptare i dati di due utenti diversi.
- Utilizza un algoritmo sicuro come Advanced Encryption Standard (AES) a 256 bit in Galois Counter Mode (GCM).
Chiavi di crittografia delle chiavi
La DEK è criptata (detta anche con wrapping) da una chiave di crittografia della chiave (KEK). La procedura di crittografia di una chiave con un'altra chiave è nota come crittografia con incapsulamento.
Di seguito sono riportate le best practice per la gestione delle KEK:
Archivia le KEK in modo centralizzato.
Imposta la granularità delle chiavi DEK che criptano in base al caso d'uso. Ad esempio, considera un carico di lavoro che richiede più DEK per criptare i chunk di dati del carico di lavoro. Puoi utilizzare una singola KEK per avvolgere tutte le DEK responsabili della crittografia del carico di lavoro.
Ruota le chiavi regolarmente e anche dopo un presunto incidente. Per scoprire di più, consulta la sezione sulla rotazione delle 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 centralizzato rendono più gestibili l'archiviazione e la crittografia dei dati su larga scala. Un servizio chiavi centralizzato è anche un punto unico per controllare e limitare più facilmente l'accesso ai dati.
A seconda della situazione e del volume di dati che cripti, puoi scegliere di utilizzare un modello simile. Una singola KEK può essere utilizzata per proteggere molte DEK; questo modello consente a singoli oggetti dati di avere ciascuno la propria DEK senza aumentare notevolmente il volume di chiavi archiviate in un servizio di gestione delle chiavi centrale.
Cloud Key Management Service è stato progettato per gestire le KEK, pertanto la dimensione massima dell'input di 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 i dati direttamente.
Come criptare i dati utilizzando la crittografia dell'involucro
Il processo di crittografia dei dati consiste nel generare una DEK localmente, criptare i dati con la DEK, utilizzare una KEK per eseguire il wrapping della DEK e poi archiviare i dati criptati e la DEK con wrapping. La KEK non esce mai da Cloud KMS.
Per criptare i dati utilizzando la crittografia dell'involucro:
Genera un DEK localmente. Puoi 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 un valore di salt e digest da utilizzare.
Utilizza questa DEK localmente per criptare i dati.
Ad esempio, puoi utilizzare OpenSSL come mostrato nell'esempio di crittografia del messaggio. Come best practice, utilizza il cifrario Advanced Encryption Standard (AES-256) a 256 bit in modalità Galois Counter (GCM).
Genera una nuova chiave in Cloud KMS o utilizzane una esistente, che fungerà da KEK. Utilizza questa chiave per criptare (wrap) la DEK.
Memorizza i dati criptati e la chiave DEK con wrapping.
Come decriptare i dati utilizzando la crittografia dell'involucro
Il processo di decrittografia dei dati consiste nel recuperare i dati criptati e la DEK criptata, identificare la KEK che ha applicato il wrapping alla DEK, utilizzare la KEK per annullare il wrapping della DEK e poi utilizzare la DEK di cui è stato annullato il wrapping per decriptare i dati. La KEK non esce mai da Cloud KMS.
Per decriptare i dati utilizzando la crittografia dell'involucro:
Recupera i dati criptati e la DEK con wrapping.
Utilizza la chiave archiviata in Cloud KMS per svolgere il wrapping della DEK criptata.
Utilizza la DEK in testo non criptato per decriptare i dati criptati. Se utilizzi OpenSSL come sopra, consulta l'esempio di decrittografia del messaggio.
Per codice campione che mostra come criptare e decriptare con la crittografia con incapsulamento, 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à 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 chiavi di crittografia e sfrutta i vantaggi della 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 crittografia dell'envelope come descritto sopra, in modo da archiviare i dati criptati localmente in Google Cloud. In questo modo puoi anche utilizzare Cloud KMS per criptare i dati archiviati in altri fornitori di servizi cloud o on-premise.
Oltre a supportare le chiavi 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 | Crittografia dei dischi con chiavi di crittografia fornite dal cliente |
Con la 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 ulteriore livello di protezione, utilizzando una chiave Cloud KMS.
Ora che puoi importare le chiavi in Cloud KMS, puoi importarle e utilizzarle con i servizi CMEK anziché con CSEK.