Vous trouverez dans cette rubrique des informations sur la création et l'utilisation d'une clé RSA pour le chiffrement asymétrique. Si vous souhaitez utiliser des clés asymétriques pour créer et valider des signatures, consultez la page Créer et valider des signatures numériques. Si vous souhaitez utiliser des clés symétriques pour le chiffrement et le déchiffrement, consultez la page Chiffrer et déchiffrer des données.
Le chiffrement asymétrique utilise la partie clé publique de la clé asymétrique, et le déchiffrement utilise la partie clé privée. Une fonctionnalité de Cloud Key Management Service permet de récupérer la clé publique, et une autre fonctionnalité permet de déchiffrer le texte qui a été chiffré avec la clé publique. Cloud KMS n'autorise pas l'accès direct à la clé privée.
Avant de commencer
Cette rubrique fournit des exemples qui s'exécutent sur la ligne de commande. Pour simplifier l'utilisation des exemples, utilisez Cloud Shell. L'exemple de chiffrement utilise OpenSSL, pré-installé sur Cloud Shell.
Créez une clé asymétrique dotée de l'objectif
ASYMMETRIC_DECRYPT. Pour savoir quels algorithmes sont compatibles avecASYMMETRIC_DECRYPT, consultez la page Algorithmes de chiffrement asymétrique. Vous ne pouvez pas suivre cette procédure avec une clé dotée de l'objectifASYMMETRIC_SIGN.Si vous souhaitez utiliser la ligne de commande, installez OpenSSL si vous ne l'avez pas déjà. Si vous utilisez Cloud Shell, OpenSSL est déjà installé.
- Utilisateurs de macOS : la version d'OpenSSL installée sur macOS n'est pas compatible avec les options utilisées pour déchiffrer les données dans cette rubrique. Pour suivre ces étapes sur macOS, installez OpenSSL à partir de Homebrew.
Contrôle des accès à la clé
Pour un utilisateur ou un service qui récupère la clé publique, accordez l'autorisation
cloudkms.cryptoKeyVersions.viewPublicKeysur la clé asymétrique. La clé publique est obligatoire pour chiffrer les données.Pour un utilisateur ou un service qui déchiffre des données préalablement chiffrées avec la clé publique, accordez l'autorisation
cloudkms.cryptoKeyVersions.useToDecryptsur la clé asymétrique.
Pour en savoir plus sur les autorisations et les rôles dans Cloud KMS, consultez la page Autorisations et rôles.
Chiffrer des données
Pour chiffrer des données à l'aide d'une clé de chiffrement asymétrique, récupérez la clé publique et utilisez-la pour chiffrer les données.
gcloud
Dans cet exemple, OpenSSL doit être installé sur votre système local.
Télécharger la clé publique
Téléchargez la clé publique :
gcloud kms keys versions get-public-key key-version \
--key key \
--keyring key-ring \
--location location \
--output-file public-key-path
Remplacez key-version par la version de clé contenant la clé publique. Remplacez key par le nom de la clé. Remplacez key-ring par le nom du trousseau de clés où se trouve la clé. Remplacez location par l'emplacement Cloud KMS du trousseau de clés. Remplacez public-key-path par l'emplacement pour enregistrer la clé publique sur le système local.
Chiffrer des données
Chiffrez les données en utilisant la clé publique que vous venez de télécharger, puis enregistrez le résultat dans un fichier :
openssl pkeyutl -in cleartext-data-input-file \
-encrypt \
-pubin \
-inkey public-key-path \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 \
> encrypted-data-output-file
Remplacez cleartext-data-input-file par le chemin d'accès et le nom du fichier à chiffrer.
Remplacez public-key-path par le chemin d'accès et le nom du fichier où vous avez téléchargé la clé publique.
Remplacez encrypted-data-output-file par le chemin d'accès et le nom du fichier pour enregistrer les données chiffrées.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Cloud KMS pour C#.
Go
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour la dernière version de Google Cloud CLI.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.