Questo argomento mostra come eseguire le seguenti operazioni con chiavi simmetriche non elaborate:
- Cripta il testo o il contenuto di testo non crittografato in locale o utilizzando Cloud KMS.
- Decripta i testi crittografati in locale o utilizzando Cloud KMS.
Se invece vuoi eseguire un'operazione regolare (non non elaborata) sui tasti simmetrici, consulta Crittografia e decriptazione dei dati con una chiave simmetrica.
La crittografia simmetrica non elaborata ti consente di criptare e decriptare i dati localmente on-premise o utilizzando Cloud KMS e di spostare i dati criptati tra diverse librerie e fornitori di servizi senza doverli prima decriptare. Questa funzionalità dipende dalla possibilità di accedere alla chiave dal punto operativa. Per utilizzare i testi crittografati al di fuori di Google Cloud, devi utilizza una chiave importata perché le chiavi generate in Cloud KMS non possono essere esportato. Questi algoritmi di crittografia generano testi crittografati standard che possono essere decriptati da qualsiasi servizio di decrittografia standard. Supportiamo la seguente simmetria non elaborata algoritmi di crittografia:
AES-128-GCM
AES-256-GCM
AES-128-CBC
AES-256-CBC
AES-128-CTR
AES-256-CTR
Tieni presente i seguenti punti relativi a questi algoritmi di crittografia non elaborati:
AES-GCM
fornisce l'autenticazione basata sulle dati autenticati (AAD) e genera un tag di autenticazione ed è l'algoritmo di crittografia consigliato. I dati criptati utilizzandoAES-GCM
algoritmi non possono essere decriptati senza l'AAD fornito.AES-CBC
richiede che la dimensione del testo non crittografato sia un multiplo del blocco (16 byte). Se il testo non crittografato non è un multiplo della dimensione del blocco, padroneggiare il testo non crittografato prima di criptarlo; altrimenti l'operazione non andrà a buon fine con un errore che indica il problema.AES-CBC
eAES-CTR
non sono schemi di crittografia autenticati, che aumentano il rischio di uso improprio accidentale. Sono offerto per supportare esigenze legacy e di interoperabilità e dovrebbe essere usato con cautela. Per prevenire l'uso improprio, usa questi algoritmi di crittografia richiede le seguenti autorizzazioni IAM:cloudkms.cryptoKeyVersions.manageRawAesCbcKeys
perAES-CBC
.cloudkms.cryptoKeyVersions.manageRawAesCtrKeys
perAES-CTR
.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per usare la crittografia non elaborata, chiedi all'amministratore di concederti i seguenti ruoli IAM sulla chiave:
-
Solo per criptare:
Autore crittografia CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypter
) -
Solo per decriptare:
Autore decriptazione CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyDecrypter
) -
Per criptare e decriptare:
Autore crittografia/decrittografia CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Ruoli aggiuntivi per algoritmi di crittografia non autenticati non elaborati
- Per utilizzare le chiavi
AES-CBC
: Cloud KMS Expert Raw AES-CBC Key Manager (roles/cloudkms.expertRawAesCbc
) - Per utilizzare le chiavi
AES-CTR
: Gestore delle chiavi AES-CTR non elaborate di Cloud KMS (roles/cloudkms.expertRawAesCtr
)
Prima di iniziare
- Concedi le autorizzazioni di crittografia simmetrica non elaborate menzionate alle entità previste.
- Crea un keyring come descritto nella sezione relativa alla creazione dei keyring.
- Crea e importa una chiave di crittografia simmetrica non elaborata come descritto in Creazione chiavi e importazione di chiavi.
Cripta
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima Installa o esegui l'upgrade alla versione più recente di Google Cloud CLI.
gcloud kms raw-encrypt \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --plaintext-file INPUT_FILE_PATH \ --ciphertext-file OUTPUT_FILE_PATH
Sostituisci quanto segue:
LOCATION
: la località Cloud KMS del keyring.KEY_RING
: il nome del keyring che contiene la chiave.KEY_NAME
: il nome della chiave da utilizzare per la crittografia.KEY_VERSION
: l'ID della versione della chiave da utilizzare per la crittografia.INPUT_FILE_PATH
: il percorso file locale per la lettura dei dati di testo non crittografato.OUTPUT_FILE_PATH
: il percorso file locale per il salvataggio dell'output criptato.
Per informazioni su tutti i flag e sui possibili valori, esegui il comando con
--help
flag.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'uso dell'API. Per ulteriori informazioni sul controllo dell'accesso, vedi Accesso all'API Cloud KMS.
Quando si utilizzano JSON e l'API REST, i contenuti devono essere codificati in base64 prima di poter essere criptati da Cloud KMS.
Utilizza il metodo rawEncrypt
per criptare i dati in testo non cifrato:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:rawEncrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"plaintext": "BASE64_ENCODED_INPUT", "additionalAuthenticatedData": "BASE64_ENCODED_AAD"}'
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il keyring.LOCATION
: la località Cloud KMS del keyring.KEY_RING
: il nome del keyring che contiene la chiave.KEY_NAME
: il nome della chiave da utilizzare per la crittografia.KEY_VERSION
: l'ID della versione della chiave da utilizzare per la crittografia.BASE64_ENCODED_INPUT
: il testo non crittografato con codifica Base64 dati che vuoi criptare.BASE64_ENCODED_AAD
: l'elemento aggiuntivo con codifica Base64 Dati autenticati che vengono utilizzati per fornire integrità e autenticità garantiti. Questo campo si applica solo agli algoritmiAES-GCM
.
L'output è un oggetto JSON contenente il testo crittografato e il vettore di inizializzazione associato sotto forma di stringhe con codifica Base64.
Decripta
gcloud
Per utilizzare Cloud KMS nella riga di comando, devi prima Installa o esegui l'upgrade alla versione più recente di Google Cloud CLI.
gcloud kms raw-decrypt \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --ciphertext-file INPUT_FILE_PATH \ --plaintext-file OUTPUT_FILE_PATH
Sostituisci quanto segue:
LOCATION
: la località Cloud KMS del keyring.KEY_RING
: il nome del keyring che contiene la chiave.KEY_NAME
: il nome della chiave da utilizzare per la crittografia.KEY_VERSION
: l'ID della versione della chiave da utilizzare per la crittografia.INPUT_FILE_PATH
: il percorso del file locale del testo crittografato che vuoi decriptare.OUTPUT_FILE_PATH
: il percorso del file locale in cui vuoi salvare il testo non criptato decriptato.
Per informazioni su tutti i flag e i possibili valori, esegui il comando con il flag --help
.
API
In questi esempi viene utilizzato curl come client HTTP per dimostrare l'uso dell'API. Per ulteriori informazioni sul controllo dell'accesso, vedi Accesso all'API Cloud KMS.
Quando utilizzi l'API REST, i contenuti devono essere codificati in base64 prima di poter essere decriptati da Cloud KMS.
Per decriptare i dati criptati, utilizza il metodo rawDecrypt
:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:rawDecrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"ciphertext": "BASE64_ENCODED_DATA", "additionalAuthenticatedData": "BASE64_ENCODED_AAD", "initializationVector": "BASE64_ENCODED_IV"}'
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto che contiene il keyring.LOCATION
: la località Cloud KMS del keyring.KEY_RING
: il nome del keyring che contiene la chiave.KEY_NAME
: il nome della chiave da utilizzare per la decriptazione.KEY_VERSION
: l'ID della versione della chiave da utilizzare per la decriptazione.BASE64_ENCODED_DATA
: il testo cifrato codificato in base64 che vuoi decriptare.BASE64_ENCODED_AAD
: l'elemento aggiuntivo con codifica Base64 i dati autenticati utilizzati durante la crittografia dei dati. Questo campo si applica solo agli algoritmiAES-GCM
.BASE64_ENCODED_IV
: l'inizializzazione con codifica Base64 vettore utilizzato durante la crittografia dei dati.
L'output è un oggetto JSON contenente il testo non crittografato decriptato sotto forma di stringa con codifica base64.
Passaggi successivi
- Scopri di più sull'importazione di una versione della chiave
- Scopri di più sulla crittografia envelope.
- Prova il corso Cripta e decripta i dati con il codelab di Cloud KMS.