Esta página mostra-lhe como criar e validar assinaturas digitais com base em chaves MAC.
É usada uma única chave, partilhada pelo produtor e pelo validador, para calcular uma etiqueta MAC a partir dos dados de entrada. A etiqueta MAC funciona como uma assinatura digital. Quando o validador recebe a mensagem e a respetiva etiqueta MAC associada, gera a sua própria etiqueta a partir do conteúdo da mensagem. Em seguida, o validador pode comparar a etiqueta recebida com a etiqueta gerada para ver se correspondem. Se as duas etiquetas corresponderem, o validador sabe que a mensagem que recebeu é a mesma que a mensagem assinada pelo produtor.
Antes de começar
Ao criar assinaturas digitais MAC, tem de usar uma chave com o objetivo da chave de
MAC
. Quando criar a chave, useMAC
.Certifique-se de que o ficheiro que quer assinar está dentro do limite de tamanho do ficheiro.Quando usa uma chave do Cloud HSM, o tamanho máximo do ficheiro para o qual pode criar uma assinatura MAC é de 16 KiB. Para todas as outras chaves, o tamanho máximo do ficheiro é de 64 KiB.
Funções necessárias
Para obter as autorizações de que precisa para criar e validar assinaturas, peça ao seu administrador que lhe conceda as seguintes funções do IAM na chave:
-
Para criar assinaturas:
Signer de CryptoKey do Cloud KMS (
roles/cloudkms.signer
) -
Para validar assinaturas:
Validador de CryptoKey do Cloud KMS (
roles/cloudkms.verifier
) -
Para criar e validar assinaturas:
Signer/Verifier de CryptoKey do Cloud KMS (
roles/cloudkms.signerVerifier
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Criar uma assinatura MAC
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do 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
Substitua o seguinte:
KEY_VERSION
: o número da versão da chave.KEY_NAME
: o nome da chave.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS do conjunto de chaves.INPUT_FILE_PATH
: o caminho local para o ficheiro que quer assinar.SIGNED_FILE_PATH
: o caminho local onde quer guardar a assinatura gerada.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Use o método
CryptoKeyVersions.macSign
para realizar a assinatura. A resposta deste método contém a assinatura codificada em base64.
Validar uma assinatura MAC
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do 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
: o número da versão da chave.KEY_NAME
: o nome da chave.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS do conjunto de chaves.INPUT_FILE_PATH
: o caminho local para o ficheiro que foi assinado.SIGNED_FILE_PATH
: o caminho local para o ficheiro de assinatura a validar.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Use o método
CryptoKeyVersions.macVerify
para fazer a validação. A assinatura a validar tem de estar codificada em Base64. A resposta deste método contém um valor booleano que indica se a assinatura foi validada com êxito.