Reagrupando chaves

Para refazer a criptografia das chaves de criptografia de dados, utilize a API do IBM® Key Protect.

Ao girar uma chave raiz no Key Protect, um novo material de chave criptográfica se torna disponível para proteger as chaves de criptografia de dados (DEKs) associadas à chave raiz. Com a API de reagrupamento, é possível criptografar novamente ou reagrupar suas DEKs sem expor as chaves em seu formulário de texto sem formatação.

Para saber como a criptografia de envelope ajuda a controlar a segurança de dados em repouso na nuvem, consulte Protegendo dados com a criptografia de envelope.

Reagrupando chaves usando a API

É possível criptografar novamente uma chave de criptografia de dados (DEK) especificada com uma chave raiz que você gerencia no Key Protect, sem expor a DEK em sua forma de texto sem formatação.

O reagrupamento de chaves funciona combinando as chamadas unwrap e wrap para o serviço. Por exemplo, é possível emular uma operação rewrap chamando primeiramente a API unwrap para acessar uma DEK e, em seguida, chamando a API wrap para criptografar novamente a DEK usando o material de chave raiz mais recente.

Depois de girar uma chave raiz no serviço, reenrole uma chave de criptografia de dados que esteja associada à chave raiz fazendo um chamada POST para o terminal a seguir.

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap
  1. Recupere suas credenciais de serviço e autenticação para trabalhar com chaves no serviço.

  2. Copie o ID da chave raiz girada que você usou para executar a solicitação de agrupamento inicial.

    Para recuperar o ID de uma chave, é possível fazer uma solicitação GET api/v2/keys ou visualizar as chaves na GUI do Key Protect .

  3. Copie o valor ciphertext que foi retornado durante a solicitação de agrupamento mais recente.

  4. Reenquadre a chave com o material de chave raiz mais recente executando o seguinte curl a seguir.

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap" \
        -H "accept: application/vnd.ibm.kms.key_action+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.key_action+json" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -d '{
                "ciphertext": "<encrypted_data_key>",
                "aad": [
                    "<additional_data>",
                    "<additional_data>"
                ]
            }'
    

    Substitua as variáveis na solicitação de exemplo de acordo com a tabela a seguir.

Descreve as variáveis necessárias para reenrolar as chaves em Key Protect.
Variável Descrição
região Obrigatório. A abreviação de região, como us-south ou eu-gb, que representa a área geográfica na qual a sua instância do Key Protect reside.
Para obter mais informações, consulte Pontos de extremidade de serviço regionais.
keyID_or_alias Obrigatório. O identificador ou alias exclusivo da chave raiz utilizada para a solicitação de agrupamento inicial.
IAM_token Obrigatório. Seu token de acesso do IBM Cloud. Inclua o conteúdo completo do token do IAM, incluindo o valor Bearer, na solicitação curl.
Para obter mais informações, consulte Recuperação de um token de acesso.
instance_ID Obrigatório. O identificador exclusivo que é designado para sua instância de serviço Key Protect.
Para obter mais informações, consulte Recuperação de um ID de instância.
key_ring_ID Opcional. O identificador exclusivo do conjunto de chaves ao qual a chave pertence. Se não especificado, o Key Protect irá procurar a chave em cada conjunto de chaves associado à instância especificada. É recomendado especificar o ID do conjunto de chaves para uma solicitação mais otimizada.
Observação: a ID do chaveiro das chaves criadas sem um cabeçalho x-kms-key-ring é: default.
For more information, see Teclas de agrupamento.
correlation_ID O identificador exclusivo que é usado para rastrear e correlacionar transações.
encrypted_data_key Obrigatório. O valor de texto cifrado que foi retornado pela operação de agrupamento original.
additional_data Opcional Os dados de autenticação adicionais (AAD) que são usados para proteger melhor a chave. Cada sequência pode ter até 255 caracteres. Ao fornecer AAD para a chamada inicial de agrupamento, deve-se especificar o mesmo AAD durante as chamadas de desagrupamento ou reagrupamento subsequentes.

Importante: O serviço Key Protect não salva dados adicionais de autenticação. Ao fornecer o AAD, salve os dados em um local seguro para garantir que seja possível acessar e fornecer o mesmo AAD durante as solicitações de desagrupamento ou reagrupamento subsequentes.

No corpo da entidade de resposta, são retornadas a chave de criptografia de dados recém-agrupada, a versão original da chave (keyVersion) associada ao texto cifrado fornecido e a versão mais recente da chave (rewrappedKeyVersion) associada ao novo texto cifrado. O objeto JSON a seguir mostra um valor retornado de exemplo.

{
    "ciphertext": "eyJjaX ... h0Ijoi ... c1ZCJ9",
    "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
    },
    "rewrappedKeyVersion": {
        "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
    }
}

Armazene e use o novo valor ciphertext para operações futuras de criptografia de envelope para que os seus dados sejam protegidos pela chave raiz mais recente.

Validação opcional

Verifique se a chave foi reagrupada com sucesso codificando o valor ciphertext em base64.

$ echo <ciphertext> | base64 --decode

Substitua <ciphertext> pelo valor codificado em base64 retornado na etapa anterior. O objeto JSON a seguir mostra uma saída da CLI de exemplo.

{
    "ciphertext": "mIzRrwZAA8+WqRckG6gt1ji8HlEEJPSiV+TRBSR4GVr+FlAZlC5KvRriRF0=",
    "iv": "lbwxXlAW2DS7+5jGz5Y1Kg==",
    "version": "4.0.0",
    "handle": "8e309bae-b3ec-4270-9b87-89f8697fe54f"
}