Crittografia simmetrica non elaborata

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 utilizzando AES-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 e AES-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 per AES-CBC.
    • cloudkms.cryptoKeyVersions.manageRawAesCtrKeys per AES-CTR.
    di Gemini Advanced.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per usare la crittografia non elaborata, chiedi all'amministratore di concederti i seguenti ruoli IAM sulla chiave:

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 algoritmi AES-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 algoritmi AES-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