AWS Encryption SDK referencia de algoritmos - AWS Encryption SDK

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS Encryption SDK referencia de algoritmos

La información de esta página le servirá de referencia para crear su propia biblioteca de cifrado compatible con el AWS Encryption SDK. Si no está creando su propia biblioteca de cifrado compatible, es probable que no necesite esta información.

Para utilizarla AWS Encryption SDK en uno de los lenguajes de programación compatibles, consulteLenguajes de programación.

Para ver la especificación que define los elementos de una AWS Encryption SDK implementación adecuada, consulte la AWS Encryption SDK especificación en GitHub.

Si va a crear su propia biblioteca que pueda leer y escribir textos cifrados que sean compatibles con ella AWS Encryption SDK, tendrá que entender cómo AWS Encryption SDK implementa los conjuntos de algoritmos compatibles para cifrar los datos sin procesar.

AWS Encryption SDK Es compatible con los siguientes conjuntos de algoritmos. Todos los conjuntos de algoritmos AES-GCM tienen un vector de inicialización de 12 bytes y una etiqueta de autenticación AES-GCM de 16 bytes. El conjunto de algoritmos predeterminado varía según la AWS Encryption SDK versión y la política de compromiso clave seleccionada. Para obtener más información, consulte Política de compromiso y conjunto de algoritmos.

AWS Encryption SDK Conjuntos de algoritmos
Algorithm ID Versión de formato de mensaje Algoritmo de cifrado Longitud de la clave de datos (bits) Algoritmo de derivación de clave Algoritmo de firma Algoritmo de compromiso clave Longitud de los datos del conjunto de algoritmos (bytes)
05 78 0x02 AES-GCM 256 HKDF con SHA-512 ECDSA con P-384 y SHA-384 HKDF con SHA-512 32 (compromiso clave)
04 78 0x02 AES-GCM 256 HKDF con SHA-512 Ninguna HKDF con SHA-512 32 (compromiso clave)
03 78 0x01 AES-GCM 256 HKDF con SHA-384 ECDSA con P-384 y SHA-384 Ninguna N/A
03 46 0x01 AES-GCM 192 HKDF con SHA-384 ECDSA con P-384 y SHA-384 Ninguna N/A
02 14 0x01 AES-GCM 128 HKDF con SHA-256 ECDSA con P-256 y SHA-256 Ninguna N/A
01 78 0x01 AES-GCM 256 HKDF con SHA-256 Ninguna Ninguna N/A
01 46 0x01 AES-GCM 192 HKDF con SHA-256 Ninguna Ninguna N/A
01 14 0x01 AES-GCM 128 HKDF con SHA-256 Ninguna Ninguna N/A
00 78 0x01 AES-GCM 256 Ninguna Ninguna Ninguna N/A
00 46 0x01 AES-GCM 192 Ninguna Ninguna Ninguna N/A
00 14 0x01 AES-GCM 128 Ninguna Ninguna Ninguna N/A
Algorithm ID

Un valor hexadecimal de 2 bytes que identifica de forma exclusiva una implementación del algoritmo. Este valor se almacena en el encabezado del mensaje del texto cifrado.

Versión de formato de mensaje

La versión del formato de mensaje. Los conjuntos de algoritmos con compromiso clave utilizan el formato de mensaje de la versión 2 (0x02). Los conjuntos de algoritmos sin compromiso clave utilizan el formato de mensaje de la versión 1 (0x01).

Longitud de los datos del conjunto de algoritmos

La longitud en bytes de los datos específicos del conjunto de algoritmos. Este campo solo se admite en la versión 2 del formato de mensaje (0x02). En la versión 2 del formato de mensaje (0x02), estos datos aparecen en el campo Algorithm suite data del encabezado del mensaje. Los conjuntos de algoritmos que admiten el compromiso clave utilizan 32 bytes para la cadena de compromiso clave. Para obtener más información, consulte Algoritmo de compromiso clave en esta lista.

Longitud de la clave de datos

La longitud de la clave de datos en bits. El AWS Encryption SDK admite claves de 256, 192 y 128 bits. La clave de datos se genera mediante un conjunto de claves o una clave maestra.

En algunas implementaciones, esta clave de datos se utiliza como entrada para una función de derivación de extract-and-expand claves (HKDF) basada en HMAC. El resultado de la HKDF se utiliza como clave de cifrado de datos en el algoritmo de cifrado. Para obtener más información, consulte Algoritmo de derivación de clave en esta lista.

Algoritmo de cifrado

El nombre y el modo del algoritmo de cifrado que se utilizó. El conjunto de algoritmos en el AWS Encryption SDK usa el algoritmo de cifrado Advanced Encryption Standard (AES) en Galois/Counter Mode (GCM).

Algoritmo de compromiso clave

El algoritmo utilizado para calcular la cadena de compromiso clave. El resultado se almacena en el campo Algorithm suite data del encabezado del mensaje y se utiliza para validar la clave de datos del compromiso clave.

Para obtener una explicación técnica sobre cómo añadir un compromiso clave a un conjunto de algoritmos, consulte Key Committing AEADs en Cryptology ePrint Archive.

Algoritmo de derivación de clave

La función de derivación de extract-and-expand claves basada en HMAC (HKDF) se utiliza para obtener la clave de cifrado de datos. AWS Encryption SDK Utiliza la HKDF definida en el RFC 5869.

Conjuntos de algoritmos sin compromiso clave (ID de algoritmo 01xx03xx)

  • La función hash que se utiliza es SHA-384 o SHA-256, según el conjunto de algoritmos.

  • Para el paso de extracción:

    • No se utiliza sal. Según el RFC, la sal se establece en una cadena de ceros. La longitud de la cadena es igual a la longitud de la salida de la función hash, es decir, de 48 bytes para SHA-384 y de 32 bytes para SHA-256.

    • El material de entrada para las claves es la clave de datos del conjunto de claves o proveedor de claves maestras.

  • Para el paso de expansión:

    • La clave pseudoaleatoria de entrada es el resultado del paso de extracción.

    • La información de entrada es una concatenación del ID de algoritmo seguido del ID de mensaje (en ese orden).

    • La longitud del material de salida para las claves es la Longitud de la clave de datos. Este resultado se utiliza como clave de cifrado de datos en el algoritmo de cifrado.

Conjuntos de algoritmos con compromiso clave (ID de algoritmo 04xx05xx)

  • La función hash que se utiliza es SHA-512.

  • Para el paso de extracción:

    • La sal es un valor aleatorio criptográfico de 256 bits. En la versión 2 del formato de mensaje (0x02), este valor se almacena en el campo MessageID.

    • El material inicial para las claves es la clave de datos del conjunto de claves o proveedor de claves maestras.

  • Para el paso de expansión:

    • La clave pseudoaleatoria de entrada es el resultado del paso de extracción.

    • La etiqueta de clave son los bytes codificados en UTF-8 de la cadena DERIVEKEY en el orden de bytes big endian.

    • La información de entrada es una concatenación del ID de algoritmo seguido de la etiqueta de clave (en ese orden).

    • La longitud del material de salida para las claves es la Longitud de la clave de datos. Este resultado se utiliza como clave de cifrado de datos en el algoritmo de cifrado.

Versión de formato de mensaje

La versión del formato de mensaje utilizada con el conjunto de algoritmos. Para obtener más detalles, consulte Referencia de formato de mensajes.

Algoritmo de firma

El algoritmo de firma que se utiliza para generar una firma digital sobre el encabezado y el cuerpo del texto cifrado. AWS Encryption SDK Utiliza el algoritmo de firma digital de curva elíptica (ECDSA) con las siguientes especificaciones:

  • La curva elíptica utilizada es la curva P-384 o P-256, según lo especificado en el ID de algoritmo. Estas curvas se definen en Digital Signature Standard (DSS) (FIPS PUB 186-4).

  • La función hash que se utiliza es SHA-384 (con la curva P-384) o SHA-256 (con la curva P-256).