Assinar e verificar dados com o Cloud KMS (assimétrico)

1. Visão geral

O Cloud KMS é um serviço de gerenciamento de chaves hospedado na nuvem que permite gerenciar a criptografia dos seus serviços na nuvem da mesma forma que você faria localmente. Ele inclui suporte para criptografia, descriptografia, assinatura e verificação usando vários tipos e origens de chaves, incluindo Cloud HSM para chaves com suporte de hardware. Neste tutorial, você aprende a assinar e verificar dados usando chaves assimétricas do Cloud KMS.

O que você vai aprender

  • Como ativar a API Cloud KMS
  • Como criar um keyring
  • Como criar uma chave criptográfica para assinatura/verificação assimétrica

2. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma se você ainda não tiver uma conta do Gmail ou do G Suite.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.

  1. Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.

A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de US$300 de avaliação sem custos.

Iniciar Cloud Shell

Neste codelab, você vai usar o Cloud Shell, um ambiente virtualizado sem custo financeiro executado no Google Cloud. No Console do GCP, clique no ícone do Cloud Shell na barra de ferramentas localizada no canto superior direito:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal permanente de 5 GB, além de ser executada no Google Cloud, o que aprimora o desempenho e a autenticação da rede. A menos que seja instruído de outra forma, execute todos os comandos desse shell.

3. Ativar o serviço do Cloud KMS

Antes de usar o Cloud KMS, ative o serviço no seu projeto. Isso só precisa ser feito uma vez por projeto. Para ativar o serviço do Cloud KMS, execute o seguinte comando:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

A ativação pode levar até um minuto. O comando vai informar o sucesso quando terminar.

4. Criar uma chave do KMS

Crie um keyring do Cloud KMS. No Cloud KMS, um keyring é uma coleção lógica de chaves criptográficas. O keyring contém metadados sobre as chaves, como a localização delas. Crie um keyring chamado my-keyring na região global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Agora crie uma chave criptográfica chamada my-asymmetric-signing-key com a finalidade asymmetric-signing dentro do keyring que você acabou de criar.

$ gcloud kms keys create "my-asymmetric-signing-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-signing" \
    --default-algorithm "rsa-sign-pkcs1-4096-sha512"

5. Assinar dados

Ao contrário da criptografia, a descriptografia de dados criptografados usando uma chave assimétrica do Cloud KMS exige acesso on-line ao serviço do Cloud KMS. Descriptografe o texto criptografado do arquivo usando a ferramenta de linha de comando gcloud:

Crie um arquivo com dados para assinar e use a ferramenta de linha de comando gcloud para assinar os dados com a chave do Cloud KMS:

$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --version "1" \
    --digest-algorithm "sha512" \
    --input-file ./data.txt \
    --signature-file ./data.txt.sig

A assinatura é salva em data.txt.sig no disco. Se você abrir o arquivo data.txt.sig, vai notar que ele tem caracteres estranhos e não imprimíveis. Isso ocorre porque os dados resultantes estão no formato binário.

Ao armazenar a assinatura em um banco de dados ou transmiti-la como parte de uma solicitação HTTP, talvez seja necessário codificar os dados. Um mecanismo de codificação comum é o base64.

6. Verificar dados

Com chaves assimétricas, o Cloud KMS não realiza a verificação diretamente. Em vez disso, ele fornece acesso a uma chave pública, e você verifica os dados usando essa chave pública por meio da criptografia de chave pública. Com chaves assimétricas, a verificação pode ser feita totalmente off-line e não exige acesso ao Cloud KMS ou a qualquer outra API do Cloud. A verificação é realizada usando uma ferramenta criptográfica como openssl ou com uma linguagem de programação ou biblioteca que ofereça suporte à criptografia de chave pública.

Faça o download da chave pública do Cloud KMS:

$ gcloud kms keys versions get-public-key "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --output-file ./key.pub

Verifique a assinatura em relação à chave pública usando a ferramenta de linha de comando openssl:

$ openssl dgst -sha256 \
    -verify ./key.pub \
    -signature ./data.txt.sig ./data.txt

O console vai imprimir uma mensagem de sucesso, indicando que a assinatura digital é válida.

Verified OK

7. Parabéns!

Você ativou a API Cloud KMS, criou uma chave de assinatura assimétrica e assinou e verificou dados. O Cloud KMS é um produto avançado, e a assinatura/verificação é apenas uma pequena parte das funcionalidades dele.

Liberar espaço

Se você já terminou de explorar, exclua o projeto.

  • Acesse o console do Cloud Platform.
  • Selecione o projeto que você quer desligar e clique em "Excluir" na parte de cima. Isso programa o projeto para exclusão.

Saiba mais

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.