1. Présentation
Cloud KMS est un service de gestion de clés hébergé dans le cloud qui vous permet de gérer les clés cryptographiques de vos services cloud de la même manière que sur site. Il est compatible avec le chiffrement, le déchiffrement, la signature et la validation à l'aide de divers types et sources de clés, y compris Cloud HSM pour les clés avec support matériel. Ce tutoriel explique comment signer et valider des données à l'aide de clés Cloud KMS asymétriques.
Ce que vous allez apprendre
- Activer l'API Cloud KMS
- Créer un trousseau de clés
- Créer une clé de chiffrement pour la signature/vérification asymétrique
2. Préparation
Configuration de l'environnement d'auto-formation
- Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous n'avez pas encore de compte Gmail ou G Suite, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID
tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Dans cet atelier de programmation, vous allez utiliser Cloud Shell, un environnement virtualisé sans frais exécuté sur Google Cloud. Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :
Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Sauf indication contraire, exécutez toutes les commandes à partir de ce shell.
3. Activer le service Cloud KMS
Avant de pouvoir utiliser Cloud KMS, vous devez d'abord activer le service dans votre projet. Cette opération ne doit être effectuée qu'une seule fois par projet. Pour activer le service Cloud KMS, exécutez la commande suivante:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
L'activation peut prendre jusqu'à une minute. La commande indiquera que l'opération a réussi une fois terminée.
4. Créer une clé KMS
Créez un trousseau de clés Cloud KMS. Dans Cloud KMS, un trousseau de clés est une collection logique de clés cryptographiques. Le trousseau de clés contient des métadonnées sur les clés, telles que leur emplacement. Créez un trousseau de clés nommé my-keyring
dans la région global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Créez maintenant une clé de chiffrement nommée my-asymmetric-signing-key
avec l'objectif asymmetric-signing
dans le trousseau que vous venez de créer.
$ gcloud kms keys create "my-asymmetric-signing-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Données de signature
Contrairement au chiffrement, le déchiffrement de données chiffrées à l'aide d'une clé Cloud KMS asymétrique nécessite un accès en ligne au service Cloud KMS. Déchiffrez le texte chiffré du fichier à l'aide de l'outil de ligne de commande gcloud
:
Créez un fichier contenant les données à signer, puis utilisez l'outil de ligne de commande gcloud
pour les signer avec la clé Cloud KMS:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --version "1" \ --digest-algorithm "sha512" \ --input-file ./data.txt \ --signature-file ./data.txt.sig
La signature est enregistrée dans data.txt.sig
sur le disque. Si vous ouvrez le fichier data.txt.sig
, vous remarquerez qu'il contient des caractères étranges et non imprimables. En effet, les données obtenues sont au format binaire.
Lorsque vous stockez la signature dans une base de données ou que vous la transmettez dans le cadre d'une requête HTTP, vous devrez peut-être encoder les données. Le mécanisme d'encodage le plus courant est base64.
6. Vérifier les données
Avec les clés asymétriques, Cloud KMS n'effectue pas directement la validation. Au lieu de cela, il fournit l'accès à une clé publique, et vous vérifiez les données à l'aide de cette clé publique via la cryptographie à clé publique. Avec les clés asymétriques, la validation peut être effectuée entièrement hors connexion et ne nécessite pas d'accès à Cloud KMS ni à d'autres API Google Cloud. La validation est effectuée à l'aide d'un outil cryptographique tel que openssl
, ou à l'aide d'un langage de programmation ou d'une bibliothèque compatible avec la cryptographie à clé publique.
Téléchargez la clé publique depuis Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --output-file ./key.pub
Vérifiez la signature par rapport à la clé publique à l'aide de l'outil de ligne de commande openssl
:
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
La console affiche un message de réussite, indiquant que la signature numérique est valide.
Verified OK
7. Félicitations !
Vous avez activé l'API Cloud KMS, créé une clé de signature asymétrique, puis signé et validé des données. Cloud KMS est un produit puissant, et la signature/validation ne représente qu'une infime partie de ses fonctionnalités.
Nettoyage
Si vous avez terminé votre exploration, envisagez de supprimer votre projet.
- Accédez à la console Cloud Platform.
- Sélectionnez le projet que vous souhaitez arrêter, puis cliquez sur "Supprimer" en haut de la page. La suppression du projet est planifiée.
En savoir plus
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.