Referencia - AWS SDK de cifrado de bases de datos

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.

Referencia

Nuestra biblioteca de cifrado del cliente pasó a llamarse SDK de cifrado de bases de datos de AWS. En esta guía para desarrolladores, se sigue proporcionando información sobre el cliente de cifrado de DynamoDB.

En los temas siguientes, se proporcionan detalles técnicos del SDK de cifrado de bases de datos de AWS.

Formato de descripción del material

La descripción del material sirve como encabezado de un registro cifrado. Al cifrar y firmar campos con el SDK de cifrado de bases de datos de AWS, el encriptador registra la descripción del material a medida que reúne los materiales criptográficos y almacena la descripción del material en un nuevo campo (aws_dbe_head) que el encriptador agrega al registro. La descripción del material es una estructura de datos con formato portátil que contiene la clave de datos cifrados e información sobre cómo se cifró y firmó el registro. En la siguiente tabla, se describen los valores que forman la descripción del material. Los bytes se anexan en el orden mostrado

Versión

La versión de este aws_dbe_head formato de campo.

Firmas habilitadas

Codifica si las firmas están habilitadas para este registro.

Valor de byte Significado
0x01 Firmas habilitadas (predeterminado)
0x00 Firmas deshabilitadas
ID de registro

Valor de 256-bits generado de manera aleatoria que identifica el registro. El ID del registro:

  • Identifica de forma única el registro cifrado.

  • Vincula la descripción del material al registro cifrado.

Cifra la leyenda

Una descripción serializada de los campos autenticados que se cifraron. La leyenda de cifrado se utiliza para determinar qué campos debe intentar descifrar el método de descifrado.

Valor del byte Significado
0x65 ENCRYPT_AND_SIGN
0x73 SIGN_ONLY

La leyenda de cifrado se serializa de la siguiente manera:

  1. Lexicográficamente mediante la secuencia de bytes que representa su ruta canónica.

  2. Para cada campo, en orden, agregue uno de los valores de bytes especificados anteriormente para indicar si ese campo debe cifrarse.

Longitud del contexto de cifrado

La longitud del contenido cifrado. Se trata de un valor de 2 bytes interpretado como un entero sin signo de 16 bits. La longitud máxima es de 65.535 bytes.

Contexto de cifrado

Un conjunto de pares de nombre-valor que contienen datos autenticados adicionales no secretos y arbitrarios.

Cuando las firmas digitales están habilitadas, el contexto de cifrado contiene el par clave-valor {"aws-crypto-footer-ecdsa-key": Qtxt}. Qtxtrepresenta el punto de la curva elíptica Q comprimido según la versión 2.0 de la SEC 1 y, a continuación, codificado en base64.

Encrypted Data Key Count

El número de claves de datos cifradas. Se trata de un valor de 1-byte interpretado como un entero sin signo de 8-bits que especifica el número de claves de datos cifradas. El número máximo de claves de datos cifrados en cada registro es 255.

Claves de datos cifrados

Una secuencia de claves de datos cifradas. La longitud de la secuencia se determina según el número de claves de datos cifradas y la longitud de cada una de ellas. La secuencia contiene al menos una clave de datos cifrada.

En la siguiente tabla se describen los campos que componen cada clave de datos cifrada. Los bytes se anexan en el orden mostrado

Encrypted Data Key Structure
Campo Longitud en bytes
Key Provider ID Length 2
Key Provider ID Variable. Equivalente al valor especificado en los últimos 2 bytes (Key Provider ID Length).
Key Provider Information Length 2
Key Provider Information Variable. Equivalente al valor especificado en los últimos 2 bytes (Key Provider Information Length).
Encrypted Data Key Length 2
Encrypted Data Key Variable. Equivalente al valor especificado en los últimos 2 bytes (Encrypted Data Key Length).
Key Provider ID Length

La longitud del identificador del proveedor de claves. Se trata de un valor de 2 bytes interpretado como un entero sin signo de 16 bits que especifica el número de bytes que contienen el ID del proveedor de claves.

Key Provider ID

El identificador del proveedor de claves. Se utiliza para indicar el proveedor de la clave de datos cifrada y está previsto que sea extensible.

Key Provider Information Length

La longitud de la información del proveedor de claves. Se trata de un valor de 2 bytes interpretado como un entero sin signo de 16 bits que especifica el número de bytes que contienen la información del proveedor de claves.

Key Provider Information

La información del proveedor de claves. Viene determinada por el proveedor de claves.

Cuando está utilizando un AWS KMSllavero, este valor contiene el Nombre de recurso de Amazon (ARN) de la AWS KMS key.

Encrypted Data Key Length

La longitud de la clave de datos cifrada. Se trata de un valor de 2 bytes interpretado como un entero sin signo de 16 bits que especifica el número de bytes que contienen la clave de datos cifrada.

Encrypted Data Key

La clave de datos cifrada. Se trata de la clave de datos cifrada por el proveedor de claves.

Compromiso de registro

Un hash distinto del código de autenticación de mensajes basado en hash (HMAC) de 256-bits que se calcula sobre todos los bytes de descripción del material anteriores mediante la clave de compromiso.

AWS KMS Detalles técnicos del llavero jerárquico

El AWS KMS llavero jerárquico utiliza una clave de datos única para cifrar cada campo y cifra cada clave de datos con una clave de empaquetado única derivada de una clave de rama activa. Utiliza una derivación de claves en modo contador con una función pseudoaleatoria con el HMAC SHA-256 para obtener la clave de empaquetado de 32 bytes con las siguientes entradas.

  • Una sal de asignación al azar de 16 bytes

  • La clave de rama activa

  • El valor codificado en UTF-8 para el identificador del proveedor de claves «aws-kms-hierarchy»

El llavero jerárquico utiliza la clave de empaquetado derivada para cifrar una copia de la clave de datos de texto no cifrado mediante el AES-GCM-256 con una etiqueta de autenticación de 16 bytes y las siguientes entradas.

  • La clave de empaquetado derivada se utiliza como clave de cifrado AES-GCM

  • La clave de datos se utiliza como mensaje AES-GCM

  • Se utiliza un vector de inicialización aleatoria (IV) de 12 bytes como AES-GCM IV

  • Datos autenticados adicionales (AAD) que contienen los siguientes valores serializados.

    Valor Longitud en bytes Interpretado como
    «aws-kms-hierarchy» 17 Codificado con UTF-8
    El identificador de la clave de la rama Variable Codificado con UTF-8
    La versión de clave de la rama 16 Codificado con UTF-8
    Contexto de cifrado Variable Pares de valores de clave con codificación UTF-8