Encapsulamento de chaves

Encapsulamento de chaves é o processo de criptografar uma chave usando outra para armazená-la com segurança ou transmiti-la por um canal não confiável. Esse processo pode usar criptografia simétrica ou assimétrica, dependendo do contexto.

No Cloud Key Management Service, o encapsulamento de chaves é usado para importar com segurança chaves criptográficas fornecidas pelo usuário. A importação de chaves requer um job de importação, e cada job tem um método de importação que especifica o protocolo de encapsulamento a ser usado.

O Cloud KMS espera formatos específicos para o material da chave importada. Antes que o material da chave seja encapsulado para importação, pode ser preciso convertê-lo no formato esperado pelo Cloud KMS. A formatação de chaves para importação (em inglês) contém detalhes dos formatos necessários e incluem instruções sobre como converter as chaves no formato exigido, se for preciso.

Depois que o material da chave for formatado corretamente, a Google Cloud CLI poderá encapsular automaticamente esse material antes de transmiti-lo com segurança ao Cloud KMS. Veja mais detalhes em Como importar uma chave. Se preferir, encapsule manualmente as chaves usando os protocolos criptográficos adequados. Como encapsular uma chave usando o OpenSSL no Linux (em inglês) apresenta um exemplo de como fazer isso.

Métodos de importação

O Cloud KMS oferece os seguintes métodos de importação:

Método de importação Tipo de chave do job de importação Algoritmo de encapsulamento de chaves
RSA_OAEP_3072_SHA1_AES_256 RSA de 3072 bits RSAES-OAEP with SHA-1 + AES-KWP
RSA_OAEP_4096_SHA1_AES_256 RSA de 4096 bits RSAES-OAEP with SHA-1 + AES-KWP
RSA_OAEP_3072_SHA256_AES_256 (recomendado) RSA de 3072 bits RSAES-OAEP com SHA-256 + AES-KWP
RSA_OAEP_4096_SHA256_AES_256 RSA de 4096 bits RSAES-OAEP com SHA-256 + AES-KWP
RSA_OAEP_3072_SHA256 RSA de 3072 bits RSAES-OAEP com SHA-256
RSA_OAEP_4096_SHA256 RSA de 4096 bits RSAES-OAEP com SHA-256

Algoritmos de encapsulamento de chaves

Os métodos de importação incluídos no Cloud KMS correspondem aos seguintes algoritmos de encapsulamento de chaves:

RSAES-OAEP com SHA-1/SHA-256 + AES-KWP

Esse algoritmo de encapsulamento de chaves é um esquema de criptografia híbrida que consiste em ambas as operações de encapsulamento de chaves assimétricas e simétricas:

  1. A chave pública do job de importação é usada para criptografar uma chave AES-256 de uso único. A criptografia é realizada usando RSAES-OAEP e MGF-1, com o algoritmo de resumo especificado pelo método de importação. A chave AES-256 de uso único é gerada no momento em que o encapsulamento é realizado.
  2. A chave AES-256 de uso único da etapa 1 é usada para criptografar o material da chave de destino usando o algoritmo Key Wrap de AES com preenchimento (em inglês).

O material da chave encapsulada para importação é uma única matriz de bytes composta dos resultados da etapa 1, seguidos dos resultados da etapa 2. Em outras palavras, os resultados das etapas 1 e 2 são concatenados para formar o material da chave encapsulada.

Esse é o mesmo algoritmo que o de encapsulamento de chaves PKCS #11 CKM_RSA_AES_KEY_WRAP (em inglês). Se você estiver importando uma chave de um HSM que aceita esse algoritmo, será possível usá-lo diretamente. Se preferir, as etapas 1 e 2 acima poderão ser realizadas com os mecanismos PKCS #11 CKM_RSA_PKCS_OAEP e CKM_AES_KEY_WRAP_PAD (links em inglês), respectivamente.

Se o HSM de origem não aceitar o mecanismo de encapsulamento de chaves RSA de AES, será necessário encapsular manualmente o material da chave usando a chave pública do job de importação. Para ver um exemplo de como fazer isso usando o OpenSSL, consulte Como encapsular uma chave usando o OpenSSL no Linux.

RSAES-OAEP com SHA-256

Essa é uma operação de encapsulamento de chave assimétrica que usa a chave pública do job de importação com RSAES-OAEP, usando MGF-1 e o algoritmo de resumo SHA-256, para criptografar diretamente o material da chave de destino. Ela é baseada no mecanismo PKCS #11 RSA OAEP CKM_RSA_PKCS_OAEP. As limitações de tamanho associadas a esse método de importação o tornam inadequado para importar chaves privadas RSA.