En este tema, se proporciona información sobre cómo crear y validar firmas digitales con base en claves MAC.
Se usa una clave única, compartida por el productor y el verificador, para calcular una MAC de los datos de entrada. La etiqueta MAC funciona como una firma digital. Cuando el verificador recibe el mensaje y su etiqueta MAC asociada, genera su etiqueta propia del contenido del mensaje. Luego, el verificador puede comparar la etiqueta recibida con la etiqueta generada para ver si coinciden. Si las dos etiquetas coinciden, el verificador sabrá que el mensaje que recibió es el mismo que el mensaje firmados por el productor.
Antes de comenzar
Cuando crees firmas digitales MAC, debes usar una clave que tenga el propósito de clave de
MAC
. Cuando crees la clave, usaMAC
.Asegúrate de que el archivo que quieres firmar esté dentro del límite de tamaño. Cuándo usando una clave de Cloud HSM para crear o verificar firmas MAC, el tamaño máximo es de 16 KiB. Para todas las demás claves, el tamaño máximo del archivo es 64 KiB.
Roles obligatorios
Si quieres obtener los permisos que necesitas para crear y verificar firmas, solicita a tu administrador que te otorgue el los siguientes roles de IAM en la clave:
-
Para crear firmas, usa lo siguiente:
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, usa los siguientes roles:
Firmante/verificador de CryptoKey de Cloud KMS (
roles/cloudkms.signerVerifier
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea 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 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
Reemplaza lo siguiente:
KEY_VERSION
: Es el número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.INPUT_FILE_PATH
: Es la ruta de acceso local al archivo que deseas firmar.SIGNED_FILE_PATH
: Es la ruta de acceso local en la que deseas 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 configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Usa el método CryptoKeyVersions.macSign
para realizar la firma. La respuesta de este método contiene la firma codificada en base64.
Verifica una firma de MAC
gcloud
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente 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
: Es el número de versión de la clave.KEY_NAME
: el nombre de la clave.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero de claves.INPUT_FILE_PATH
: Es la ruta de acceso local al archivo que se firmó.SIGNED_FILE_PATH
: Es la ruta de acceso local al archivo de firma al verificarse.
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 configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Usa el método CryptoKeyVersions.macVerify
para realizar la verificación. La firma que se verificará debe estar codificada en base64. La respuesta de este método contiene un valor booleano que indica si la firma se verificó con éxito o no.