Chiffrement symétrique brut

Cette rubrique vous explique comment effectuer les opérations de clé symétrique brutes suivantes:

  • Chiffrez du texte ou du contenu en texte brut binaire en local ou à l'aide de Cloud KMS.
  • Déchiffrez les textes chiffrés en local ou à l'aide de Cloud KMS.

Si vous préférez effectuer une opération de clé symétrique standard (non brute), consultez la section Chiffrer et déchiffrer des données avec une clé symétrique.

Le chiffrement symétrique brut vous permet de chiffrer et de déchiffrer vos données localement sur site ou à l'aide de Cloud KMS, et de déplacer les données chiffrées entre différentes bibliothèques et différents fournisseurs de services sans avoir à les déchiffrer au préalable. Cette fonctionnalité dépend de la capacité d'accès à la clé au point d'opération. Si vous souhaitez utiliser le texte chiffré en dehors de Google Cloud, vous devez utiliser une clé importée, car les clés générées dans Cloud KMS ne peuvent pas être exportées. Ces algorithmes génèrent des textes chiffrés standards pouvant être déchiffrés par n'importe quel service de déchiffrement standard. Nous acceptons les algorithmes de chiffrement symétrique brut suivants:

  • AES-128-GCM
  • AES-256-GCM
  • AES-128-CBC
  • AES-256-CBC
  • AES-128-CTR
  • AES-256-CTR

Notez les points suivants au sujet de ces algorithmes de chiffrement brut:

  • AES-GCM fournit une authentification basée sur les données authentifiées supplémentaires (AAD) et génère un tag d'authentification. Il s'agit de l'algorithme de chiffrement recommandé. Les données chiffrées à l'aide des algorithmes AES-GCM ne peuvent pas être déchiffrées sans la chaîne AAD fournie.

  • AES-CBC exige que la taille du texte brut soit un multiple de la taille du bloc (16 octets). Si le texte brut n'est pas un multiple de la taille du bloc, remplissez le texte brut avant de le chiffrer. Sinon, l'opération échouera et générera une erreur indiquant le problème.

  • AES-CBC et AES-CTR ne sont pas des schémas de chiffrement authentifiés, ce qui signifie qu'ils peuvent présenter un risque plus élevé d'utilisation abusive accidentelle. Elles sont proposées pour répondre aux besoins anciens et d'interopérabilité, et doivent être utilisées avec prudence. Pour éviter tout usage abusif, l'utilisation de ces algorithmes de chiffrement nécessite les autorisations IAM suivantes:

    • cloudkms.cryptoKeyVersions.manageRawAesCbcKeys pour AES-CBC.
    • cloudkms.cryptoKeyVersions.manageRawAesCtrKeys pour AES-CTR.

Rôles requis

Afin d'obtenir les autorisations dont vous avez besoin pour utiliser le chiffrement brut, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur votre clé:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Rôles supplémentaires pour les algorithmes de chiffrement brut non authentifiés

  • Pour utiliser des clés AES-CBC: gestionnaire de clés AES-CBC brutes de l'expert Cloud KMS (roles/cloudkms.expertRawAesCbc)
  • Pour utiliser des clés AES-CTR: gestionnaire de clés AES-CTR brutes de l'expert Cloud KMS (roles/cloudkms.expertRawAesCtr)

Avant de commencer

  • Accordez les autorisations de chiffrement symétrique brutes mentionnées aux comptes principaux prévus.
  • Créez un trousseau de clés comme décrit dans la section "Créer des trousseaux de clés".
  • Créez et importez une clé de chiffrement symétrique brute comme décrit dans les sections Créer des clés et Importer des clés.

Chiffrer

gcloud

Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer la dernière version de Google Cloud CLI ou passer à la dernière version de 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

Remplacez les éléments suivants :

  • LOCATION: emplacement Cloud KMS du trousseau de clés ;

  • KEY_RING: nom du trousseau de clés contenant la clé.

  • KEY_NAME: nom de la clé à utiliser pour le chiffrement.

  • KEY_VERSION: ID de la version de clé à utiliser pour le chiffrement.

  • INPUT_FILE_PATH: chemin d'accès local au fichier pour la lecture des données en texte brut.

  • OUTPUT_FILE_PATH: chemin d'accès local au fichier pour l'enregistrement de la sortie chiffrée.

Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help.

API

Ces exemples utilisent curl comme client HTTP pour démontrer l'utilisation de l'API. Pour en savoir plus sur le contrôle des accès, consultez la page Accéder à l'API Cloud KMS.

Lorsque vous utilisez JSON et l'API REST, le contenu doit être encodé en base64 avant de pouvoir être chiffré par Cloud KMS.

Utilisez la méthode rawEncrypt pour chiffrer des données en texte brut:

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"}'

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet contenant le trousseau de clés.
  • LOCATION: emplacement Cloud KMS du trousseau de clés ;
  • KEY_RING: nom du trousseau de clés contenant la clé.
  • KEY_NAME: nom de la clé à utiliser pour le chiffrement.
  • KEY_VERSION: ID de la version de clé à utiliser pour le chiffrement.
  • BASE64_ENCODED_INPUT: données en texte brut encodées en base64 que vous souhaitez chiffrer.
  • BASE64_ENCODED_AAD: données authentifiées supplémentaires encodées en base64 qui sont utilisées pour fournir des garanties d'intégrité et d'authenticité. Ce champ ne s'applique qu'aux algorithmes AES-GCM.

La sortie est un objet JSON contenant le texte chiffré et le vecteur d'initialisation associé sous forme de chaînes encodées en base64.

Déchiffrer

gcloud

Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer la dernière version de Google Cloud CLI ou passer à la dernière version de 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

Remplacez les éléments suivants :

  • LOCATION: emplacement Cloud KMS du trousseau de clés ;

  • KEY_RING: nom du trousseau de clés contenant la clé.

  • KEY_NAME: nom de la clé à utiliser pour le chiffrement.

  • KEY_VERSION: ID de la version de clé à utiliser pour le chiffrement.

  • INPUT_FILE_PATH: chemin d'accès local au texte chiffré que vous souhaitez déchiffrer.

  • OUTPUT_FILE_PATH: chemin d'accès au fichier local dans lequel vous souhaitez enregistrer le texte brut déchiffré.

Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help.

API

Ces exemples utilisent curl comme client HTTP pour démontrer l'utilisation de l'API. Pour en savoir plus sur le contrôle des accès, consultez la page Accéder à l'API Cloud KMS.

Lorsque vous utilisez l'API REST, le contenu doit être encodé en base64 avant de pouvoir être déchiffré par Cloud KMS.

Pour déchiffrer les données chiffrées, utilisez la méthode 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"}'

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet contenant le trousseau de clés.
  • LOCATION: emplacement Cloud KMS du trousseau de clés ;
  • KEY_RING: nom du trousseau de clés contenant la clé.
  • KEY_NAME: nom de la clé à utiliser pour le déchiffrement.
  • KEY_VERSION: ID de la version de clé à utiliser pour le déchiffrement.
  • BASE64_ENCODED_DATA: texte chiffré encodé en base64 que vous souhaitez déchiffrer.
  • BASE64_ENCODED_AAD: données authentifiées supplémentaires encodées en base64 qui ont été utilisées lors du chiffrement des données. Ce champ ne s'applique qu'aux algorithmes AES-GCM.
  • BASE64_ENCODED_IV: vecteur d'initialisation encodé en base64 qui a été utilisé lors du chiffrement des données.

La sortie est un objet JSON contenant le texte brut déchiffré sous la forme d'une chaîne encodée en base64.

Étapes suivantes