En esta página se explica cómo crear y validar firmas digitales basadas en claves MAC.
Se usa una sola clave, compartida por el productor y el verificador, para calcular una etiqueta MAC a partir de los datos de entrada. La etiqueta MAC actúa como firma digital. Cuando el verificador recibe el mensaje y su etiqueta MAC asociada, genera su propia etiqueta a partir del contenido del mensaje. El verificador puede comparar la etiqueta recibida con la que ha generado para comprobar si coinciden. Si las dos etiquetas coinciden, el verificador sabe que el mensaje que ha recibido es el mismo que el mensaje firmado por el productor.
Antes de empezar
Al crear firmas digitales MAC, debes usar una clave que tenga el propósito de clave
MAC
. Cuando crees la clave, usaMAC
.Comprueba que el archivo que quieres firmar no supere el límite de tamaño.Cuando usas una clave de Cloud HSM, el tamaño máximo del archivo para el que puedes crear una firma MAC es de 16 KiB. En el caso de todas las demás claves, el tamaño máximo del archivo es de 64 KiB.
Roles obligatorios
Para obtener los permisos que necesitas para crear y verificar firmas, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la clave:
-
Para crear firmas:
Firmante de CryptoKey de Cloud KMS (
roles/cloudkms.signer
) -
Para verificar firmas, haz lo siguiente:
Verificador de CryptoKey de Cloud KMS (
roles/cloudkms.verifier
) -
Para crear y verificar firmas, sigue estos pasos:
Firmante o verificador de CryptoKey de Cloud KMS (
roles/cloudkms.signerVerifier
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear una firma MAC
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
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
Haz los cambios siguientes:
KEY_VERSION
: número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.INPUT_FILE_PATH
: la ruta local del archivo que quieres firmar.SIGNED_FILE_PATH
: la ruta local en la que quieres guardar la firma generada.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Usa el método CryptoKeyVersions.macSign
para realizar la firma. La respuesta de este método contiene la firma codificada en base64.
Verificar una firma MAC
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
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
: número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.INPUT_FILE_PATH
: ruta local al archivo que se ha firmado.SIGNED_FILE_PATH
: la ruta local al archivo de firma que se va a verificar.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Usa el método CryptoKeyVersions.macVerify
para realizar la verificación. La firma que se va a verificar debe estar codificada en Base64. La respuesta de este método contiene un valor booleano que indica si la firma se ha verificado correctamente.