Referência de algoritmos do SDK de criptografia da AWS - SDK de criptografia da AWS

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso haja qualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

Referência de algoritmos do SDK de criptografia da AWS

As informações nesta página são uma referência para criar sua própria biblioteca de criptografia compatível com o SDK de criptografia da AWS. Se você não está criando sua própria biblioteca de criptografia compatível, você provavelmente não precisa dessas informações.

Para usar o SDK de criptografia da AWS em uma das linguagens de programação compatíveis, consulte Linguagens de programação.

Para a especificação que define os elementos de uma implementação adequada do SDK de criptografia da AWS, consulte a Especificação do SDK de criptografia da AWS no repositório aws-encryption-sdk-specification no GitHub.

Para criar sua própria biblioteca que pode ler e gravar textos cifrados compatíveis com o SDK de criptografia da AWS, você deve compreender como o SDK implementa os algoritmos compatíveis para criptografar dados brutos. O SDK é compatível com nove pacotes de algoritmos. Uma implementação especifica o algoritmo e o modo de criptografia, o tamanho da chave, o algoritmo de derivação da chaves (se aplicável) e um algoritmo de assinatura (se aplicável). A tabela a seguir contém uma visão geral de cada implementação. Por padrão, o SDK usa a primeira implementação na tabela a seguir. A lista depois da tabela fornece mais informações.

Pacotes de algoritmos do SDK de criptografia da AWS
ID do algoritmo (em 2 bytes hexadecimais) Nome do algoritmo Tamanho da chave de dados (em bits) Modo do algoritmo Tamanho do IV (em bytes) Tamanho da tag de autenticação (em bytes) Algoritmo de derivação de chave Algoritmo de assinatura
03 78 AES 256* GCM [12] 16 HKDF com SHA-384 ECDSA com P-384 e SHA-384
03 46 AES 192 GCM [12] 16 HKDF com SHA-384 ECDSA com P-384 e SHA-384
02 14 AES : 128 GCM [12] 16 HKDF com SHA-256 ECDSA com P-256 e SHA-256
01 78 AES 256* GCM [12] 16 HKDF com SHA-256 Não aplicável.
01 46 AES 192 GCM [12] 16 HKDF com SHA-256 Não aplicável.
01 14 AES : 128 GCM [12] 16 HKDF com SHA-256 Não aplicável.
00 78 AES 256* GCM [12] 16 Não aplicável. Não aplicável.
00 46 AES 192 GCM [12] 16 Não aplicável. Não aplicável.
00 14 AES : 128 GCM [12] 16 Não aplicável. Não aplicável.
ID do algoritmo

Um valor de 2 bytes que identifica exclusivamente a implementação de um algoritmo. Esse valor é armazenado no cabeçalho da mensagem do texto cifrado.

Nome do algoritmo

O algoritmo de criptografia usado. Para todos os pacotes de algoritmos, o SDK usa o algoritmo de criptografia Advanced Encryption Standard (AES).

Tamanho da chave de dados

O tamanho da chave de dados. O SDK é compatível com chaves de 256, 192 e 128 bits. A chave de dados é gerada por uma chave mestra. Para algumas implementações, essa chave de dados é usada como entrada para uma HKDF (HMAC-based extract-and-expand key derivation function - Função de derivação de chave de extração e expansão com base no HMAC). 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.

Modo do algoritmo

O modo usado com o algoritmo de criptografia. Para todos os pacotes de algoritmos, o SDK usa o Galois/Counter Mode (GCM).

Tamanho do IV

O tamanho do IV (initialization vector - vetor de inicialização) usado com o AES-GCM. Para obter mais informações sobre os IVs que o SDK de criptografia da AWS usa, consulte o Referência do vetor de inicialização.

Tamanho da tag de autenticação

O tamanho da tag de autenticação usada com o AES-GCM.

Algoritmo de derivação de chave

A HKDF (função de derivação de chaves de extração e expansão com base no HMAC) usada para derivar a chave de criptografia de dados. O SDK usa a HKDF definida na RFC 5869, com as seguintes especificações:

  • A função de hash usada é SHA-384 ou SHA-256, conforme especificado pelo ID do algoritmo.

  • Para a etapa de extração:

    • Nenhum sal é usado. De acordo com a RFC, isso significa que o sal é definido como uma string de zeros. O tamanho da string é igual ao tamanho da saída da função de hash, ou seja, 48 bytes para SHA-384 e 32 bytes para SHA-256.

    • O material de chaveamento de entrada é a chave de dados recebida do token de autenticação ou do provedor 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 seguida pelo ID da mensagem.

    • O comprimento do material de chaveamento da saída é o Tamanho da chave de dados descrito anteriormente. Essa saída é usada como a chave de criptografia de dados no algoritmo de criptografia.

Algoritmo de assinatura

O algoritmo de assinatura usado para gerar uma assinatura sobre o cabeçalho e o corpo do texto cifrado. O SDK usa o ECDSA (Elliptic Curve Digital Signature Algorithm - Algoritmo de assinatura digital de curva elíptica) 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).

  • A função de hash usada é SHA-384 (com a curva P-384) ou SHA-256 (com a curva P-256).