Questo argomento descrive come criptare localmente i dati e caricarli in Cloud Storage con l'SDK crittografico open source di Google, Tink e Cloud Key Management Service (KMS).
Panoramica
La crittografia lato client è qualsiasi crittografia eseguita prima di inviare i tuoi dati al cloud. Quando utilizzi la crittografia lato client, è tua responsabilità creare e gestire le tue chiavi di crittografia e utilizzare i tuoi strumenti per criptare i dati prima di inviarli al cloud.
I dati criptati sul lato client vengono inviati al cloud in stato criptato. Per utilizzare la crittografia lato client, hai a disposizione le seguenti opzioni:
- usando una chiave di crittografia archiviata in Cloud Key Management Service.
- Usare una chiave di crittografia archiviata localmente nell'applicazione.
In questo argomento creerai una chiave di crittografia in Cloud Key Management Service e implementerai la crittografia della busta utilizzando l'SDK crittografico open source di Tink.
Prima di iniziare
- Crea una chiave di crittografia simmetrica Cloud Key Management Service per la crittografia. Prendi nota dell'URI della chiave, che verrà utilizzato in seguito.
- Installa Tink per l'utilizzo con Cloud Key Management Service.
- Crea un bucket in Cloud Storage per caricare i tuoi dati criptati.
Crittografia busta con Tink
Nella crittografia delle busta, la chiave Cloud KMS agisce come chiave di crittografia delle chiavi (KEK, Key Encryption Key). Vale a dire che viene utilizzato per criptare le chiavi di crittografia dei dati (DEK, Data Encription Key) che a loro volta vengono utilizzate per criptare i dati effettivi.
Dopo aver creato una KEK in Cloud KMS, per criptare ogni messaggio che devi:
- Genera una chiave di crittografia dei dati (DEK) a livello locale.
- Utilizza la DEK a livello locale per criptare il messaggio.
- Utilizzare Cloud KMS per criptare (avvolgere) la DEK con la KEK.
- Archivia i dati criptati e la DEK aggregata.
Anziché implementare i passaggi precedenti per la crittografia della busta da zero, utilizzerai Tink.
Per criptare i dati con la crittografia busta di Tink, fornisci a Tink un URI di chiave che rimandi alla tua KEK in Cloud KMS e le credenziali che consentono a Tink di utilizzare la KEK. Tink genera la DEK, cripta i dati, aggrega il DEK e restituisce un singolo testo di crittografia con i dati criptati e il DEK aggregato.
Tink supporta la crittografia delle buste in Python, Java, C++ e Go utilizzando la crittografia autenticata con dati associati (AEAD).
Connetti Tink e Cloud KMS
Per criptare le DEK generate da Tink con la tua KEK in Cloud KMS, devi ottenere l'URI di KEK's. In Cloud KMS, l'URI KEK ha il formato:
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Per informazioni dettagliate su come recuperare il percorso della tua chiave, vedi Ottenere un ID risorsa di Cloud KMS.
Per fornire l'accesso alla chiave in Cloud KMS, devi concedere l'account di servizio utilizzato dall'applicazione con il ruolo cloudkms.cryptoKeyEncrypterDecrypter
. Per ulteriori informazioni sui ruoli, consulta
Autorizzazioni e ruoli. In gcloud, utilizza il seguente comando:
gcloud kms keys add-iam-policy-binding key \
--keyring key-ring \
--location location \
--member serviceAccount:service-account-name@example.domain.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter
Inizializza Tink e cripta i dati
Tink utilizza primitive, componenti di base crittografici che gestiscono i dettagli dei relativi algoritmi sottostanti, in modo che gli utenti possano eseguire attività in sicurezza. Ogni primitiva offre un'API che gestisce un'attività specifica. Ora utilizziamo AEAD, quindi utilizzeremo la primitiva AEAD Tink.
Python
Python
Per informazioni su come installare e utilizzare la libreria client per Cloud KMS, consulta la sezione Librerie client di Cloud KMS.
Java
Java
Per informazioni su come installare e utilizzare la libreria client per Cloud KMS, consulta la sezione Librerie client di Cloud KMS.
Per ulteriori informazioni sulle primitive supportate e sulle relative interfacce, consulta Come funziona Tink.
Passaggi successivi
- Scopri di più su Tink.
- Scopri come utilizzare la crittografia lato client con Cloud SQL.