Configurar uma chave de assinatura da AC

Uma autoridade certificadora (AC) no Certificate Authority Service (serviço de AC) exige uma chave criptográfica para assinar os certificados emitidos. Essa chave de assinatura estabelece confiança para sua infraestrutura de chave pública (ICP).

Este documento descreve as estratégias de gerenciamento de chaves que você pode escolher para a chave de assinatura da AC e como configurá-la. É possível escolher uma chave gerenciada pelo Google Google-owned and managed key para simplificar o gerenciamento com configuração mínima ou uma chave gerenciada pelo cliente para ter mais controle direto sobre o ciclo de vida e as propriedades da chave.

Usar uma chave gerenciada pelo Google Google-owned and managed key

Ao usar uma chave gerenciada pelo Google Google-owned and managed key, você escolhe o algoritmo criptográfico e o tamanho da chave. O serviço de AC cria e gerencia o ciclo de vida de uma chave de serviço dedicada do Cloud Key Management Service em um projeto gerenciado pelo Google.

Analisar os algoritmos de chave de assinatura compatíveis

O Cloud KMS oferece suporte a duas famílias de algoritmos para operações de assinatura assimétrica adequadas para ACs: RSA e ECDSA.

RSA

Os esquemas de assinatura baseados em RSA oferecem ampla compatibilidade. Use RSA se precisar oferecer suporte a sistemas legados. O Cloud KMS oferece variantes RSA_SIGN_PSS e RSA_SIGN_PKCS1. Para mais informações, consulte a RFC 8017.

O RSA-PSS é o esquema de assinatura mais recente e verificavelmente seguro, recomendado para a maioria das novas implementações. O RSA_SIGN_PKCS1 é fornecido para compatibilidade com sistemas anteriores que ainda não oferecem suporte ao PSS.

ECDSA

As chaves de curva elíptica oferecem segurança semelhante ao RSA com tamanhos de chave menores. O Cloud KMS oferece suporte a EC_SIGN_P256 e EC_SIGN_P384. O ECDSA é geralmente preferido para desempenho e eficiência em sistemas modernos.

Cadeias mistas

O uso de famílias de algoritmos diferentes na mesma cadeia de certificados pode causar problemas em alguns sistemas. Para atenuar possíveis problemas, recomendamos ter cadeias separadas para RSA e ECDSA.

Analisar os tamanhos de chave compatíveis

Embora tamanhos de chave maiores na mesma família ofereçam maior força de segurança, essas chaves também causam mais dados armazenados e transmitidos pela rede. Além disso, as operações de criptografia e assinatura às vezes podem demorar mais com tamanhos de chave maiores, embora a diferença possa ser imperceptível.

Para chaves mais duradouras, como as associadas a ACs raiz ou subordinadas de longa duração, é possível usar tamanhos de chave com maior força de segurança do que outras chaves. Por exemplo, é possível usar uma chave RSA de 4096 bits para uma AC raiz e chaves RSA de 2048 bits para ACs subordinadas com vidas úteis mais curtas.

Escolher um algoritmo de assinatura para a chave da AC

Considere as etapas a seguir ao escolher um algoritmo de assinatura para a chave da AC:

  1. Escolha uma família de algoritmos.

    Se você estiver criando uma AC subordinada que se encadeia a uma AC raiz atual, use a mesma família da raiz.

    Se você estiver criando uma nova AC raiz, mas precisar trabalhar com sistemas legados que não oferecem suporte a ECDSA, use um dos algoritmos de assinatura RSA.

    Caso contrário, se nenhuma dessas condições se aplicar a você, recomendamos que use um dos algoritmos de assinatura de curva elíptica.

  2. Somente RSA: escolha um algoritmo de assinatura.

    Se você espera trabalhar com bibliotecas ou estruturas legadas que não oferecem suporte a PSS, use um dos algoritmos RSA_SIGN_PKCS1.

    Caso contrário, use um dos algoritmos RSA_SIGN_PSS.

  3. Escolha um tamanho de chave.

    Para uma nova AC raiz ou uma AC subordinada que deve ter uma vida útil na ordem de anos, recomendamos que você use o maior tamanho de chave disponível para essa família de algoritmos.

    • Para RSA, o maior tamanho de chave compatível é de 4096 bits.
    • Para ECDSA, o maior tamanho de chave compatível é de 384 bits.

    Para ACs subordinadas com uma vida útil mais curta, é possível usar tamanhos de chave menores, como 2048 bits para RSA ou 256 bits para ECDSA.

Usar uma chave gerenciada pelo cliente

É possível configurar a AC para usar uma chave de assinatura assimétrica nova ou atual gerenciada no seu próprio projeto do Cloud KMS. Essa opção oferece controle direto sobre o ciclo de vida, as permissões e as propriedades da chave. O Cloud KMS define o algoritmo e o tamanho da chave. Ao configurar e criar a AC, você seleciona a versão da chave atual, em vez dos parâmetros do algoritmo.

Diferenciar chaves de assinatura de uma chave de criptografia

Usar uma chave do Cloud Key Management Service como uma chave de assinatura de AC é diferente de usar uma ou mais chaves do Cloud KMS para criptografia de dados em repouso. A principal distinção entre esses dois tipos de chave é o CryptoKeyPurpose configurado no Cloud KMS:

  • Chaves de assinatura de AC:exigem uma chave com o CryptoKeyPurpose de ASYMMETRIC_SIGN. Essas chaves executam operações de assinatura digital para emitir certificados.
  • Chaves de criptografia de dados em repouso:exigem uma chave com o CryptoKeyPurpose de ENCRYPT_DECRYPT. Essas chaves criptografam e descriptografam dados. As chaves de criptografia de dados em repouso também são conhecidas como chaves de criptografia gerenciadas pelo cliente (CMEK).

Não é possível usar uma única chave do Cloud KMS para assinatura e criptografia de dados em repouso. Essas finalidades são mutuamente exclusivas e são definidas na criação da chave.

O serviço de AC também oferece suporte à criptografia de dados em repouso para recursos como pools de AC, que você configura separadamente usando chaves com a finalidade ENCRYPT_DECRYPT. Para mais informações, consulte Criar um pool de AC.

Antes de começar

Verifique se os seguintes requisitos foram atendidos:

  • A chave precisa estar no seu projeto do Cloud KMS. Consulte Como criar chaves.
  • A finalidade da chave precisa ser ASYMMETRIC_SIGN.

  • O algoritmo da chave precisa ser um algoritmo de assinatura assimétrica compatível.

  • A chave precisa estar no mesmo local do pool de AC. Por exemplo, se o pool de AC estiver em us-central1, a chave do Cloud KMS também precisará estar em us-central1. Para informações sobre os locais do Cloud KMS, consulte Locais do Cloud KMS.

  • A versão da chave que você planeja usar precisa estar ativada.

Funções exigidas

Para garantir que a conta de serviço tenha as permissões necessárias para usar a chave gerenciada pelo cliente para operações de assinatura, peça ao administrador para conceder o papel do IAM de assinante/verificador de CryptoKey do Cloud Key Management Service (roles/cloudkms.signerVerifier) à conta de serviço na chave do Cloud Key Management Service.

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Receber o ID do recurso da versão da chave

Ao criar a AC, você precisa fornecer o ID completo do recurso do CryptoKeyVersion específico do Cloud KMS. Copie essa string para uso no processo de criação da AC.

O formato de ID do recurso necessário é o seguinte:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KMS_KEY/cryptoKeyVersions/VERSION

Substitua:

  • KMS_PROJECT_ID: o ID do projeto que contém a chave do KMS.
  • LOCATION: o local da chave do KMS. Precisa ser o mesmo local do pool de AC.
  • KEY_RING: o nome do keyring do KMS.
  • KMS_KEY: o nome da chave do KMS.
  • VERSION: a versão da chave do KMS.

Para saber mais, consulte Receber um ID de recurso do Cloud KMS. Use esse ID ao criar uma autoridade certificadora.

A seguir