Como formatar chaves para importação

Este tópico descreve como formatar as chaves para que possam ser importadas pelo Cloud KMS como novas versões.

O formato correto para o material da chave varia de acordo com o tipo de importação: chave simétrica ou assimétrica. Para mais informações sobre a diferença entre essas chaves, consulte Finalidades de chaves e algoritmos.

Formatos de chave compatíveis

  • As chaves simétricas para criptografia precisam ter 16 bytes (apenas para criptografia simétrica bruta) ou 32 bytes de dados binários e não precisam ser codificadas. Se a chave tiver codificação hexadecimal ou codificada em base64, você precisará decodificá-la antes de tentar importá-la.

  • Chaves simétricas para assinatura (chaves MAC) precisam ter um comprimento igual ao comprimento de saída da função hash criptográfica em uso. Por exemplo, as chaves HMAC-SHA256 precisam ter um comprimento de 32 bytes e não podem ser codificados. Se a chave tiver codificação hexadecimal ou codificada em base64, você precisará decodificá-la antes de tentar importá-la.

  • As chaves assimétricas para criptografia ou assinatura precisam estar no formato PKCS #8 e ser codificadas em DER. O formato PCKS #8 é definido no RFC 5208 (em inglês). A codificação DER é definida em International Telecommunications Union X.680 (em inglês). As chaves assimétricas precisam usar uma das combinações de comprimento e algoritmo compatíveis com o Cloud KMS.

Alguns aspectos de uma chave, como o comprimento dela, não podem ser alterados após a chave ser criada. Nesses casos, a chave não pode ser importada para o Cloud KMS.

Como verificar uma chave simétrica

Use o comando wc para verificar o comprimento de uma chave simétrica.

wc -c /path/to/unwrapped-key
  • Você não pode importar uma chave de criptografia simétrica com um comprimento diferente de 32.

  • As chaves de assinatura simétricas (chaves MAC) precisam ter um comprimento igual ao comprimento de saída da função de hash criptográfica sendo usada, por exemplo, as chaves HMAC-SHA256 precisam ter um comprimento de 32 bytes.

Use o comando file para verificar o formato de uma chave.

file /path/to/unwrapped-key
  • Se a saída for data, a chave estará no formato correto a ser importado.

  • Se o resultado for ASCII text, use o comando cat para exibir o conteúdo do arquivo.

    • Se for uma string de letras e números terminando em um sinal =, pode ser codificada em base64. Use o comando base64 (Base64.exe no Windows) para decodificá-la. Veja a seguir um exemplo de chave codificada em base64:

      THzArjassB+giKeNeT1Zr74OgV24t+Ep+37Ec6ojB3Y=
      
    • Se ela contiver uma ou mais linhas de números hexadecimais, poderá ser codificada em hexadecimal. Use o comando xxd (ou o comando Format-Hex do PowerShell no Windows) para decodificá-la. Confira a seguir um exemplo de chave codificada em hexadecimal:

      00000000: 4c7c c0ae 36ac b01f a088 a78d 793d 59af  L|..6.......y=Y.
      00000010: be0e 815d b8b7 e129 fb7e c473 aa23 0776  ...]...).~.s.#.v
      
    • Se ela contiver qualquer outro texto, talvez não seja uma chave simétrica válida.

Como formatar chaves assimétricas

Chaves assimétricas que usam qualquer um dos algoritmos compatíveis podem ser importadas. Na prática, é difícil determinar retroativamente o algoritmo usado para criar uma chave assimétrica. Por esse motivo, recomendamos que você execute os seguintes comandos em cada chave assimétrica antes de tentar importá-la para o Cloud KMS.

  1. Use o comando file para verificar o formato de uma chave.

    file /path/to/unwrapped-key
    
    • Se a saída for PEM, a chave estará no formato PEM. Se for ASCII text, provavelmente está no formato PEM. Em ambos os casos, execute o seguinte comando para convertê-lo no formato PCKS#8 DER:

      openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER \
          -in /path/to/asymmetric-key-pem \
          -out /path/to/formatted-key
      
    • Se a saída for data, provavelmente a chave estará no formato DER, mas talvez não esteja no formato PKCS #8. Execute o seguinte comando para garantir que a chave esteja no formato correto. O comando não terá efeito se a chave já estiver no formato correto. Nesse caso, use o comando diff para verificar se os arquivos de entrada e saída são idênticos.

      openssl pkcs8 -topk8 -nocrypt -inform DER -outform DER \
          -in /path/to/asymmetric-key-der \
          -out /path/to/formatted-key
      

Solução de problemas

Se você executar os comandos acima e achar que a chave está em um formato adequado, mas a importação ainda falhar, verifique se há erros no console do Google Cloud e consulte Solução de problemas de importações falhas.

A seguir