Firma e verifica dei dati con Cloud KMS (a chiave asimmetrica)

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

  1. 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.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Dovrebbero bastare pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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.