Pacotes de algoritmos compatíveis 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á.

Pacotes de algoritmos compatíveis no AWS Encryption SDK

Um pacote de algoritmos é uma coleção de algoritmos criptográficos e de valores relacionados. Os sistemas de criptografia usam a implementação do algoritmo para gerar a mensagem de texto cifrado.

O pacote de algoritmos do AWS Encryption SDK usa o algoritmo Advanced Encryption Standard (AES - padrão avançado de criptografia) no Galois/Counter Mode (GCM), conhecido como AES-GCM, para criptografar dados brutos. O AWS Encryption SDK é compatível com chaves de criptografia de 256, 192 e 128 bits. O tamanho do vetor de inicialização (IV) é sempre 12 bytes. O tamanho da tag de autenticação é sempre 16 bytes.

Por padrão, o AWS Encryption SDK usa um conjunto de algoritmos com AES-GCM com uma função de derivação de chave de extração e expansão baseada em HMAC (HKDF), assinatura e uma chave de criptografia de 256 bits. Se a política de compromisso exigir confirmação de chave, o AWS Encryption SDK seleciona um pacote de algoritmos que também oferece suporte ao confirmação chave; caso contrário, seleciona um pacote de algoritmos com derivação e assinatura de chaves, mas não com confirmação de chave.

O AWS Encryption SDK recomenda um pacote de algoritmos que deriva uma chave de criptografia AES-GCM fornecendo uma chave de criptografia de dados de 256 bits para a função de derivação de chave de extração e expansão (HKDF) baseada em HMAC. O AWS Encryption SDK adiciona uma assinatura do Elliptic Curve Digital Signature Algorithm (ECDSA – Algoritmo de assinatura digital de curva elíptica). Para oferecer suporte ao comprometimento da chave, esse pacote de algoritmos também deriva uma sequência de caracteres de comprometimento da chave, um identificador de chave de dados não secreto, que é armazenado nos metadados da mensagem criptografada. Essa sequência de comprometimento da chave também é derivada por meio do HKDF usando um procedimento semelhante à derivação da chave de criptografia de dados.

Pacote de algoritmos do AWS Encryption SDK
Algoritmo de criptografia Tamanho da chave de criptografia de dados (em bits) Algoritmo de derivação de chave Algoritmo de assinatura Confirmação de chave
AES-GCM 256 HKDF com SHA-384 ECDSA com P-384 e SHA-384 HKDF com SHA-512

A HKDF ajuda a evitar a reutilização acidental de uma chave de criptografia de dados e reduz o risco de sobreuso de chaves de dados.

Para assinatura, esse pacote de algoritmos usa ECDSA com um algoritmo de função hash criptográfica (SHA-384). O ECDSA é usado por padrão, mesmo quando ele não é especificado pela política da chave mestra subjacente. A assinatura da mensagem verifica se o remetente foi autorizado a criptografar mensagens e fornece o não repúdio. Isso é especialmente útil quando a política de autorização de uma chave mestra permite que um conjunto de usuários criptografe dados e outro conjunto de usuários descriptografe os dados.

Conuuntos de algoritmos com confirmação de chave garantem que cada texto cifrado seja descriptografado em apenas um texto simples. Eles fazem isso validando a chave de dados usada como entrada para o algoritmo de criptografia. Ao criptografar, esses conjuntos de algoritmos derivam um HMAC de comprometimento fundamental. Antes de descriptografar, eles validam que a chave de dados corresponde à sequência de conformação da chave. Caso contrário, a chamada de descriptografia falhará.

Outros pacotes de algoritmos compatíveis

O AWS Encryption SDK oferece suporte aos seguintes pacotes de algoritmos alternativos para fins de compatibilidade com versões anteriores. Em geral, não recomendamos esses pacotes de algoritmos. No entanto, reconhecemos que a assinatura pode prejudicar significativamente a performance, por isso oferecemos um pacote de confirmação de chaves com derivação de chaves para esses casos. Para aplicações que precisam fazer concessões de performance mais significativas, continuamos oferecendo pacotes que não possuem assinatura, confirmação de chaves e derivação de chaves.

AES-GCM sem confirmação de chave

Os conjuntos de algoritmos sem confirmação de chave não validam a chave de dados antes da descriptografia. Como resultado, esses conjuntos de algoritmos podem descriptografar um único texto cifrado em diferentes mensagens de texto simples. No entanto, como os pacotes de algoritmos com confirmação de chave produzem uma mensagem criptografada um pouco maior (+30 bytes) e demoram mais para serem processados, eles podem não ser a melhor opção para cada aplicação.

O AWS Encryption SDK oferece suporte a um pacote de algoritmos com derivação de chave, confirmação de chave e assinatura, e um com derivação de chave e confirmação de chave, mas sem assinatura. Não recomendamos usar um pacote de algoritmos sem confirmação de chave. Se necessário, recomendamos um pacote de algoritmos com derivação e confirmação de chaves, mas sem assinatura. No entanto, se o perfil de performance da aplicação for compatível com o uso de um pacote de algoritmos, usar um pacote de algoritmos com confirmação de chaves, derivação de chaves e assinatura é uma prática recomendada.

AES-GCM sem assinatura

Os conjuntos de algoritmos sem assinatura carecem da assinatura ECDSA, que fornece autenticidade e não repúdio. Use esse conjunto apenas quando os usuários que criptografam dados e os que os descriptografam são igualmente confiáveis.

Ao usar um pacote de algoritmos sem assinatura, recomendamos escolher um com derivação e confirmação de chave.

AES-GCM sem derivação de chaves

Pacotes de algoritmos sem derivação usam a criptografia de dados como a chave de criptografia do AES-GCM, em vez de usar uma função de derivação de chaves para derivar uma chave exclusiva. Desencorajamos o uso desse pacote para gerar texto cifrado, mas o AWS Encryption SDKoferece suporte a ele por motivos de compatibilidade.

Para obter mais informações sobre como esses pacotes são representados e usados na biblioteca, consulte Referência de algoritmos do AWS Encryption SDK.