Conceitos no AWS Encryption SDK - AWS Encryption SDK

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

Conceitos no AWS Encryption SDK

Esta seção apresenta os conceitos usados no AWS Encryption SDK e fornece um glossário e uma referência. Ele foi projetado para ajudar você a entender como AWS Encryption SDK funciona e os termos que usamos para descrevê-lo.

Precisa de ajuda?

criptografia envelopada

A segurança dos dados criptografados depende em parte da proteção da chave de dados que pode descriptografá-los. Uma prática recomendada aceita para proteger a chave de dados é criptografá-la. Para fazer isso, você precisa de outra chave de criptografia, conhecida como chave de criptografia de chave ou chave de encapsulamento. Essa prática de uso de uma chave do KMS para criptografar chaves de dados é conhecida como criptografia envelopada.

Proteção de chaves de dados

O AWS Encryption SDK criptografa cada mensagem com uma chave de dados exclusiva. Em seguida, ele criptografa cada chave de dados sob a chave de encapsulamento especificada. Ele armazena as chaves de dados criptografadas junto com os dados criptografados na mensagem criptografada que as operações de criptografia retornam.

Para especificar sua chave de encapsulamento, use um token de autenticação ou umprovedor de chave mestra.

Criptografia de envelope com o AWS Encryption SDK
Criptografar os mesmos dados com várias chaves de encapsulamento

É possível criptografar a chave de dados sob várias chaves de encapsulamento. Talvez você queira fornecer chaves de encapsulamento distintas para usuários diferentes ou chaves de encapsulamento de tipos variados ou em locais diferentes. Cada uma das chaves de encapsulamento criptografa a mesma chave de dados. Ele AWS Encryption SDK armazena todas as chaves de dados criptografadas com os dados criptografados na mensagem criptografada.

Para descriptografar os dados, você precisa fornecer pelo menos uma chave de encapsulamento que possa descriptografar uma das chaves de dados criptografadas.

Cada chave de encapsulamento criptografa a mesma chave de dados, o que resulta em uma chave de dados criptografada para cada chave de encapsulamento
Combinação de pontos fortes de vários algoritmos

Para criptografar seus dados, por padrão, ele AWS Encryption SDK usa um sofisticado conjunto de algoritmos com AES - criptografia GCM simétrica, uma função de derivação de chave (HKDF) e assinatura. Para criptografar a chave de dados, você pode especificar um algoritmo de criptografia simétrico ou assimétrico apropriado à sua chave de encapsulamento.

Em geral, os algoritmos de criptografia de chaves simétricas são mais rápidos e produzem textos cifrados menores que a criptografia de chave pública ou assimétrica. No entanto, os algoritmos de chave pública fornecem separação inerente de funções e gerenciamento de chaves mais fácil. Para combinar as forças de cada um, você pode criptografar dados brutos com criptografia de chave simétrica e, em seguida, criptografar a chave de dados com criptografia de chave pública.

Chave de dados

A chave de ados é uma chave de criptografia que o AWS Encryption SDK usa para criptografar os dados. Cada chave de dados é uma matriz de bytes que cumpre os requisitos para chaves criptográficas. A menos que você esteja usando o cache de chaves de dados, ele AWS Encryption SDK usa uma chave de dados exclusiva para criptografar cada mensagem.

Você não precisa especificar, gerar, implementar, estender, proteger ou usar chaves de dados. O AWS Encryption SDK faz esse trabalho para você quando você chama as operações de criptografia e descriptografia.

Para proteger suas chaves de dados, eles as AWS Encryption SDK criptografam sob uma ou mais chaves de criptografia de chave conhecidas como chaves de empacotamento ou chaves mestras. Depois de AWS Encryption SDK usar suas chaves de dados em texto simples para criptografar seus dados, ele os remove da memória o mais rápido possível. Depois, ele armazena as chaves de dados criptografadas junto com os dados criptografados na mensagem criptografada que as operações de criptografia retornam. Para obter detalhes, consulte Como o AWS Encryption SDK funciona.

dica

No AWS Encryption SDK, distinguimos as chaves de dados das chaves de criptografia de dados. Vários dos pacotes de algoritmos, incluindo o pacote padrão, usam uma função de derivação de chaves que impede que a chave de dados atinja seus limites de criptografia. A função de derivação de chaves usa a chave de dados como entrada e retorna uma chave de criptografia de dados que é realmente usada para criptografar os dados. Por esse motivo, sempre dizemos que os dados são criptografados "sob" uma chave de dados em vez de "pela" chave de dados.

Cada chave de dados criptografada inclui metadados, incluindo o identificador da chave de encapsulamento que a criptografou. Esses metadados facilitam a identificação de chaves de empacotamento válidas durante a descriptografia. AWS Encryption SDK

Chave de encapsulamento

Uma chave de encapsulamento é uma chave de criptografia que o AWS Encryption SDK usa para criptografar a chave de dados que criptografa seus registros. Cada chave de dados em texto simples pode ser criptografada sob uma ou mais chaves mestras. Você determina quais chaves de encapsulamento serão usadas para proteger seus dados ao configurar um token de autenticação ou um provedor de chave mestra.

nota

A chave de encapsulamento refere-se às chaves em um token de autenticação ou provedor de chave mestra. A chave mestra geralmente está associada à classe MasterKey que você instancia ao usar um provedor de chave mestra.

O AWS Encryption SDK suporta várias chaves de agrupamento comumente usadas, como AWS Key Management Service (AWS KMS) simétricas (incluindo chaves multirregionais), KMS chaves brutas AES - AWS KMS keysGCM(Advanced Encryption Standard/Galois Counter Mode) e chaves brutas. RSA Você também pode estender ou implementar suas próprias chaves de encapsulamento.

Quando você usa a criptografia envelopada, precisa proteger suas chaves de encapsulamento contra acesso não autorizado. É possível fazer isso de uma das seguintes maneiras:

Se você não tem um sistema de gerenciamento de chaves, recomendamos AWS KMS. Ele AWS Encryption SDK se integra AWS KMS para ajudar você a proteger e usar suas chaves de embalagem. No entanto, AWS Encryption SDK não requer AWS nenhum AWS serviço.

Tokens de autenticação e provedores de chaves mestras

Para especificar as chaves de encapsulamento que você usa para criptografia e descriptografia, use um chaveiro (C, C#/. NET, e JavaScript) ou um provedor de chave mestra (Java, Python,CLI). Você pode usar os chaveiros e os provedores de chaves mestras que eles AWS Encryption SDK fornecem ou criar suas próprias implementações. O AWS Encryption SDK fornece tokens de autenticação e provedores de chaves mestras compatíveis entre si, sujeitos a restrições de linguagem. Para obter detalhes, consulte Compatibilidade dos tokens de autenticação.

Um token de autenticação gera, criptografa e descriptografa chaves de dados. Ao definir um token de autenticação, você pode especificar as chaves de encapsulamento que criptografam suas chaves de dados. A maioria dos tokens de autenticação especificam pelo menos uma chave de encapsulamento ou um serviço que fornece e protege chaves de encapsulamento. Você também pode definir um token de autenticação sem chaves de encapsulamento ou um token de autenticação mais complexo com opções de configuração adicionais. Para obter ajuda para escolher e usar os chaveiros que AWS Encryption SDK definem, consulteUsar tokens de autenticação. Os chaveiros são suportados em C, C#/. NET JavaScript, e versão 3. x do AWS Encryption SDK for Java.

Um provedor de chave mestra é uma alternativa a um token de autenticação. O provedor de chave mestra retorna as chaves de encapsulamento (ou chaves mestras) que você especificar. Cada chave mestra é associada a um provedor de chaves mestras, mas um provedor de chaves mestras normalmente fornece várias chaves mestras. Os provedores de chaves mestras são compatíveis com Java, Python e Criptografia. AWS CLI

Você deve especificar um token de autenticação (ou provedor de chave mestra) para criptografia. Você pode especificar o mesmo token de autenticação (ou provedor de chave mestra), ou um diferente, para descriptografia. Ao criptografar, ele AWS Encryption SDK usa todas as chaves de empacotamento que você especificar para criptografar a chave de dados. Ao descriptografar, o AWS Encryption SDK usa somente as chaves de encapsulamento que você especificar para descriptografar uma chave de dados criptografada. Especificar chaves de encapsulamento para decodificação é opcional, mas é uma prática recomendada. AWS Encryption SDK

Para obter detalhes sobre como especificar chaves de encapsulamento, consulte. Seleção de chaves de encapsulamento

Contexto de criptografia

Para melhorar a segurança de suas operações de criptografia, inclua um contexto de criptografia em todas as solicitações para criptografar dados. O uso de um contexto de criptografia é opcional, mas é uma melhor prática de criptografia que recomendamos.

Um contexto de criptografia é um conjunto de pares de chave-valor que contêm dados autenticados adicionais arbitrários e não secretos. O contexto de criptografia pode conter todos os dados que você escolher, mas geralmente consiste em dados que são úteis para registro em log e rastreamento, como dados sobre o tipo de arquivo, a finalidade ou a propriedade. Quando você criptografa dados, o contexto de criptografia é associado de maneira criptográfica aos dados criptografados de forma que o mesmo contexto de criptografia seja necessário para descriptografar os dados. O AWS Encryption SDK inclui o contexto de criptografia em texto simples no cabeçalho da mensagem criptografada retornada por ele.

O contexto de criptografia que eles AWS Encryption SDK usam consiste no contexto de criptografia que você especifica e em um par de chaves públicas que o gerenciador de materiais criptográficos (CMM) adiciona. Especificamente, sempre que você usa um algoritmo de criptografia com assinatura, CMM ele adiciona um par nome-valor ao contexto de criptografia que consiste em um nome reservado e um valor que representa a chave pública de verificação. aws-crypto-public-key O aws-crypto-public-key nome no contexto de criptografia é reservado pelo AWS Encryption SDK e não pode ser usado como nome em nenhum outro par no contexto de criptografia. Para obter detalhes, consulte AADa Referência do formato da mensagem.

O exemplo de contexto de criptografia a seguir consiste em dois pares de contexto de criptografia especificados na solicitação e no par de chaves públicas que eles CMM adicionam.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

Para descriptografar os dados, você passa a mensagem criptografada. Como o AWS Encryption SDK pode extrair o contexto de criptografia do cabeçalho da mensagem criptografada, você não precisa fornecer o contexto de criptografia separadamente. No entanto, o contexto de criptografia pode ajudar a confirmar se você está descriptografando a mensagem criptografada correta.

  • Na interface de linha de AWS Encryption SDK comando (CLI), se você fornecer um contexto de criptografia em um comando de descriptografia, ele CLI verifica se os valores estão presentes no contexto de criptografia da mensagem criptografada antes de retornar os dados em texto simples.

  • Em outras implementações de linguagens de programação, a resposta de descriptografia inclui o contexto de criptografia e os dados em texto simples. A função de descriptografia em seu aplicativo sempre deve verificar se o contexto de criptografia na resposta de descriptografia inclui o contexto de criptografia na solicitação de criptografia (ou um subconjunto) antes de retornar os dados em texto simples.

nota

Com a versão 4. x do AWS Encryption SDK formulário. NETe a versão 3. x do AWS Encryption SDK for Java, você pode exigir um contexto de criptografia em todas as solicitações de criptografia com o contexto CMM de criptografia necessário.

Ao escolher um contexto de criptografia, lembre-se de que ele não é um segredo. O contexto de criptografia é exibido em texto não criptografado no cabeçalho da mensagem criptografada retornada pelo AWS Encryption SDK . Se você estiver usando AWS Key Management Service, o contexto de criptografia também poderá aparecer em texto simples em registros e registros de auditoria, como. AWS CloudTrail

Para obter exemplos de envio e verificação de um contexto de criptografia no seu código, consulte os exemplos da linguagem de programação de sua preferência.

Mensagem criptografada

Quando você criptografa dados com o AWS Encryption SDK, ele retorna uma mensagem criptografada.

Uma mensagem criptografada é uma estrutura de dados formatados portátil que inclui os dados criptografados junto com as cópias criptografadas das chaves de dados, o ID do algoritmo e, opcionalmente, um contexto de criptografia e uma assinatura digital. As operações de criptografia no AWS Encryption SDK retornam uma mensagem criptografada, e as operações de descriptografia usam uma mensagem criptografada como entrada.

A combinação de dados criptografados e de suas chaves de dados criptografadas simplifica a operação e elimina a necessidade de armazenar e gerenciar chaves de dados criptografadas independentemente dos dados que elas criptografam.

Para obter informações técnicas sobre a mensagem criptografada, consulte Formato da mensagem criptografada.

Pacote de algoritmos

O AWS Encryption SDK usa um conjunto de algoritmos para criptografar e assinar os dados na mensagem criptografada que as operações de criptografia e descriptografia retornam. O AWS Encryption SDK é compatível com vários pacotes de algoritmos. Todas as suítes suportadas usam o Advanced Encryption Standard (AES) como algoritmo principal e o combinam com outros algoritmos e valores.

O AWS Encryption SDK estabelece um conjunto de algoritmos recomendado como padrão para todas as operações de criptografia. O padrão pode ser alterado conforme os padrões e as práticas recomendadas são aprimoradas. Você pode especificar um conjunto alternativo de algoritmos nas solicitações para criptografar dados ou ao criar um gerenciador de materiais criptográficos (CMM), mas, a menos que uma alternativa seja necessária para sua situação, é melhor usar o padrão. O padrão atual é AES - GCM com uma função de derivação de extract-and-expand chave HMAC baseada (HKDF), compromisso de chave, uma assinatura de algoritmo de assinatura digital de curva elíptica (ECDSA) e uma chave de criptografia de 256 bits.

Se sua aplicação exigir alta performance e os usuários que criptografam dados e aqueles que os descriptografam forem igualmente confiáveis, considere especificar um pacote de algoritmos sem uma assinatura digital. No entanto, recomendamos fortemente um pacote de algoritmos que inclua confirmação de chave e uma função de derivação de chave. Os pacotes de algoritmos que não têm esses atributos são compatíveis apenas para compatibilidade com versões anteriores.

Gerenciador de material de criptografia

O gerenciador de materiais criptográficos (CMM) reúne os materiais criptográficos usados para criptografar e descriptografar dados. O material criptográfico inclui texto não criptografado e chaves de dados criptografadas e uma chave de assinatura de mensagem opcional. Você nunca interage CMM diretamente com o. Os métodos de criptografia e descriptografia o processam para você.

Você pode usar o padrão CMM ou o cache CMM que ele AWS Encryption SDK fornece, ou escrever um personalizadoCMM. E você pode especificar umCMM, mas isso não é obrigatório. Quando você especifica um provedor de chaveiro ou chave mestra, AWS Encryption SDK ele cria um padrão CMM para você. O padrão CMM obtém os materiais de criptografia ou descriptografia do provedor de chaveiros ou chave mestra que você especificar. Isso pode envolver uma chamada a um serviço criptográfico, como o AWS Key Management Service (AWS KMS).

Como CMM atua como uma ligação entre o AWS Encryption SDK e um chaveiro (ou provedor de chave mestra), é um ponto ideal para personalização e extensão, como suporte para aplicação de políticas e armazenamento em cache. O AWS Encryption SDK fornece um armazenamento em cache CMM para suportar o cache de chaves de dados.

Criptografia simétrica e assimétrica

A criptografia simétrica usa a mesma chave para criptografar e descriptografar dados.

A criptografia assimétrica usa um par de chaves de dados matematicamente relacionado. Uma chave no par criptografa os dados; somente a outra chave no par pode descriptografar os dados. Para obter detalhes, consulte Algoritmos criptográficos no Guia de ferramentas e serviços criptográficos da AWS .

O AWS Encryption SDK usa criptografia de envelope. Ele criptografa os dados com uma chave de dados simétrica. Ele criptografa a chave de dados simétrica com uma ou mais chaves de encapsulamento simétricas ou assimétricas. Ele retorna uma mensagem criptografada que inclui os dados criptografados e pelo menos uma cópia criptografada da chave de dados.

Criptografar dados (criptografia simétrica)

Para criptografar seus dados, o AWS Encryption SDK usa uma chave de dados simétrica e um conjunto de algoritmos que inclui um algoritmo de criptografia simétrica. Para descriptografar os dados, o AWS Encryption SDK usa a mesma chave de dados e o mesmo conjunto de algoritmos.

Criptografar chave de dados (criptografia simétrica ou assimétrica)

O token de autenticação ou o provedor de chave mestra que você fornece para uma operação de criptografia e descriptografia determina como a chave de dados simétrica será criptografada e descriptografada. Você pode escolher um provedor de chaveiro ou chave mestra que use criptografia simétrica, como um AWS KMS chaveiro, ou um que use criptografia assimétrica, como um chaveiro bruto ou. RSA JceMasterKey

Confirmação de chave

O AWS Encryption SDK suporta o comprometimento da chave (às vezes conhecido como robustez), uma propriedade de segurança que garante que cada texto cifrado possa ser descriptografado somente em um único texto simples. Para fazer isso, a confirmação de chave garante que somente a chave de dados que criptografou sua mensagem seja usada para descriptografá-la. Criptografar e descriptografar com o confirmação de chave é uma prática recomendada do AWS Encryption SDK.

A maioria das cifras simétricas modernas (inclusiveAES) criptografa um texto sem formatação com uma única chave secreta, como a chave de dados exclusiva AWS Encryption SDK usada para criptografar cada mensagem de texto sem formatação. Descriptografar esses dados com a mesma chave de dados retorna um texto sem formatação idêntico ao original. A decodificação com uma chave diferente geralmente falhará. No entanto, é possível decifrar um texto cifrado com duas chaves diferentes. Em casos raros, é possível encontrar uma chave que possa descriptografar alguns bytes do o texto cifrado em um texto simples diferente, mas ainda inteligível.

AWS Encryption SDK Sempre criptografa cada mensagem de texto simples em uma chave de dados exclusiva. Ele pode criptografar essa chave de dados em várias chaves de encapsulamento, mas as chaves de encapsulamento (ou chaves mestras) sempre criptografam a mesma chave de dados. No entanto, uma mensagem criptografada sofisticada e criada manualmente pode, na verdade, conter chaves de dados diferentes, cada uma criptografada por uma chave de encapsulamento diferente. Por exemplo, se um usuário descriptografar a mensagem criptografada, ela retornará 0x0 (falso), enquanto outro usuário descriptografando a mesma mensagem criptografada obterá 0x1 (verdadeiro).

Para evitar esse cenário, o AWS Encryption SDK suporta o comprometimento da chave ao criptografar e descriptografar. Quando AWS Encryption SDK criptografa uma mensagem com comprometimento de chave, ele vincula criptograficamente a chave de dados exclusiva que produziu o texto cifrado à cadeia de caracteres de confirmação da chave, um identificador de chave de dados não secreto. Em seguida, ele armazena o string de compromisso chave nos metadados da mensagem criptografada. Ao decifrar uma mensagem com comprometimento de chave, AWS Encryption SDK verifica se a chave de dados é a única chave para essa mensagem criptografada. Se a verificação da chave de dados falhar, a operação de descriptografia falhará.

O suporte para confirmação de chaves foi apresentado na versão 1.7. x, que pode descriptografar mensagens com confirmação de chave, mas não pode criptografar com confirmação de chave. Você pode usar essa versão para implantar totalmente a capacidade de descriptografar texto cifrado com confirmação de chave. A versão 2.0.x inclui suporte total para os compromissos de chave. Por padrão, ela criptografa e descriptografa somente com confirmação de chave. Essa é uma configuração ideal para aplicativos que não precisam decifrar texto cifrado criptografado por versões anteriores do. AWS Encryption SDK

Embora criptografar e descriptografar com confirmação de chave seja uma prática recomendada, deixamos que você decida quando ela será usada e ajustamos o ritmo em que você a adota. A partir da versão 1.7. x, AWS Encryption SDK suporta uma política de compromisso que define o conjunto de algoritmos padrão e limita os conjuntos de algoritmos que podem ser usados. Essa política determina se seus dados são criptografados e descriptografados com confirmação de chave.

A confirmação de chave resulta em uma mensagem criptografada um pouco maior (+ 30 bytes) e que leva mais tempo para ser processada. Se sua aplicação for muito sensível ao tamanho ou à performance, você poderá optar por não aceitar a confirmação de chave. Mas faça isso somente se for necessário.

Para obter mais informações sobre a migração para as versões 1.7.x e 2.0.x, incluindo seus atributos de confirmação de chave, consulte Como migrar seu AWS Encryption SDK. Para obter informações técnicas sobre confirmação de chave, consulte AWS Encryption SDK referência de algoritmos eAWS Encryption SDK referência de formato de mensagem.

Política de compromisso

Uma política de compromisso é uma definição de configuração que determina se a aplicação criptografa e descriptografa com confirmação de chave. Criptografar e descriptografar com o confirmação de chave é uma prática recomendada do AWS Encryption SDK.

A política de compromisso tem três valores.

nota

Talvez seja necessário rolar horizontalmente ou verticalmente para ver a tabela inteira.

Valores da política de compromisso
Valor Criptografa com confirmação de chave Criptografa sem confirmação de chave Descriptografa com confirmação de chave Descriptografa sem confirmação de chave
ForbidEncryptAllowDecrypt Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptAllowDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptRequireDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation.

A configuração da política de compromisso foi introduzida na AWS Encryption SDK versão 1.7. x. Ela é válida em todas as linguagens de programação suportadas.

  • O ForbidEncryptAllowDecrypt descriptografa com ou sem confirmação de chave, mas não criptografa com confirmação de chave. Esse valor, introduzido na versão 1.7. x, foi projetado para preparar todos os hosts que executam seu aplicativo para decifrar com comprometimento de chave antes mesmo de encontrarem um texto cifrado criptografado com comprometimento de chave.

  • O RequireEncryptAllowDecrypt sempre criptografa com confirmação de chave. Ele pode descriptografar textos cifrados criptografados com ou sem confirmação de chave. Este valor, introduzido na versão 2.0.x, permite que você comece a criptografar com confirmação de chave, mas ainda descriptografe textos cifrados herdados sem confirmação de chave.

  • RequireEncryptRequireDecrypt: criptografa e descriptografa somente com confirmação de chave. Esse valor é o padrão para a versão 2.0x. Use-o valor quando tiver certeza de que todos os seus textos cifrados estão criptografados com a confirmação de chave.

A configuração da política de compromisso determina quais pacotes de algoritmos você pode usar. A partir da versão 1.7. x, o pacote de algoritmos de AWS Encryption SDK suporte para comprometimento de chaves; com e sem assinatura. Se você especificar um pacote de algoritmos que entre em conflito com sua política de compromisso, o AWS Encryption SDK retornará um erro.

Para obter ajuda para definir sua política de compromisso, consulte Como definir sua política de compromisso.

Assinaturas digitais

Para garantir a integridade de uma mensagem digital à medida que ela passa entre os sistemas, você pode aplicar uma assinatura digital à mensagem. As assinaturas digitais são sempre assimétricas. Use a chave privada para criar a assinatura e anexá-la à mensagem original. O destinatário usa uma chave pública para verificar se a mensagem não foi modificada desde que você o assinou.

Ele AWS Encryption SDK criptografa seus dados usando um algoritmo de criptografia autenticado, AES -GCM, e o processo de descriptografia verifica a integridade e a autenticidade de uma mensagem criptografada sem usar uma assinatura digital. Mas como GCM usa chaves simétricas, qualquer pessoa que consiga descriptografar a chave de dados usada para descriptografar o texto cifrado também pode criar manualmente um novo texto cifrado, causando uma possível preocupação de segurança. AES Por exemplo, se você usar uma AWS KMS chave como chave de encapsulamento, isso significa que é possível que um usuário com permissões de KMS descriptografia crie textos cifrados criptografados sem chamar o Encrypt. KMS

Para evitar esse problema, o AWS Encryption SDK suporta a adição de uma assinatura do Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) ao final das mensagens criptografadas. Quando um conjunto de algoritmos de assinatura é usado, AWS Encryption SDK ele gera uma chave privada temporária e um par de chaves públicas para cada mensagem criptografada. Ele AWS Encryption SDK armazena a chave pública no contexto de criptografia da chave de dados e descarta a chave privada, e ninguém pode criar outra assinatura que verifique com a chave pública. Como o algoritmo vincula a chave pública à chave de dados criptografada como dados autenticados adicionais no cabeçalho da mensagem, um usuário que só pode descriptografar mensagens não pode alterar a chave pública.

A verificação de assinatura adiciona um custo significativo de performance à descriptografia. Se os usuários que criptografam dados e os usuários que decifram os dados forem igualmente confiáveis, considere usar um pacote de algoritmos que não inclua assinatura.