1. Panoramica
Cloud KMS è un servizio di gestione delle chiavi ospitato nel cloud che consente di gestire le chiavi di crittografia per i servizi cloud esattamente come si gestisce la crittografia on-premise. Include il supporto per crittografia, decriptazione, firma e verifica utilizzando un'ampia gamma di tipi di chiavi e origini, tra cui Cloud HSM per le chiavi basate su hardware. Questo tutorial insegna come criptare e decriptare i dati utilizzando chiavi Cloud KMS asimmetriche.
Imparerai
- Come abilitare l'API Cloud KMS
- Come creare un keyring
- Come creare una chiave di crittografia per la crittografia/decrittografia asimmetrica
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
In questo codelab utilizzerai Cloud Shell, un ambiente virtualizzato senza costi in esecuzione su Google Cloud. Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Se non indicato diversamente, esegui tutti i comandi da questa shell.
3. Abilita servizio Cloud KMS
Prima di poter utilizzare Cloud KMS, devi abilitare il servizio nel tuo progetto. Questa operazione deve essere eseguita una sola volta per progetto. Per abilitare il servizio Cloud KMS, esegui questo comando:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
L'attivazione può richiedere fino a un minuto. Al termine, il comando segnalerà l'esito positivo.
4. Crea chiave KMS
Crea un keyring di Cloud KMS. In Cloud KMS, un keyring è una raccolta logica di chiavi di crittografia. Il keyring contiene metadati relativi alle chiavi, come la loro posizione. Crea un keyring denominato my-keyring
nella regione global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Ora crea una chiave di crittografia denominata my-asymmetric-encryption-key
con scopo asymmetric-encryption
all'interno del keyring che hai appena creato.
$ gcloud kms keys create "my-asymmetric-encryption-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. Cripta i dati
Con le chiavi asimmetriche, Cloud KMS non esegue la crittografia. Fornisce invece l'accesso a una chiave pubblica e tu cripti i dati utilizzando questa chiave pubblica tramite la crittografia a chiave pubblica. Con le chiavi asimmetriche, la crittografia può essere eseguita completamente offline e non richiede l'accesso a Cloud KMS o a qualsiasi altra API Google Cloud. La crittografia viene eseguita utilizzando uno strumento crittografico come openssl
o con un linguaggio di programmazione o una libreria che supporta la crittografia a chiave pubblica.
Scarica la chiave pubblica da Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --output-file ./key.pub
Crea un file con dati per criptare e utilizza lo strumento a riga di comando openssl
per criptare i dati nel file:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \ -in ./data.txt \ -inkey ./key.pub \ -pkeyopt "rsa_padding_mode:oaep" \ -pkeyopt "rsa_oaep_md:sha512" \ -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
I dati criptati (noti anche come "testo crittografato") verranno salvati su data.txt.enc
su disco. Se apri il file data.txt.enc
, noterai che contiene caratteri strani e non stampabili. Il motivo è che i dati risultanti sono in formato binario.
Quando memorizzi il testo crittografato in un database o lo trasmetti come parte di una richiesta HTTP, potrebbe essere necessario codificare i dati. Il meccanismo di codifica più comune per il testo crittografato è Base64.
Cloud KMS non archivia nessuno del testo non crittografato da te fornito. Devi salvare questo testo crittografato in un luogo sicuro perché sarà necessario recuperare il valore del testo non crittografato.
6. Decripta i dati
A differenza della crittografia, la decriptazione dei dati criptati utilizzando una chiave Cloud KMS asimmetrica richiede l'accesso online al servizio Cloud KMS. Decripta il testo crittografato dal file utilizzando lo strumento a riga di comando gcloud
:
$ gcloud kms asymmetric-decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --version "1" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
Lo strumento a riga di comando gcloud
legge il testo crittografato dal file e lo decripta utilizzando Cloud KMS. Tieni presente che questo esempio specifica l'argomento --plaintext-file
come -
. Questa azione indica a gcloud
di stampare il risultato sul terminale.
La console stamperà my-contents
, che è lo stesso valore di testo non crittografato del file precedente.
7. Complimenti!
Hai abilitato l'API Cloud KMS, creato una chiave di crittografia asimmetrica e criptato e decriptato i dati. Cloud KMS è un prodotto potente e la crittografia/decrittografia è solo una novità in prima persona.
Pulizia
Se hai terminato l'esplorazione, valuta la possibilità di eliminare il progetto.
- Vai alla console di Cloud Platform.
- Seleziona il progetto che vuoi chiudere e fai clic su "Elimina" in alto. In questo modo viene pianificata l'eliminazione del progetto.
Scopri di più
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.