Signer et valider des données avec Cloud KMS (asymétrique)

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

  1. 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.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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 :

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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.