Como escolher a configuração da CMK - AWS Key Management Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como escolher a configuração da CMK

O tipo de CMK criada depende em grande parte de como você planeja usar a CMK, dos requisitos de segurança e de autorização. Ao criar a CMK, lembre-se de que a configuração criptográfica da CMK, incluindo sua especificação de chave e uso de chave, é estabelecida ao criar a CMK e não pode ser alterado. Para obter ajuda com a criação de CMK simétrica e assimétrica, consulte Criar chaves.

AWS KMSO oferece suporte a dois tipos de chaves CMK: simétricaseassimétricas. Cada tipo é associado a determinadas opções de uso de chave e especificação de chave.

Use as orientações a seguir para determinar o tipo de CMK necessário com base no seu caso de uso.

Criptografar e descriptografar dados

Use uma CMK simétrica para a maioria dos casos de uso que exigem criptografia e descriptografia de dados. O algoritmo de criptografia simétrica usado pelo AWS KMS é rápido, eficiente e garante a confidencialidade e a autenticidade dos dados. Ele oferece suporte à criptografia autenticada com dados adicionais autenticados (ADD), definidos como um contexto de criptografia. Esse tipo de CMK exige que o remetente e o destinatário dos dados criptografados tenham credenciais válidas da AWS para chamar o AWS KMS.

Se o seu caso de uso exigir criptografia fora da AWS por usuários que não podem chamar o AWS KMS, as CMKs assimétricas são uma boa escolha. É possível distribuir a chave pública da CMK assimétrica para permitir que esses usuários criptografem dados. Além disso, as aplicações que precisam descriptografar esses dados podem usar a chave privada da CMK assimétrica noAWS KMS.

Assinar mensagens e verificar assinaturas

Para assinar mensagens e verificar assinaturas, é necessário usar uma CMK assimétrica. É possível usar uma CMK com uma especificação de chave que representa um par de chaves RSA ou um par de chaves de curva elíptica (ECC). A especificação de chave escolhida é determinada pelo algoritmo de assinatura que você deseja usar. Em alguns casos, os usuários que verificarão assinaturas estão fora da AWS e não podem chamar a operação Verify. Nesse caso, escolha uma especificação de chave associada a um algoritmo de assinatura a que esses usuários podem oferecer suporte nos aplicativos locais.

Executar criptografia de chave pública

Para executar criptografia de chave pública, é necessário usar uma CMK assimétrica com uma especificação de chave RSA. As especificações de chave de curva elíptica (ECC) não podem ser usadas para a criptografia de chave pública. Para criptografar dados no AWS KMS com a chave pública de uma CMK do RSA, use a operação Encrypt. Também é possível fazer download da chave pública e compartilhá-la com as partes que precisam criptografar dados fora do AWS KMS.

Ao fazer download da chave pública de uma CMK assimétrica, é possível usá-la fora do AWS KMS. No entanto, ela não está mais sujeita aos controles de segurança que protegem o CMK noAWS KMS. Por exemplo, não é possível usar oAWS KMSPolíticas ou concessões para controlar o uso da chave pública. Também não é possível controlar se a chave é usada somente para criptografia e descriptografia usando os algoritmos de criptografia RSA queAWS KMSO oferece suporte. Para obter mais detalhes, consulte Considerações especiais sobre o download de chaves públicas.

Para descriptografar dados que foram criptografados com a chave pública fora do AWS KMS, chame a operação Decrypt. A operação Decrypt falhará se os dados tiverem sido criptografados em uma chave pública de uma CMK com um uso de chave de SIGN_VERIFY. Também ocorrerá falha se eles tiverem sido criptografados usando um algoritmo queAWS KMSO não oferece suporte a CMKs RSA.

Para evitar esses erros, qualquer pessoa que esteja usando uma chave pública fora do AWS KMS deve armazenar a configuração da chave. OAWS KMSConsole e oGetPublicKeyFornecer as informações a serem incluídas ao compartilhar a chave pública.

Uso com serviços da AWS integrados

Para criar um CMK para uso com umAWSque é integrado com oAWS KMSConsulte a documentação do serviço.AWSque criptografam seus dados exigem umCMK simétrica.

Além dessas considerações, as CMKs com diferentes especificações de chave têm preços diferentes e cotas de solicitação diferentes. Para obter mais informações sobre a definição de preço do AWS KMS, consulte Definição de preço do AWS Key Management Service. Para obter informações sobre cotas de solicitação, consulte.Cotas de solicitação.

Selecionar o uso de chave

O uso de chave de uma CMK determina se a CMK será usada para criptografia e descriptografia ou para assinatura e verificação. Não é possível escolher ambos. Usar uma CMK para mais de um tipo de operações torna o produto de ambas as operações mais vulnerável a ataques.

Conforme mostrado na tabela a seguir, as CMKs simétricas podem ser usadas somente para criptografia e descriptografia. As CMKs de curva elíptica (ECC) podem ser usadas somente para assinatura e verificação. As decisões do uso de chaves só são realmente feitas para CMKs RSA.

Uso de chave válido para tipos de CMK
Tipo de CMK Criptografar e descriptografar Assinar e verificar
CMKs simétricas
CMKs assimétricas com pares de chaves RSA
CMKs assimétricas com pares de chaves ECC

No console do AWS KMS, primeiro você escolhe o tipo de chave (simétrica ou assimétrica) e, depois, para CMKs assimétricas, o uso de chave. Se você escolher um tipo de chave simétrica, as opções de uso de chave não serão exibidas, pois as CMKs simétricas só são compatíveis com criptografia e descriptografia. O uso de chave escolhido determina quais especificações de chave são exibidas.

Para escolher um uso de chave no console do AWS KMS:

  • Para CMKs com material de chave de curva elíptica (ECC), selecione Sign and verify (Assinar e verificar).

  • Para CMKs com material de chave RSA, selecione Encrypt and decrypt (Criptografar e descriptografar) ou Sign and verify (Assinar e verificar).

Para determinar o uso de chave para os quais os principais na conta têm permissão para usar as CMKs, use a chave de condição kms:CustomerMasterKeyUsage.

Selecionar a especificação de chave

Ao criar uma CMK assimétrica, você escolhe sua especificação de chave. A especificação de chave, que é uma propriedade de toda chave mestra do cliente (CMK), representa a configuração criptográfica da CMK. Você escolhe a especificação de chave ao criar a CMK e não é possível alterá-la. Se você escolheu a especificação de chave errada, exclua a CMK e crie outra.

nota

DentroAWS KMSoperações de API, a especificação chave para CMKs é conhecida como oCustomerMasterKeySpec. Isso o distingue da especificação chave para chaves de dados (KeySpec) e pares de chaves de dados (KeyPairSpec), e a especificação chave usada ao embalar material chave para importação (WrappingKeySpec). Cada tipo de especificação de chave tem valores diferentes.

A especificação de chave determina se a CMK é simétrica ou assimétrica, o tipo de material de chave na CMK e os algoritmos de criptografia ou os algoritmos de assinatura compatíveis com o AWS KMS pra a CMK. A especificação de chave escolhida normalmente é determinada pelo caso de uso e pelos requisitos regulatórios.

Para determinar as especificações de chave que os principais na conta têm permissão para usar para as CMKs, use a chave de condição kms:CustomerMasterKeySpec.

O AWS KMS oferece suporte às seguintes especificações de chave para CMKs:

Tópicos

Os tópicos a seguir fornecem informações técnicas sobre as especificações de chave.

Especificação da chave SYMMETRIC_DEFAULT

A especificação de chave padrão, SYMMETRIC_DEFAULT, é a especificação de chave para CMKs simétricas. Ao selecionar o tipo de chave Symmetric (Simétrica) no console do AWS KMS, ele seleciona a especificação de chave SYMMETRIC_DEFAULT. Na operação CreateKey, se você não especificar um valor CustomerMasterKeySpec, será selecionado SYMMETRIC_DEFAULT. Se você não tiver um motivo para usar uma especificação de chave diferente, SYMMETRIC_DEFAULT é uma boa escolha.

O algoritmo de criptografia para CMKs simétricas também é conhecido como SYMMETRIC_DEFAULT. No momento, isso representa um algoritmo simétrico baseado no Advanced Encryption Standard (AES) em Galois Counter Mode (GCM) com chaves de 256 bits, um padrão do setor para criptografia segura. O texto cifrado que esse algoritmo gera oferece suporte a dados adicionais autenticados (ADD), como um contexto de criptografia e o GCM fornece uma verificação de integridade adicional no texto cifrado. Para obter mais detalhes técnicos, consulte.AWS Key Management ServiceDetalhes criptográficos.

Os dados criptografados em AES-256-GCM está protegido agora e futuramente. Os criptógrafos consideram esse algoritmo como resistente a quânticos. Num futuro teórico, ataques de computação quântica em grande escala em textos cifrados criados sob chaves AES-GCM de 256 bits reduzem a segurança efetiva da chave para 128 bits. No entanto, esse nível de segurança é suficiente para tornar inviáveis ataques de força bruta contra textos cifrados do AWS KMS.

É possível usar uma CMK simétrica no AWS KMS para criptografar e descriptografar e para criptografar dados novamente, além de gerar chaves de dados e pares de chaves de dados. Os serviços da AWS que são integrados ao AWS KMS usam CMKs simétricas para criptografar seus dados em repouso. É possível importar seu próprio material de chave em uma CMK simétrica e criar CMKs simétricas em armazenamentos de chaves personalizados. Para obter uma tabela comparando as operações que podem ser executadas em CMKs simétricas e assimétricas, consulte Comparar CMKs simétricas e assimétricas.

Especificações da chave RSA

Quando você usa uma especificação de chave RSA, o AWS KMS cria uma CMK simétrica com um par de chaves RSA. A chave privada nunca deixa o AWS KMS descriptografada. É possível usar a chave pública no AWS KMS ou fazer download da chave pública para usar fora do AWS KMS.

Atenção

Ao criptografar dados fora do AWS KMS, certifique-se de que você pode descriptografar o texto cifrado. Se você usar a chave pública de uma CMK que foi excluída do AWS KMS, a chave pública de uma CMK configurada para assinatura e verificação ou um algoritmo de criptografia que não é compatível com a CMK, os dados serão irrecuperáveis.

No AWS KMS, é possível usar CMKs assimétricas com pares de chaves RSA para criptografia e descriptografia ou para assinatura e verificação, mas não ambos. Essa propriedade, conhecida como uso de chave, é determinada separadamente da especificação de chave, mas você deve tomar essa decisão antes de escolher uma especificação de chave.

O AWS KMS oferece suporte às seguintes especificações de chave para criptografia e descriptografia ou para assinatura e verificação:

  • RSA_2048

  • RSA_3072

  • RSA_4096

As especificações de chave RSA diferem no tamanho da chave RSA em bits. A especificação da chave RSA escolhida deve ser determinada pelos padrões de segurança ou pelos requisitos da tarefa. Em geral, use a maior chave que seja prática e acessível para sua tarefa. As CMKs com especificações de chave RSA diferentes são cobradas de maneira diferente e estão sujeitas a cotas de solicitação diferentes. Para obter informações sobre a definição de preço do AWS KMS, consulte Definição de preço do serviço de gerenciamento de chaves da AWS. Para obter informações sobre cotas de solicitação, consulte.Cotas de solicitação.

Especificações de chave RSA para criptografia e descriptografia

Quando uma CMK RSA assimétrica é usada para criptografia e descriptografia, você criptografa com a chave pública e descriptografa com a chave privada. Quando você chama a operação Encrypt no AWS KMS para uma CMK RSA, o AWS KMS usa a chave pública no par de chaves RSA e o algoritmo de criptografia especificado para criptografar seus dados. Para descriptografar o texto cifrado, chame a operação Decrypt e especifique a mesma CMK e o mesmo algoritmo de criptografia. Então, o AWS KMS usa a chave privada no par de chaves RSA para descriptografar seus dados.

Também é possível fazer download da chave pública e usá-la para criptografar dados fora do AWS KMS. Use um algoritmo de criptografia compatível com o AWS KMS para CMKs RSA. Para descriptografar texto cifrado, chave a função Decrypt com a mesma CMK e o mesmo algoritmo de criptografia.

O AWS KMS oferece suporte a dois algoritmos de criptografia para CMKs com especificações de chave RSA. Esses algoritmos, que são definidos no PKCS nº 1 v2.2, diferem na função de hash que usam internamente, DentroAWS KMS, os algoritmos RSAES_OAEP sempre usam a mesma função de hash para ambas as finalidades de hash e para oFunção de geração(MGF1). É obrigatório especificar um algoritmo de criptografia ao chamar as operações Encrypt e Decrypt. É possível escolher um algoritmo diferente para cada solicitação.

Algoritmos de criptografia compatíveis com especificações de chave RSA
Algoritmo de criptografia Descrição do algoritmo
RSAES_OAEP_SHA_1 PKCS nº 1 v2.2, Seção 7.1. Criptografia RSA com padding OAEP usando SHA-1 para a função de hash e a função de geração de máscara MGF1 com um rótulo vazio.
RSAES_OAEP_SHA_256 PKCS nº 1, Seção 7.1. Criptografia RSA com padding OAEP usando SHA-256 para a função de hash e a função de geração de máscara MGF1 com um rótulo vazio.

Não é possível configurar uma CMK para ser usada em um algoritmo de criptografia específico. No entanto, é possível usar a condição de política kms:EncryptionAlgorithm para especificar os algoritmos de criptografia que os principais têm permissão para usar com a CMK.

Para obter os algoritmos de criptografia para uma CMK, visualize a configuração criptográfica da CMK no console do AWS KMS ou use a operação DescribeKey. O AWS KMS também fornece a especificação de chave e os algoritmos de criptografia quando você faz download da chave pública no console do AWS KMS ou usando a operação GetPublicKey.

Você pode escolher uma especificação de chave RSA com base no tamanho dos dados do texto não criptografado que pode ser criptografado em cada solicitação. A tabela a seguir mostra o tamanho máximo, em bytes, do texto não criptografado que pode ser criptografado em uma única chamada para a operação Encrypt. Os valores diferem de acordo com a especificação de chave e com o algoritmo de criptografia. Para comparar, é possível usar uma CMK simétrica para criptografar até 4.096 bytes de uma vez.

Para calcular o tamanho máximo do texto não criptografado em bytes para esses algoritmos, use a seguinte fórmula: (tamanho_da_chave_em_bits/8) - (2 * tamanho_de_hash_em_bits/8) - 2. Por exemplo, para RSA_2048 com SHA-256, o tamanho máximo de texto não criptografado em bytes é de (2048/8) - (2 * 256/8) -2 = 190.

Tamanho máximo de texto não criptografado (em bytes) em uma operação Encrypt
Algoritmo de criptografia
Especificação da chave RSAES_OAEP_SHA_1 RSAES_OAEP_SHA_256
RSA_2048 214 190
RSA_3072 342 318
RSA_4096 470 446

Especificações de chave RSA para assinatura e verificação

Quando uma CMK RSA assimétrica é usada para assinatura e verificação, você gera a assinatura para uma mensagem cm uma chave privada e verifica a assinatura com a chave pública.

Quando você chama a operação Sign no AWS KMS para uma CMK assimétrica, o AWS KMS usa a chave privada no par de chaves RSA, a mensagem e o algoritmo de assinatura especificado para gerar uma assinatura. Para verificar a assinatura, chame a operação Verify. Especifique a assinatura, a mesma CMK, a mesma mensagem e o mesmo algoritmo de assinatura. Então, o AWS KMS usa a chave pública no par de chaves RSA para verificar a assinatura. Também é possível fazer download da chave pública e usá-la para verificar a assinatura fora do AWS KMS.

O AWS KMS oferece suporte aos algoritmos de assinatura a seguir para CMKs com especificação de chave RSA. É obrigatório especificar um algoritmo de assinatura ao chamar as operações Sign e Verify. É possível escolher um algoritmo diferente para cada solicitação.

Algoritmos de assinatura compatíveis com especificações de chave RSA
Algoritmo de assinatura Descrição do algoritmo
RSASSA_PKCS1_V1_5_SHA_256 PKCS nº 1 v2.2, Seção 8.2, assinatura RSA com PKCS nº 1 v1.5 padding e SHA-256
RSASSA_PKCS1_V1_5_SHA_384 PKCS nº 1 v2.2, Seção 8.2, assinatura RSA com PKCS nº 1 v1.5 padding e SHA-384
RSASSA_PKCS1_V1_5_SHA_512 PKCS nº 1 v2.2, Seção 8.2, assinatura RSA com PKCS nº 1 v1.5 padding e SHA-512
RSASSA_PSS_SHA_256 PKCS nº 1 v2.2, Seção 8.1, assinatura RSA com padding PSS usando SHA-256 para a função de resumo de mensagens e para a função de geração de máscara MGF1 com um sal de 256 bits.
RSASSA_PSS_SHA_384 PKCS nº 1 v2.2, Seção 8.1, assinatura RSA com padding PSS usando SHA-384 para o a função de resumo de mensagens e a função de geração de máscara MGF1 com um sal de 384 bits
RSASSA_PSS_SHA_512 PKCS nº 1 v2.2, Seção 8.1, assinatura RSA com padding PSS usando SHA-512 para a função de resumo de mensagens e a função de geração de máscara MGF1 com um sal de 512 bits

Não é possível configurar uma CMK para usar algoritmos de assinatura específicos. No entanto, é possível usar a condição de política kms:SigningAlgorithm para especificar os algoritmos de assinatura que os principais têm permissão para usar com a CMK.

Para obter os algoritmos de assinatura para uma CMK, visualize a configuração de criptografia da CMK no console do AWS KMS ou usando a operação DescribeKey. O AWS KMS também fornece a especificação de chave e os algoritmos de assinatura quando você faz download da chave pública no console do AWS KMS ou usando a operação GetPublicKey.

Especificações da chave de curva elíptica

Quando você usa uma especificação de chave de curva elíptica (ECC), o AWS KMS cria uma CMK assimétrica com um par de chaves ECC para assinatura e verificação. A chave privada que gera a assinatura nunca deixa o AWS KMS descriptografada. É possível usar a chave pública para verificar assinaturas no AWS KMS ou fazer download da chave pública para usar fora do AWS KMS.

O AWS KMS oferece suporte às especificações de chave ECC a seguir para CMKs assimétricas.

  • Pares de chaves de curva elíptica assimétricas recomendadas pelo NIST (assinatura e verificação)

    • ECC_NIST_P256 (secp256r1)

    • ECC_NIST_P384 (secp384r1)

    • ECC_NIST_P521 (secp521r1)

  • Outros pares de chaves de curva elíptica assimétricas (assinatura e verificação)

    • ECC_SECG_P256K1 (secp256k1), normalmente usado para criptomoedas.

A especificação da chave ECC escolhida deve ser determinada pelos padrões de segurança ou pelos requisitos da tarefa. Em geral, use a curva com mais pontos que seja prática e acessível para sua tarefa.

Se você estiver criando uma CMK assimétrica para usar com criptomoedas, use a especificação de chave ECC_SECG_P256K1. Também é possível usar essa especificação de chave para outros fins, mas ela é exigida para Bitcoin e para outras criptomoedas.

As CMKs com especificações de chave ECC diferentes são cobradas de maneira diferente e estão sujeitas a cotas de solicitação diferentes. Para obter mais informações sobre a definição de preço do AWS KMS, consulte Definição de preço do AWS Key Management Service. Para obter informações sobre cotas de solicitação, consulte.Cotas de solicitação.

A tabela a seguir mostra os algoritmos de assinatura compatíveis com o AWS KMS para cada especificação de chave ECC. Não é possível configurar uma CMK para usar algoritmos de assinatura específicos. No entanto, é possível usar a condição de política kms:SigningAlgorithm para especificar os algoritmos de assinatura que os principais têm permissão para usar com a CMK.

Algoritmos de assinatura compatíveis para especificações de chave ECC
Especificação da chave Algoritmo de assinatura Descrição do algoritmo
ECC_NIST_P256 ECDSA_SHA_256 NIST FIPS 186-4, Seção 6.4, assinatura ECDSA usando a curva especificada pela chave e SHA-256 para o resumo de mensagens.
ECC_NIST_P384 ECDSA_SHA_384 NIST FIPS 186-4, Seção 6.4, assinatura ECDSA usando a curva especificada pela chave e SHA-384 para o resumo de mensagens.
ECC_NIST_P521 ECDSA_SHA_512 NIST FIPS 186-4, Seção 6.4, assinatura ECDSA usando a curva especificada pela chave e SHA-512 para o resumo de mensagens.
ECC_SECG_P256K1 ECDSA_SHA_256 NIST FIPS 186-4, Seção 6.4, assinatura ECDSA usando a curva especificada pela chave e SHA-256 para o resumo de mensagens.