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 decrittografia, la firma e la verifica utilizzando una serie di tipi e origini di chiavi, tra cui Cloud HSM per le chiavi basate su hardware. Questo tutorial spiega come firmare e verificare i dati utilizzando le chiavi Cloud KMS asimmetriche.
Imparerai
- Come abilitare l'API Cloud KMS
- Come creare un keyring
- Come creare una chiave crittografica per la firma/verifica asimmetrica
2. Configurazione e requisiti
Configurazione dell'ambiente a tuo ritmo
- 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 per tutti i progetti Google Cloud (il nome sopra indicato è già stato utilizzato e non funzionerà per te, scusa). In seguito 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 del tutto. Assicurati di seguire le istruzioni nella sezione "Pulizia" che ti consigliano come arrestare le risorse per evitare addebiti dopo 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. Nella console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbero bastare pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:
Questa macchina virtuale contiene tutti gli strumenti di sviluppo 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 di 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 prima attivare il servizio nel tuo progetto. Questa operazione deve essere eseguita una sola volta per progetto. Per attivare il servizio Cloud KMS, esegui il seguente 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, una raccolta di chiavi è una raccolta logica di chiavi di crittografia. Il keyring contiene i metadati delle 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 della firma
A differenza della crittografia, la decrittografia dei dati criptati utilizzando una chiave Cloud KMS asimmetrica richiede l'accesso online al servizio Cloud KMS. Decripta 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
su disco. Se apri il file data.txt.sig
, noterai che contiene caratteri strani 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, potresti dover codificare i dati. Un meccanismo di codifica comune è base64.
6. Verificare i 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 Google Cloud. La verifica viene eseguita utilizzando uno strumento crittografico come openssl
o con un linguaggio di programmazione o una libreria che supporta la crittografia con 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 stamperà un messaggio di operazione riuscita, che indica che la firma digitale è valida.
Verified OK
7. Complimenti!
Hai attivato 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 la punta dell'iceberg delle sue funzionalità.
Pulizia
Se hai finito di esplorare, valuta la possibilità di eliminare il progetto.
- Vai alla console della piattaforma Cloud.
- Seleziona il progetto che vuoi arrestare, quindi fai clic su "Elimina" in alto. Il progetto viene pianificato per l'eliminazione.
Scopri di più
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.