Cette rubrique présente Cloud HSM et vous explique comment créer et utiliser des clés de chiffrement protégées par HSM dans le service Cloud Key Management Service.
Qu'est-ce que Cloud HSM ?
Cloud HSM est un service de module de sécurité matériel sur le cloud qui permet d'héberger des clés de chiffrement et d'effectuer des opérations cryptographiques dans un cluster de modules HSM certifiés FIPS 140-2 niveau 3. La gestion de ce cluster HSM étant assurée par Google, vous n'avez pas à vous soucier des questions de mise en cluster, de scaling ni de déploiement de correctifs. Dans la mesure où Cloud HSM utilise Cloud KMS comme interface, vous pouvez tirer parti de l'ensemble des avantages et des fonctionnalités offerts par Cloud KMS.
Créer un trousseau de clés
Lorsque vous créez une clé, vous l'ajoutez à un trousseau dans un emplacement Google Cloud donné. Vous pouvez créer un trousseau de clés ou en utiliser un existant. Dans cette rubrique, vous allez créer un trousseau de clés et y ajouter une nouvelle clé.
Créez un trousseau de clés dans un emplacement Google Cloud compatible avec Cloud HSM.
UI Web
Accédez à la page Clés de chiffrement dans Cloud Console.
Cliquez sur Créer un trousseau.
Dans le champ Key ring name (Nom du trousseau), saisissez le nom souhaité pour le trousseau de clés.
Dans la liste déroulante Key ring location (Emplacement du trousseau), sélectionnez un emplacement tel que
"us-east1"
.Cliquez sur Créer.
Ligne de commande
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour le SDK Cloud.
gcloud kms keyrings create key-ring \ --location location
Remplacez key-ring par le nom du trousseau de clés. Remplacez location par l'emplacement Cloud KMS du trousseau de clés et de ses clés.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
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 exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
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.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --header "x-goog-user-project: project-id" \ --data "{\"name\": {\"key-ring-name\": {}}}"
Pour plus d'informations, consultez la documentation de l'API KeyRing.create
.
Créer une clé
Suivez ces étapes pour créer une clé Cloud HSM dans le trousseau et l'emplacement spécifiés.
UI Web
Accédez à la page Clés de chiffrement dans Cloud Console.
Cliquez sur le nom du trousseau de clés pour lequel vous souhaitez créer une clé.
Cliquez sur Créer une clé.
Dans la section Quel type de clé souhaitez-vous créer ?, sélectionnez Clé générée.
Dans le champ Nom de la clé, saisissez le nom de votre clé.
Cliquez sur le menu déroulant Niveau de protection, puis sélectionnez HSM.
Cliquez sur la liste déroulante Objectif et sélectionnez Chiffrement/déchiffrement symétriques.
Acceptez les valeurs par défaut pour Rotation period (Période de rotation) et Starting on (Rotation à partir du).
Cliquez sur Créer.
Ligne de commande
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour le SDK Cloud.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Remplacez key par le nom de la nouvelle clé. Remplacez key-ring par le nom du trousseau de clés existant où sera située la clé. Remplacez location par l'emplacement Cloud KMS du trousseau de clés.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
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 exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
Chiffrer des données
Maintenant que vous disposez d'une clé, vous pouvez vous en servir pour chiffrer un texte ou un contenu binaire.
Ligne de commande
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour le SDK Cloud.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Remplacez key par le nom de la clé à utiliser pour le chiffrement. 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 file-with-data-to-encrypt et file-to-store-encrypted-data par les chemins d'accès aux fichiers locaux pour la lecture des données en texte brut et l'enregistrement du résultat chiffré.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
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 exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
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.
Pour chiffrer des données, effectuez une requête POST
et fournissez les informations de projet et de clé appropriées, puis spécifiez le texte encodé en base64 à chiffrer dans le champ plaintext
du corps de la requête.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Voici un exemple de charge utile avec des données encodées en base64 :
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Déchiffrer le texte chiffré
Pour déchiffrer le contenu chiffré, vous devez utiliser la même clé que celle qui a servi à chiffrer ce contenu.
Ligne de commande
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour le SDK Cloud.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Remplacez key par le nom de la clé à utiliser pour le déchiffrement. Remplacez key-ring par le nom du trousseau de clés où sera située la clé. Remplacez location par l'emplacement Cloud KMS du trousseau de clés. Remplacez file-path-with-encrypted-data et file-path-to-store-plaintext par les chemins d'accès aux fichiers locaux pour la lecture des données chiffrées et l'enregistrement du résultat déchiffré.
Pour en savoir plus sur toutes les options et valeurs possibles, exécutez la commande avec l'option --help
.
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 exécuter ce code, commencez par configurer un environnement de développement Go, puis installez le SDK Cloud KMS pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Cloud KMS pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Cloud KMS pour Node.js.
PHP
Pour exécuter ce code, commencez par en apprendre plus sur l'utilisation de PHP sur Google Cloud, puis installez le SDK Cloud KMS pour PHP.
Python
Pour exécuter ce code, commencez par configurer un environnement de développement Python, puis installez le SDK Cloud KMS pour Python.
Ruby
Pour exécuter ce code, commencez par configurer un environnement de développement Ruby, puis installez le SDK Cloud KMS pour Ruby.
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.
Le texte déchiffré qui est renvoyé au format JSON depuis Cloud KMS est encodé en base64.
Pour déchiffrer des données chiffrées, effectuez une requête POST
et fournissez les informations de projet et de clé appropriées, puis spécifiez le texte chiffré (cipher) à déchiffrer dans le champ ciphertext
du corps de la requête.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Voici un exemple de charge utile avec des données encodées en base64 :
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Étapes suivantes
L'exemple de chiffrement présenté dans cette rubrique utilisait une clé symétrique dotée du niveau de protection HSM. Pour chiffrer à l'aide d'une clé asymétrique présentant le niveau de protection HSM, suivez les étapes décrites dans la page Chiffrer et déchiffrer des données avec une clé asymétrique en y apportant les modifications suivantes :
- Créez le trousseau de clés dans l'une des régions disponibles pour Cloud HSM.
- Créez la clé avec le niveau de protection HSM.
Pour effectuer une signature à courbe elliptique ou une signature RSA à l'aide d'une clé asymétrique dotée du niveau de protection HSM, suivez les étapes décrites dans la page Créer et valider des signatures en y apportant les modifications suivantes:
- Créez le trousseau de clés dans l'une des régions disponibles pour Cloud HSM.
- Créez la clé avec le niveau de protection HSM.
Commencez à utiliser l'API.
Consultez la documentation de référence sur l'API Cloud KMS.
Lisez les guides pratiques pour découvrir comment créer, alterner et définir des autorisations sur les clés.
Familiarisez-vous avec les concepts pour en savoir plus sur la hiérarchie des objets, les états des clés et la rotation des clés.
Apprenez-en plus sur la journalisation dans Cloud KMS. Notez que la journalisation est basée sur les opérations et s'applique aux clés présentant les deux niveaux de protection Logiciel et HSM.
Limites connues
La taille de bloc est limitée à 16 384 octets (contre 64 Kio pour les clés logicielles Cloud KMS) pour le texte brut et le texte chiffré fournis par l'utilisateur, y compris les données authentifiées supplémentaires.
Il est possible que Cloud HSM ne soit pas disponible dans certains emplacements multirégionaux ou birégionaux. Pour plus d'informations, consultez la section Régions disponibles pour Cloud HSM.
Si vous utilisez des clés Cloud HSM avec des intégrations de clés de chiffrement gérées par le client (CMEK, Customer-Managed Encryption Key) dans d'autres services Google Cloud, les emplacements que vous utilisez pour les services doivent correspondre exactement à ceux de vos clés Cloud HSM. Cela s'applique aux emplacements régionaux, birégionaux et multirégionaux.
Pour en savoir plus sur les intégrations de CMEK, consultez la section correspondante du document Chiffrement au repos.
Actuellement, les opérations de clé portant sur des clés stockées dans Cloud HSM peuvent entraîner une latence nettement supérieure à celle obtenue avec les clés logicielles Cloud KMS.
HSM hébergés
Google Cloud propose des options HSM supplémentaires, telles que l'architecture unique. Les HSM privés privés sont disponibles pour les clients qui peuvent héberger leurs propres HSM dans l'espace fourni par Google. Renseignez-vous auprès de votre responsable de compte pour en savoir plus.