Cette rubrique explique comment effectuer les opérations de clé symétrique brutes suivantes :
- Chiffrer du texte ou du contenu binaire en texte brut en local ou à l'aide de Cloud KMS
- Déchiffrez les textes chiffrés localement ou à l'aide de Cloud KMS.
Si vous souhaitez plutôt effectuer une opération de clé symétrique standard (non brute), consultez la page 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 déplacer des données chiffrées différentes bibliothèques et différents fournisseurs de services sans avoir à le déchiffrer au préalable. Cette fonctionnalité dépend de la capacité d'accès à la clé au moment opération. Si vous souhaitez utiliser les textes chiffrés 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 de chiffrement génèrent des textes chiffrés standards qui peuvent être déchiffrés par un service de déchiffrement standard. Nous acceptons les requêtes symétriques brutes suivantes : algorithmes de chiffrement:
AES-128-GCM
AES-256-GCM
AES-128-CBC
AES-256-CBC
AES-128-CTR
AES-256-CTR
Notez les points suivants concernant ces algorithmes de chiffrement brut:
AES-GCM
fournit une authentification basée sur les données d'authentification supplémentaires (AAD) et génère une balise d'authentification. Il s'agit de l'algorithme de chiffrement recommandé à utiliser. Les données chiffrées à l'aide d'algorithmesAES-GCM
ne peuvent pas être déchiffrées sans l'AAD fourni.AES-CBC
exige que la taille du texte brut soit un multiple de la taille de bloc (16 octets). Si le texte en clair n'est pas un multiple de la taille du bloc, remplir le texte en clair avant de le chiffrer ; sinon l'opération échouera avec une erreur indiquant le problème.AES-CBC
etAES-CTR
ne sont pas des schémas de chiffrement authentifiés, ce qui signifie qu'elles peuvent présenter un risque plus grand d'usage abusif accidentel. Ils sont proposés pour répondre aux besoins d'interopérabilité et d'ancienneté, et doivent être utilisés avec précaution. Pour éviter toute utilisation abusive, l'utilisation de ces algorithmes de chiffrement nécessite les autorisations IAM suivantes :cloudkms.cryptoKeyVersions.manageRawAesCbcKeys
pourAES-CBC
.cloudkms.cryptoKeyVersions.manageRawAesCtrKeys
pourAES-CTR
.
Rôles requis
Pour obtenir les autorisations dont vous avez besoin pour utiliser le chiffrement brut, demandez à votre administrateur de vous accorder le les rôles IAM suivants sur votre clé:
-
Pour chiffrer uniquement:
Chiffreur de CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyEncrypter
) -
Pour déchiffrer uniquement :
Déchiffreur de CryptoKey Cloud KMS (
roles/cloudkms.cryptoKeyDecrypter
) -
Pour chiffrer et déchiffrer :
Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
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 brut mentionnées aux principaux concernés.
- 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 Installez 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 au fichier local pour la lecture des données en texte brut.OUTPUT_FILE_PATH
: chemin d'accès au fichier local pour enregistrer 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 codé 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ésKEY_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
: l'entrée supplémentaire encodée en base64 des données authentifiées qui sont utilisées pour assurer l’intégrité et l’authenticité garanties. Ce champ ne s'applique qu'aux algorithmesAES-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 ou mettre à jour 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 au fichier local du 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 pour pouvoir être déchiffrées 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ésKEY_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 utilisées lors du chiffrement des données. Ce champ ne s'applique qu'aux algorithmesAES-GCM
.BASE64_ENCODED_IV
: vecteur d'initialisation encodé en base64 utilisé lors du chiffrement des données.
La sortie est un objet JSON contenant le texte brut déchiffré sous forme de est une chaîne encodée en base64.
Étape suivante
- Découvrez comment importer une version de clé.
- Consultez la section Chiffrement encapsulé.
- Essayez l'Atelier de programmation Cloud KMS : chiffrer et déchiffrer des données.