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 la crittografia, la decriptazione, la firma e la verifica utilizzando una serie di tipi e origini di chiavi, tra cui Cloud HSM per le chiavi supportate dall'hardware. Questo tutorial mostra come firmare e verificare i dati utilizzando chiavi Cloud KMS asimmetriche.
Cosa imparerai
- Come abilitare l'API Cloud KMS
- Come creare chiavi automatizzate
- Come creare una chiave crittografica per la firma/verifica asimmetrica
2. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del 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. Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:
Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Se non diversamente indicato, esegui tutti i comandi da questa shell.
3. Attiva il 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 una raccolta di chiavi Cloud KMS. In Cloud KMS, un keyring è una raccolta logica di chiavi di crittografia. Il keyring contiene metadati sulle chiavi, ad esempio la loro posizione. Crea un keyring denominato my-keyring nella regione global:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Ora crea una chiave crittografica denominata my-asymmetric-signing-key con lo scopo asymmetric-signing all'interno del keyring che hai appena creato.
$ gcloud kms keys create "my-asymmetric-signing-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-signing" \
--default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Dati del segno
A differenza della crittografia, la decrittografia dei dati criptati utilizzando una chiave Cloud KMS asimmetrica richiede l'accesso online al servizio Cloud KMS. Decrittografa il testo cifrato dal file utilizzando lo strumento a riga di comando gcloud:
Crea un file con i dati da firmare e utilizza lo strumento a riga di comando gcloud per firmare i dati con la chiave Cloud KMS:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--version "1" \
--digest-algorithm "sha512" \
--input-file ./data.txt \
--signature-file ./data.txt.sig
La firma viene salvata in data.txt.sig sul disco. Se apri il file data.txt.sig, noterai che contiene caratteri strani e non stampabili. Questo perché i dati risultanti sono in formato binario.
Quando memorizzi la firma in un database o la trasmetti nell'ambito di una richiesta HTTP, potrebbe essere necessario codificare i dati. Un meccanismo di codifica comune è Base64.
6. Verifica dei dati
Con le chiavi asimmetriche, Cloud KMS non esegue direttamente la verifica. Fornisce invece l'accesso a una chiave pubblica e tu verifichi i dati utilizzando questa chiave pubblica tramite la crittografia con chiave pubblica. Con le chiavi asimmetriche, la verifica può essere eseguita completamente offline e non richiede l'accesso a Cloud KMS o ad altre API Cloud. La verifica 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-signing-key" \
--output-file ./key.pub
Verifica la firma rispetto alla chiave pubblica utilizzando lo strumento a riga di comando openssl:
$ openssl dgst -sha256 \
-verify ./key.pub \
-signature ./data.txt.sig ./data.txt
La console mostrerà un messaggio di operazione riuscita, che indica che la firma digitale è valida.
Verified OK
7. Complimenti!
Hai abilitato l'API Cloud KMS, creato una chiave di firma asimmetrica e firmato e verificato i dati. Cloud KMS è un prodotto potente e la firma/verifica è solo una delle sue funzionalità.
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, quindi fai clic su "Elimina" in alto. In questo modo, l'eliminazione del progetto viene pianificata.
Scopri di più
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.