Cette page vous explique comment créer et valider des signatures numériques basées sur des clés MAC.
Une clé unique, partagée par le producteur et le vérificateur, est utilisée pour calculer un tag MAC à partir des données d'entrée. Le tag MAC sert de signature numérique. Lorsque le vérificateur reçoit le message et le tag MAC associé, il génère son propre tag à partir du contenu du message. Le vérificateur peut ensuite comparer le tag reçu à celui qu'il a généré pour voir s'ils correspondent. Si les deux tags correspondent, le vérificateur sait que le message qu'il a reçu est le même que 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 le fichier que vous souhaitez signer ne dépasse pas la limite de taille de fichier.Lorsque vous utilisez une clé Cloud HSM, la taille maximale du fichier pour lequel vous pouvez créer une signature MAC est de 16 Kio. Pour toutes les autres clés, la taille maximale du fichier est de 64 Kio.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer et valider des signatures, demandez à votre administrateur de vous accorder les rôles IAM suivants sur la clé :
-
Pour créer des signatures :
Signataire de CryptoKeys Cloud KMS (
roles/cloudkms.signer
) -
Pour valider les signatures :
Validateur de CryptoKey Cloud KMS (
roles/cloudkms.verifier
) -
Pour créer et valider des signatures :
Signataire/Validateur de CryptoKeys Cloud KMS (
roles/cloudkms.signerVerifier
)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer une signature MAC
gcloud
Pour utiliser Cloud KMS sur la ligne de commande, commencez par installer ou mettre à jour 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 qui inclut 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 sur la ligne de commande, commencez par installer ou mettre à jour 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 qui inclut 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.