Cet article fournit des informations sur la création et la validation de 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 une tag MAC à partir des données d'entrée. La balise MAC sert de signature numérique. Lorsque reçoit le message et le tag MAC associé, génère son à partir du contenu du message. L'outil de vérification peut alors comparer les données reçues par le tag généré pour voir s'ils correspondent. Si les deux tags correspondent, l'outil de vérification sait que le message 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
.Vérifiez que la taille du fichier que vous souhaitez signer est inférieure à la limite autorisée. Quand ? à l'aide d'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 maximale des fichiers 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 le les rôles IAM suivants sur la clé:
-
Pour créer des signatures:
Signataire de CryptoKey Cloud KMS (
roles/cloudkms.signer
) -
Pour valider des signatures:
Vérificateur de CryptoKey Cloud KMS (
roles/cloudkms.verifier
) -
Pour créer et valider des signatures:
Signature/validation de CryptoKey Cloud KMS autorisées (
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 Installez 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ésINPUT_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 le une 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 Installez 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ésINPUT_FILE_PATH
: chemin d'accès local au fichier qui a été 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.