Neste tópico, fornecemos informações sobre como criar e validar assinaturas digitais com base em chaves assimétricas.
Uma assinatura digital é criada usando a parte de chave privada de uma chave assimétrica. A assinatura é validada usando a parte de chave pública da mesma chave assimétrica.
Antes de começar
Ao criar assinaturas digitais, você precisa usar uma chave que tenha a finalidade de chave de
ASYMMETRIC_SIGN
. Ao criar a chave, useASYMMETRIC_SIGN
.Para validar uma assinatura, você precisa conhecer o algoritmo completo usado na criação da chave. Para as instruções de linha de comando abaixo que usam o comando
openssl
, você precisa passar essas informações para esses comandos.Conceda a permissão
cloudkms.cryptoKeyVersions.useToSign
na chave assimétrica ao usuário ou serviço que executará a assinatura. Saiba mais sobre permissões no Cloud Key Management Service em Permissões e papéis.Para validar uma assinatura, conceda a permissão
cloudkms.cryptoKeyVersions.viewPublicKey
na chave assimétrica ao usuário ou serviço que fará o download da chave pública que será usada para validação.Para usar a linha de comando, instale o OpenSSL, se ainda não o tiver. Se você usa o Cloud Shell, o OpenSSL já está instalado.
Como criar uma assinatura
Linha de comando
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente do SDK do Cloud.
gcloud kms asymmetric-sign \ --version key-version \ --key key \ --keyring key-ring \ --location location \ --digest-algorithm digest-algorithm \ --input-file input-file \ --signature-file signature-file
Substitua key-version pela versão da chave a ser usada para assinatura. Substitua key pelo nome da chave. Substitua key-ring pelo nome do keyring em que a chave está localizada. Substitua location pelo local do Cloud KMS do keyring. Substitua digest-algorithm pelo algoritmo a ser usado. Substitua input-file e signature-file pelos caminhos locais do arquivo a ser assinado e pelo arquivo de assinatura.
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.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Google Cloud e instalar o SDK do Cloud KMS para PHP.
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 CryptoKeys.asymmetricSign
para realizar a assinatura. A resposta desse método contém a assinatura codificada em base64.
Como validar uma assinatura de curva elíptica
Linha de comando
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente do SDK do Cloud.
Receber a chave pública
gcloud kms keys versions get-public-key key-version \ --key key \ --keyring key-ring \ --location location \ --output-file output-file
Substitua key-version pela versão da chave. Substitua key pelo nome da chave. Substitua key-ring pelo nome do keyring em que a chave está localizada. Substitua location pelo local do Cloud KMS para o keyring. Substitua output-file pelo caminho do arquivo para salvar a chave pública no sistema local.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help
.
Verificar a assinatura
Os comandos do OpenSSL para validar a assinatura dependem do tipo de assinatura criado. Por exemplo, para validar uma assinatura de curva elíptica SHA-256 usando o OpenSSL, especifique -sha256
. Para validar uma assinatura de curva elíptica SHA-384, especifique -sha384
.
openssl dgst \ -sha256 \ -verify public-key-file \ -signature signature-file \ message-file
Substitua as variáveis pelos seus próprios valores:
public-key-file. Caminho para um arquivo que contém a chave pública (por exemplo,
"./my-key.pub"
).signature-file. Caminho para um arquivo que contém a assinatura a ser verificada (por exemplo,
"./my-data.sig"
).message-file. Caminho para um arquivo que contém a mensagem (por exemplo,
"./my-data.txt"
).
Se a assinatura for válida, o comando gerará a string Verified OK
.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com o subcomando 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.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Google Cloud e instalar o SDK do Cloud KMS para PHP.
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.getPublicKey para recuperar a chave pública e use os comandos mostrados no exemplo da linha de comando para validar a assinatura.
Como validar uma assinatura RSA
Linha de comando
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente do SDK do Cloud.
Receber a chave pública
gcloud kms keys versions get-public-key key-version \ --key key \ --keyring key-ring \ --location location \ --output-file output-file
Substitua key-version pela versão da chave. Substitua key pelo nome da chave. Substitua key-ring pelo nome do keyring em que a chave está localizada. Substitua location pelo local do Cloud KMS para o keyring. Substitua output-file pelo caminho para salvar a chave pública no sistema local.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help
.
Verificar a assinatura
Os comandos do OpenSSL para validar a assinatura dependem do tipo de assinatura criado. Por exemplo, para validar uma assinatura RSA SHA-256 com preenchimento PSS, especifique -sha256
e -sigopt rsa_padding_mode:pss
. Para validar uma assinatura SHA-512 RSA com preenchimento do PSS, especifique -sha512
e -sigopt
rsa_padding_mode:pss
.
openssl dgst \ -sha256 \ -sigopt rsa_padding_mode:pss \ -sigopt rsa_pss_saltlen:-1 \ -verify public-key-file \ -signature signature-file \ message-file
Substitua as variáveis pelos seus próprios valores:
public-key-file. Caminho para um arquivo que contém a chave pública (por exemplo,
"./my-key.pub"
).signature-file. Caminho para um arquivo que contém a assinatura a ser verificada (por exemplo,
"./my-data.sig"
).message-file. Caminho para um arquivo que contém a mensagem (por exemplo,
"./my-data.txt"
).
Se a assinatura for válida, o comando gerará a string Verified OK
.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com o subcomando 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.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Google Cloud e instalar o SDK do Cloud KMS para PHP.
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.getPublicKey
para recuperar a chave pública e use os comandos mostrados no exemplo de linha de comando para validar a assinatura.