Questo argomento mostra come eseguire le seguenti operazioni con le chiavi simmetriche non elaborate:
- Cripta contenuti di testo o binari in formato non criptato localmente o utilizzando Cloud KMS.
- Decripta i testi criptati localmente o utilizzando Cloud KMS.
Se invece vuoi eseguire un'operazione con chiave simmetrica normale (non non elaborata), vedi Crittografia e decriptazione dei dati con una chiave simmetrica.
La crittografia simmetrica non elaborata consente di criptare e decriptare i dati localmente on-premise o utilizzando Cloud KMS e di spostare i dati criptati tra diverse librerie e diversi fornitori di servizi senza doverli prima decriptare. Questa funzionalità dipende dalla possibilità di accedere alla chiave al momento dell'operazione. Se vuoi utilizzare i testi criptati al di fuori di Google Cloud, devi utilizzare una chiave importata perché le chiavi generate in Cloud KMS non possono essere esportate. Questi algoritmi di crittografia generano testi cifrati standard che possono essere decriptati da qualsiasi servizio di decrittografia standard. Supportiamo i seguenti algoritmi di crittografia simmetrica non elaborata:
AES-128-GCM
AES-256-GCM
AES-128-CBC
AES-256-CBC
AES-128-CTR
AES-256-CTR
Tieni presente quanto segue in merito a questi algoritmi di crittografia non elaborati:
AES-GCM
fornisce l'autenticazione in base ai dati autenticati aggiuntivi (AAD) e genera un tag di autenticazione. È l'algoritmo di crittografia consigliato. I dati criptati utilizzando gli algoritmiAES-GCM
non possono essere decriptati senza l'AAD fornito.AES-CBC
richiede che la dimensione del testo non crittografato sia un multiplo della dimensione del blocco (16 byte). Se il testo non crittografato non è un multiplo della dimensione del blocco, aggiungi il padding prima di crittografarlo; in caso contrario, l'operazione non andrà a buon fine e verrà visualizzato un errore che indica il problema.AES-CBC
eAES-CTR
non sono schemi di crittografia autenticata, il che significa che possono comportare un rischio maggiore di uso improprio accidentale. Vengono offerti per supportare le esigenze di interoperabilità e legacy e devono essere utilizzati con cautela. Per evitare un uso improprio occasionale, l'utilizzo di 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 utilizzare la crittografia non elaborata, chiedi all'amministratore di concederti i seguenti ruoli IAM per la chiave:
-
Per la sola crittografia:
Cloud KMS CryptoKey Encrypter (
roles/cloudkms.cryptoKeyEncrypter
) -
Per la sola decriptazione:
Cloud KMS CryptoKey Decrypter (
roles/cloudkms.cryptoKeyDecrypter
) -
Per criptare e decriptare:
Autore crittografia/decrittografia CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Ruoli aggiuntivi per algoritmi di crittografia non autenticati
- Per utilizzare le chiavi
AES-CBC
: Cloud KMS Expert Raw AES-CBC Key Manager (roles/cloudkms.expertRawAesCbc
) - Per utilizzare le chiavi
AES-CTR
: Cloud KMS Expert Raw AES-CTR Key Manager (roles/cloudkms.expertRawAesCtr
)
Prima di iniziare
- Concedi le autorizzazioni di crittografia simmetrica non elaborata menzionate ai principal previsti.
- Crea un keyring come descritto nella sezione relativa alla creazione di keyring.
- Crea e importa una chiave di crittografia simmetrica non elaborata come descritto in Creazione di chiavi e Importazione di chiavi.
Cripta
gcloud
Per utilizzare Cloud KMS dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 posizione di Cloud KMS delle chiavi automatizzate.KEY_RING
: il nome delle chiavi automatizzate che contengono 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 per la lettura dei dati non criptati.OUTPUT_FILE_PATH
: il percorso del file locale per salvare l'output criptato.
Per informazioni su tutti i flag e i valori possibili, esegui il comando con il flag
--help
.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per saperne di più sul controllo dell'accesso, consulta Accesso all'API Cloud KMS.
Quando utilizzi 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 criptato:
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 portachiavi.LOCATION
: la posizione di Cloud KMS delle chiavi automatizzate.KEY_RING
: il nome delle chiavi automatizzate che contengono 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
: i dati non criptati codificati in base64 che vuoi criptare.BASE64_ENCODED_AAD
: i dati autenticati aggiuntivi codificati in base64 utilizzati per fornire garanzie di integrità e autenticità. Questo campo si applica solo agli algoritmiAES-GCM
.
L'output è un oggetto JSON contenente il testo crittografato criptato e il vettore di inizializzazione associato come stringhe con codifica base64.
Decripta
gcloud
Per utilizzare Cloud KMS dalla riga di comando, devi prima installare o eseguire l'upgrade all'ultima versione 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 posizione di Cloud KMS delle chiavi automatizzate.KEY_RING
: il nome delle chiavi automatizzate che contengono 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 cifrato che vuoi decriptare.OUTPUT_FILE_PATH
: il percorso del file locale in cui vuoi salvare il testo non crittografato decriptato.
Per informazioni su tutti i flag e i valori possibili, esegui il comando con il flag
--help
.
API
Questi esempi utilizzano curl come client HTTP per dimostrare l'utilizzo dell'API. Per saperne di più sul controllo dell'accesso, consulta 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 portachiavi.LOCATION
: la posizione di Cloud KMS delle chiavi automatizzate.KEY_RING
: il nome delle chiavi automatizzate che contengono la chiave.KEY_NAME
: il nome della chiave da utilizzare per la decrittografia.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
: i dati autenticati aggiuntivi codificati in Base64 utilizzati durante la crittografia dei dati. Questo campo si applica solo agli algoritmiAES-GCM
.BASE64_ENCODED_IV
: il vettore di inizializzazione codificato in Base64 utilizzato per criptare i dati.
L'output è un oggetto JSON contenente il testo non criptato decriptato come stringa con codifica base64.
Passaggi successivi
- Scopri di più sull'importazione di una versione della chiave
- Scopri di più sulla crittografia envelope.
- Prova il codelab Criptare e decriptare i dati con Cloud KMS.