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. La balise MAC sert de signature numérique. Lorsque le vérificateur reçoit le message et le tag MAC associé, il génère sa propre balise à partir du contenu du message. Le vérificateur peut ensuite comparer la balise reçue à celle générée pour voir si elles correspondent. Si les deux tags correspondent, le vérificateur sait que le message qu'il a reçu est identique au message 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 respecte la limite de taille.Lorsque vous utilisez une clé Cloud HSM, la taille maximale de fichier pour laquelle vous pouvez créer une signature MAC est de 16 Ko. Pour toutes les autres clés, la taille maximale de fichier est de 64 Ko.
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 :
Signature de clé de chiffrement Cloud KMS (
roles/cloudkms.signer
) -
Pour valider les signatures :
Validateur de CryptoKey Cloud KMS (
roles/cloudkms.verifier
) -
Pour créer et valider des signatures :
Signature/Validation de clé de chiffrement Cloud KMS (
roles/cloudkms.signerVerifier
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
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 sur la ligne de commande, commencez par installer ou mettre à jour 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 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 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 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.