Cet article fournit des informations sur la création et la validation de signatures numériques basées sur des clés MAC.
Une seule clé, partagée par le producteur et le vérificateur, permet de calculer un tag MAC à partir des données d'entrée. La balise MAC sert de signature numérique. Lorsque l'outil de vérification reçoit le message et la balise MAC associée, il génère sa propre balise à partir du contenu des messages. L'outil de vérification peut ensuite comparer le tag reçu au tag généré pour déterminer s'il correspond. Si les deux tags correspondent, l'outil de vérification sait que le message qu'il a reçu est identique à celui signé par le producteur.
Avant de commencer
Lorsque vous créez des signatures numériques MAC, vous devez utiliser une clé dotée de l'objectif de clé
MAC
. Lorsque vous créez la clé, utilisezMAC
.Assurez-vous que la taille du fichier que vous souhaitez signer est limitée. Lorsque vous utilisez une clé Cloud HSM pour créer ou valider des signatures MAC, la taille de fichier maximale est de 16 Kio. Pour toutes les autres clés, la taille de fichier maximale est de 64 Kio.
Rôles requis
Pour obtenir les autorisations dont vous avez besoin pour créer et valider des signatures, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur la clé:
-
Pour créer des signatures : Signature de CryptoKey Cloud KMS (
roles/cloudkms.signer
) -
Pour valider les signatures :
Vérificateur de CryptoKey Cloud KMS (
roles/cloudkms.verifier
) -
Pour créer et valider des signatures :
Signature/validation de CryptoKey Cloud KMS (
roles/cloudkms.signerVerifier
)
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Créer une signature MAC
gcloud
Pour utiliser Cloud KMS via la ligne de commande, commencez par installer ou mettre à niveau la dernière version de Google Cloud CLI.
gcloud kms mac-sign \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
Remplacez les éléments suivants :
KEY_VERSION
: numéro de version de la clé.KEY_NAME
: nom de la clé.KEY_RING
: nom du trousseau de clés contenant la clé.LOCATION
: emplacement Cloud KMS du trousseau de clés.INPUT_FILE_PATH
: chemin d'accès local au fichier que vous souhaitez signer.SIGNED_FILE_PATH
: chemin d'accès local où vous souhaitez enregistrer la signature générée.
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.
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.
Utilisez la méthode CryptoKeyVersions.macSign
pour effectuer la signature. La réponse de cette méthode contient la signature encodée en base64.
Valider une signature MAC
gcloud
Pour utiliser Cloud KMS via la ligne de commande, commencez par installer ou mettre à niveau la dernière version de Google Cloud CLI.
gcloud kms mac-verify \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
KEY_VERSION
: numéro de version de la clé.KEY_NAME
: nom de la clé.KEY_RING
: nom du trousseau de clés contenant la clé.LOCATION
: emplacement Cloud KMS du trousseau de clés.INPUT_FILE_PATH
: chemin d'accès local au fichier signé.SIGNED_FILE_PATH
: chemin d'accès local au fichier de signature à valider.
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.
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.
Utilisez la méthode CryptoKeyVersions.macVerify
pour effectuer la validation. La signature à valider doit être encodée en base64. La réponse de cette méthode contient une valeur booléenne indiquant si la signature a été validée ou non.