Neste tópico, mostramos como recriptografar dados usando uma chave simétrica do Cloud Key Management Service. Você pode adaptar esses exemplos para chaves assimétricas. Se você suspeitar de uso não autorizado de uma chave, recriptografe os dados protegidos por ela e, em seguida, desative ou programe a destruição da versão de chave anterior.
Antes de começar
Este cenário requer as condições abaixo.
Você precisa já ter criptografado dados usando o Cloud KMS.
A versão de chave usada para criptografia não pode estar desativada, programada para destruição nem destruída. Ela será usada para descriptografar os dados.
Você precisa já ter feito a rotação de chaves. Uma rotação de chaves cria uma nova versão da chave principal. Ela será usada para recriptografar os dados.
Como recriptografar dados usando chaves assimétricas
Os exemplos neste tópico mostram como recriptografar dados usando uma chave simétrica. Quando você usa uma chave simétrica, o Cloud KMS infere automaticamente a versão da chave a ser usada para descriptografia. Ao usar uma chave assimétrica, você precisa especificar a versão da chave.
- Ao seguir as instruções para usar a Google Cloud CLI, sempre inclua
a flag
--version
. - Ao seguir as instruções para usar a API, use
CryptoKeyVersions
em vez deCryptoKeys
. Você pode ler mais sobre criptografia e descriptografia de dados com uma chave assimétrica.
O fluxo de trabalho para recriptografar dados com chaves assimétricas é semelhante ao descrito neste tópico.
Como recriptografar o fluxo de trabalho dos dados
Siga as etapas a seguir para recriptografar dados e desativar ou programar a destruição da versão de chave usada na criptografia original.
Recriptografar os dados usando a nova versão de chave principal
Desativar ou programar a destruição da versão de chave anterior
Descriptografar os dados usando a versão de chave anterior
O Cloud KMS usa automaticamente a versão de chave correta para descriptografar dados, desde que ela não esteja desativada, programada para destruição ou destruída. Os exemplos a seguir mostram como descriptografar os dados. O código de descriptografia é o mesmo usado em Criptografia e descriptografia.
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 decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Substitua:
KEY_NAME
: o nome da chave que você quer usar para descriptografar.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS que contém o keyring.FILE_TO_DECRYPT
: o caminho para o arquivo que você quer descriptografar.DECRYPTED_OUTPUT
: o caminho em que você quer salvar a saída descriptografada.
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.
O texto descriptografado retornado no JSON do Cloud KMS é codificado em base64.
Para descriptografar dados criptografados, crie uma solicitação POST
e forneça as informações apropriadas do projeto e da chave. Além disso, especifique o texto criptografado (também conhecido como
ciphertext) a ser descriptografado no campo ciphertext
do corpo da solicitação.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Substitua:
PROJECT_ID
: o ID do projeto que contém o keyring e a chave que você quer usar para descriptografar.LOCATION
: o local do Cloud KMS que contém o keyring.KEY_RING
: o keyring que contém a chave que você quer usar para descriptografar.KEY_NAME
: o nome da chave que você quer usar para descriptografar.ENCRYPTED_DATA
: os dados criptografados que você quer descriptografar.
Confira um exemplo de payload com dados codificados em base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Recriptografar os dados usando a nova versão de chave principal
O Cloud KMS usa automaticamente a nova versão de chave principal para criptografar dados. Os exemplos a seguir mostram como criptografá-los. O código de criptografia é o mesmo usado em Criptografia e descriptografia.
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 encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Substitua:
KEY_NAME
: o nome da chave que você quer usar para criptografia.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS que contém o keyring.FILE_TO_ENCRYPT
: o caminho para o arquivo que você quer criptografar.ENCRYPTED_OUTPUT
: o caminho em que você quer salvar a saída criptografada.
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.
Ao usar o JSON e a API REST, o conteúdo precisa ser codificado em Base64 antes de ser criptografado pelo Cloud KMS.
Para criptografar dados, faça uma solicitação POST
e forneça as informações apropriadas do projeto e
da chave. Além disso, especifique o texto codificado em base64 a ser criptografado no
campo plaintext
do corpo da solicitação.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Substitua:
PROJECT_ID
: o ID do projeto que contém o keyring e a chave que você quer usar para criptografia.LOCATION
: o local do Cloud KMS que contém o keyring.KEY_RING
: o keyring que contém a chave que você quer usar para criptografia.KEY_NAME
: o nome da chave que você quer usar para criptografia.PLAINTEXT_TO_ENCRYPT
: os dados de texto simples que você quer criptografar. O texto simples precisa ser codificado em base64 antes de chamar o métodoencrypt
.
Confira um exemplo de payload com dados codificados em base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Desativar ou programar a destruição da versão de chave anterior
Se tiver feito a rotação da chave devido a um incidente suspeito, depois de recriptografar os dados, desative ou programe a destruição da versão de chave anterior.
Desativar uma versão de chave ativada
Só é possível desativar uma versão de chave que esteja ativada. Isso é feito com o método UpdateCryptoKeyVersion
.
Console
Acesse a página Gerenciamento de chaves no console do Google Cloud.
Clique no nome do keyring que contém a chave com a versão que será desativada.
Clique na chave cuja versão você quer desativar.
Marque a caixa ao lado das versões de chave que você quer desativar.
Clique em Desativar no cabeçalho.
No prompt de confirmação, clique em Desativar.
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 keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Substitua key-version pela versão da chave para desativar. 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.
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.
Programar uma versão de chave para destruição
É possível programar a destruição somente das versões de chave ativadas ou desativadas. Isso é feito com o método DestroyCryptoKeyVersion
.
Console
No console do Google Cloud, acesse a página Gerenciamento de chaves.
Marque a caixa ao lado da versão da chave que você quer programar para destruição.
Clique em Destruir no cabeçalho.
No prompt de confirmação, insira o nome da chave e clique em Programar destruição.
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 keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Substitua:
KEY_VERSION
: o número da versão da chave que você quer destruir.KEY_NAME
: o nome da chave para a qual você quer destruir uma versão.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS do keyring.
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.
Destrua uma versão de chave chamando o método CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"