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:
- 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.
- 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.