

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

# AWS Encryption SDK referência de algoritmos
<a name="algorithms-reference"></a>


|  | 
| --- |
|  As informações nesta página são uma referência para criar sua própria biblioteca de criptografia compatível com o AWS Encryption SDK. Se você não estiver criando sua própria biblioteca de criptografia compatível, provavelmente não precisará dessas informações. Para usar o AWS Encryption SDK em uma das linguagens de programação suportadas, consulte[Linguagens de programação](programming-languages.md). Para a especificação que define os elementos de uma AWS Encryption SDK implementação adequada, consulte a [AWS Encryption SDK Especificação](https://github.com/awslabs/aws-encryption-sdk-specification/) em GitHub.  | 

Se você estiver criando sua própria biblioteca que pode ler e escrever textos cifrados compatíveis com o. AWS Encryption SDK, você precisará entender como ela AWS Encryption SDK implementa os conjuntos de algoritmos compatíveis para criptografar dados brutos. 

O AWS Encryption SDK suporta os seguintes conjuntos de algoritmos. Todos os pacotes de algoritmos AES-GCM têm um [vetor de inicialização](IV-reference.md) de 12 bytes e uma tag de autenticação AES-GCM de 16 bytes. O conjunto de algoritmos padrão varia de acordo com a AWS Encryption SDK versão e a política de comprometimento de chave selecionada. Para obter detalhes, consulte [Política de compromisso e pacote de algoritmos](troubleshooting-migration.md#configuration-conflict_1).


**AWS Encryption SDK Suítes de algoritmos**  

| ID do algoritmo | Versão do formato de mensagem | Algoritmo de criptografia | Tamanho da chave de dados (bits) | Algoritmo de derivação de chave | Algoritmo de assinatura | Algoritmo de confirmação de chave | Tamanho dos dados do pacote de algoritmos (bytes) | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 05 78 | 0x02 | AES-GCM | 256 | HKDF com SHA-512 | ECDSA com P-384 e SHA-384 | HKDF com SHA-512 | 32 (confirmação de chave) | 
| 04 78 | 0x02 | AES-GCM | 256 | HKDF com SHA-512 | Nenhum | HKDF com SHA-512 | 32 (confirmação de chave) | 
| 03 78 | 0x01 | AES-GCM | 256 | HKDF com SHA-384 | ECDSA com P-384 e SHA-384 | Nenhum | N/D | 
| 03 46 | 0x01 | AES-GCM | 192 | HKDF com SHA-384 | ECDSA com P-384 e SHA-384 | Nenhum | N/D | 
| 02 14 | 0x01 | AES-GCM | 128 | HKDF com SHA-256 | ECDSA com P-256 e SHA-256 | Nenhum | N/D | 
| 01 78 | 0x01 | AES-GCM | 256 | HKDF com SHA-256 | Nenhum | Nenhum | N/D | 
| 01 46 | 0x01 | AES-GCM | 192 | HKDF com SHA-256 | Nenhum | Nenhum | N/D | 
| 01 14 | 0x01 | AES-GCM | 128 | HKDF com SHA-256 | Nenhum | Nenhum | N/D | 
| 00 78 | 0x01 | AES-GCM | 256 | Nenhum | Nenhum | Nenhum | N/D | 
| 00 46 | 0x01 | AES-GCM | 192 | Nenhum | Nenhum | Nenhum | N/D | 
| 00 14 | 0x01 | AES-GCM | 128 | Nenhum | Nenhum | Nenhum | N/D | 

**ID do algoritmo**  
Um valor de 2 bytes hexadecimal que identifica exclusivamente a implementação de um algoritmo. Esse valor é armazenado no [cabeçalho da mensagem](message-format.md#header-structure) do texto cifrado.

**Versão do formato de mensagem**  
A versão do formato desta mensagem. Os pacotes de algoritmos com confirmação de chave usam formato de mensagem versão 2 (0x02). Os pacotes de algoritmos sem confirmação de chave usam formato de mensagem versão 1 (0x01). 

**Tamanho dos dados do pacote de algoritmos**  
O tamanho em bytes dos dados específicos do pacote de algoritmos. Esse campo é suportado somente no formato de mensagem versão 2 (0x02). No formato de mensagem versão 2 (0x02), esses dados aparecem no campo `Algorithm suite data` do cabeçalho da mensagem. Os conjuntos de algoritmos que compatíveis com o [confirmação de chave](concepts.md#key-commitment) usam 32 bytes para a cadeia de caracteres de confirmação de chave. Para obter mais informações, consulte **Algoritmo de confirmação de chaves** nesta lista.

**Tamanho da chave de dados**  
O tamanho da [chave de dados](concepts.md#DEK) em bits. O AWS Encryption SDK é compatível com chaves de 256, 192 e 128 bits. A chave de dados é gerada por um [token de autenticação](concepts.md#keyring) ou chave mestra.   
Em algumas implementações, essa chave de dados é usada como entrada para uma função de derivação de extract-and-expand chave baseada em HMAC (HKDF). A saída da HKDF é usada como a chave de criptografia de dados no algoritmo de criptografia. Para obter mais informações, consulte **Algoritmo de derivação de chaves** nessa lista.

**Algoritmo de criptografia**  
O nome e o modo do algoritmo de criptografia utilizado. Os pacotes de algoritmos AWS Encryption SDK usam o algoritmo de criptografia Advanced Encryption Standard (AES) com Galois/Counter Modo (GCM).

**Algoritmo de confirmação de chave**  
O algoritmo usado para calcular a string de confirmação de chave. A saída é armazenada no campo `Algorithm suite data` do cabeçalho da mensagem e é usada para validar a chave de dados para o confirmação de chave.  
Para obter uma explicação técnica sobre como adicionar comprometimento de chave a um conjunto de algoritmos, consulte [Key Committing AEADs](https://eprint.iacr.org/2020/1153) in Cryptology ePrint Archive. 

**Algoritmo de derivação de chave**  
A função de derivação de extract-and-expand chave baseada em HMAC (HKDF) usada para derivar a chave de criptografia de dados. O AWS Encryption SDK usa o HKDF definido na [RFC](https://tools.ietf.org/html/rfc5869) 5869.   
**Pacotes de algoritmos sem confirmação de chave** (ID do algoritmo `01xx` – `03xx`)  
+ A função de hash usada é SHA-384 ou SHA-256, dependendo do pacote de algoritmos.
+ Para a etapa de extração:
  + Nenhum sal é usado. De acordo com a RFC, o sal é definido como uma string de zeros. O tamanho da string é igual ao tamanho da saída da função de hash, que é 48 bytes para SHA-384 e 32 bytes para SHA-256.
  + O material de chaveamento de entrada é a chave de dados recebida do provedor de tokens de autenticação ou de chaves mestras.
+ Para a etapa de expansão:
  + A chave pseudoaleatória de entrada é a saída da etapa de extração.
  + As informações da entrada são uma concatenação do ID do algoritmo seguido pelo ID da mensagem (nessa ordem).
  + O comprimento do material de chaveamento de saída é o **Tamanho da chave de dados**. Essa saída é usada como a chave de criptografia de dados no algoritmo de criptografia.
**Pacotes de algoritmos com confirmação de chave** (ID do algoritmo `04xx` e `05xx`)  
+ A função hash usada é SHA-512.
+ Para a etapa de extração:
  + O sal é um valor aleatório criptográfico de 256 bits. No [formato de mensagem versão 2](message-format.md) (0x02), esse valor é armazenado no campo `MessageID`.
  + O material de chaveamento inicial é a chave de dados recebida do provedor de tokens de autenticação ou de chaves mestras.
+ Para a etapa de expansão:
  + A chave pseudoaleatória de entrada é a saída da etapa de extração.
  + O rótulo da chave são os bytes codificados em UTF-8 da string `DERIVEKEY` na ordem de bytes big endian.
  + As informações da entrada são uma concatenação do ID do algoritmo seguido pelo rótulo de chave (nessa ordem).
  + O comprimento do material de chaveamento de saída é o **Tamanho da chave de dados**. Essa saída é usada como a chave de criptografia de dados no algoritmo de criptografia.

**Versão do formato de mensagem**  
A versão do formato de mensagem usado com o conjunto de algoritmos. Para obter detalhes, consulte [Referência do formato de mensagens](message-format.md).

**Algoritmo de assinatura**  
O algoritmo de assinatura usado para gerar uma[assinatura digital](concepts.md#digital-sigs) sobre o cabeçalho e o corpo do texto cifrado. O AWS Encryption SDK usa o Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) com as seguintes especificações:  
+ A curva elíptica usada é a curva P-384 ou P-256, conforme especificado pelo ID do algoritmo. Essas curvas são definidas no [Digital Signature Standard (DSS) (FIPS PUB 186-4)](http://doi.org/10.6028/NIST.FIPS.186-4).
+ A função de hash usada é SHA-384 (com a curva P-384) ou SHA-256 (com a curva P-256).