Neste tópico, apresentamos informações sobre como criar e validar assinaturas digitais com base em chaves MAC.
Uma única chave, compartilhada pelo produtor e pelo verificador, é usada para calcular um dos dados de entrada. A tag MAC serve como uma assinatura digital. Quando o verificador recebe a mensagem e a tag MAC associada, ele gera a própria tag com o conteúdo da mensagem. O verificador pode comparar a tag recebida com a tag gerada para saber se elas correspondem. Se as duas tags corresponderem, o verificador saberá que a mensagem recebida é a mesma assinada pelo produtor.
Antes de começar
Ao criar assinaturas digitais MAC, você precisa usar uma chave que tenha a finalidade de chave de
MAC
. Ao criar a chave, useMAC
.Verifique se o arquivo que você quer assinar está dentro do limite de tamanho. Quando usar uma chave do Cloud HSM para criar ou verificar assinaturas MAC, o tamanho máximo é 16 KiB. Para todas as outras chaves, o tamanho máximo do arquivo é de 64 KiB.
Funções exigidas
Para ter as permissões necessárias para criar e verificar assinaturas, peça ao administrador para conceder a você os seguintes papéis do IAM na chave:
-
Para criar assinaturas:
Signatário de CryptoKey do Cloud KMS (
roles/cloudkms.signer
) -
Para verificar assinaturas:
Verificador de CryptoKey do Cloud KMS (
roles/cloudkms.verifier
) -
Para criar e verificar assinaturas:
Signatário/verificador de CryptoKey do Cloud KMS (
roles/cloudkms.signerVerifier
)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Como criar uma assinatura MAC
gcloud
Para usar o Cloud KMS na linha de comando, primeiro Instale ou faça upgrade para a versão mais recente da 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
Substitua:
KEY_VERSION
: o número da versão da chave.KEY_NAME
: o nome da chave;KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do keyring no Cloud KMS.INPUT_FILE_PATH
: o caminho local para o arquivo que você quer assinar.SIGNED_FILE_PATH
: o caminho local em que você quer salvar o assinatura gerada.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help
.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Use o método CryptoKeyVersions.macSign
para realizar a assinatura. A resposta desse método contém a assinatura codificada em base64.
Como verificar uma assinatura MAC
gcloud
Para usar o Cloud KMS na linha de comando, primeiro Instale ou faça upgrade para a versão mais recente da 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
: o número da versão da chave.KEY_NAME
: o nome da chave;KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS do keyring.INPUT_FILE_PATH
: o caminho local do arquivo que foi assinado.SIGNED_FILE_PATH
: o caminho local para o arquivo de assinatura a ser verificado.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help
.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Use o método CryptoKeyVersions.macVerify
para realizar a verificação. A assinatura a ser verificada precisa ser
codificada em base64. A resposta desse método contém um booleano indicando
se a assinatura foi verificada ou não.