Nesta página, mostramos como criar e validar assinaturas digitais com base em chaves MAC.
Uma única chave, compartilhada pelo produtor e pelo verificador, é usada para calcular uma tag MAC nos dados de entrada. A tag MAC funciona como uma assinatura digital. Quando o verificador recebe a mensagem e a tag MAC associada, ele gera a própria tag com base no conteúdo da mensagem. Em seguida, o verificador pode comparar a tag recebida com a gerada para ver se elas correspondem. Se as duas tags forem iguais, 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.Ao usar uma chave do Cloud HSM, o tamanho máximo do arquivo para o qual é possível criar uma assinatura MAC é de 16 KiB. Para todas as outras chaves, o tamanho máximo do arquivo é de 64 KiB.
Funções exigidas
Para receber 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 usando papéis personalizados ou 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 Cloud KMS do keyring.INPUT_FILE_PATH: o caminho local para o arquivo que você quer assinar.SIGNED_FILE_PATH: o caminho local em que você quer salvar a 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 para o arquivo 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.