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 e 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 alterada. Para obter ajuda com a criação de CMK simétrica e assimétrica, consulte Criar chaves.

O AWS KMS CMK oferece suporte a dois tipos de chave do : Simétrica do e Assimétrica. 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 parte 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 no AWS 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 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 a CMK no AWS KMS. Por exemplo, não é possível usar concessões ou políticas de chaves do KMS 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 compatíveis com o AWS KMS. 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. Haverá falha na operação Decrypt se os dados tiverem sido criptografados sob uma chave pública de um CMK com um uso de chave de SIGN_VERIFY. Ela também falhará se tiver sido criptografada usando um algoritmo não compatível com o KMS para o RSA CMKs.

Para evitar esses erros, qualquer pessoa que esteja usando uma chave pública fora do AWS KMS deve armazenar a configuração da chave. O console do AWS KMS e a resposta GetPublicKey fornecem as informações que você deve incluir ao compartilhar a chave pública.

Uso com serviços da AWS integrados

Para criar uma CMK para uso com um serviço da AWS integrado ao AWS KMS, consulte a documentação do serviço. Todos os serviços da AWS que criptografam dados em seu nome exigem uma CMK simétrica.

Além dessas considerações, as CMKs com diferentes especificações de chave têm preços e solicitar cotas 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 mais informações sobre as solicitar cotas, consulte Solicitar cotas.

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
CMKTipo 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 Assinar e verificar.

  • Para CMKs com material de chave RSA, selecione Criptografar e descriptografar ou Assinar e verificar.

Para determinar o uso da chave que as entidades principais em sua conta têm permissão para usar CMKs, use a chave de condição kms:CustomerMasterKeyUsage.

Selecionar a especificação de chave

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

nota

Em operações de API do AWS KMS, a especificação de chave para CMKs é conhecida como CustomerMasterKeySpec. Isso a distingue da especificação de chave para chaves de dados (KeySpec) e pares de chaves de dados (KeyPairSpec), e a especificação de chave usada ao encapsular o material de chaves 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 para 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 para as quais as entidades principais em sua conta podem usar CMKs, use a chave de condição kms:CustomerMasterKeySpec.

O AWS KMS é compatível com as 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 , será selecionado SYMMETRIC_DEFAULT.CustomerMasterKeySpec 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 detalhes técnicos, consulte o Whitepaper Detalhes criptográficos do AWS Key Management Service.

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 uma especificação de chave RSA é usada, 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 não compatível com a CMK, os dados se tornarã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. CMKs com diferentes especificações de chave RSA têm preços diferentes e estão sujeitas a solicitar cotas 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 mais informações sobre as solicitar cotas, consulte Solicitar cotas.

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 a operação Encrypt é chamada 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, chame a função Decrypt com a mesma CMK e o mesmo algoritmo de criptografia.

O AWS KMS é compatível com 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, No AWS KMS, os algoritmos RSAES_OAEP sempre usam a mesma função de hash para ambas as finalidades de hash e para a função de geração de máscara (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 usar 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 as entidades principais têm permissão para usar com a CMK.

Para obter os algoritmos de criptografia para um CMK, visualize a configuração criptográfica do CMK no console do AWS KMS ou use a operação DescribeKey. O 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 AWS KMSGetPublicKey.

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 simples em bytes para esses algoritmos, use a seguinte fórmula: (key_size_in_bits /8) – (2 * hash_length_in_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 com 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 é compatível com 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 um CMK, visualize a configuração criptográfica do CMK no console do AWS KMS ou usando a operação DescribeKey. O 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 AWS KMSGetPublicKey.

Especificações da chave de curva elíptica

Quando uma especificação de chave de curva elíptica (ECC) é usada, 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 é compatível com 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 diferentes solicitar cotas. 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 mais informações sobre as solicitar cotas, consulte Solicitar cotas.

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.