

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.

# ¿Qué es el SDK AWS de cifrado de bases de datos?
<a name="what-is-database-encryption-sdk"></a>


****  

|  | 
| --- |
| Nuestra biblioteca de cifrado del lado del cliente pasó a llamarse SDK de cifrado de bases de AWS datos. En esta guía para desarrolladores, se sigue proporcionando información sobre el [cliente de cifrado de DynamoDB](legacy-dynamodb-encryption-client.md). | 

El SDK AWS de cifrado de bases de datos es un conjunto de bibliotecas de software que le permiten incluir el cifrado del lado del cliente en el diseño de su base de datos. El SDK de cifrado AWS de bases de datos proporciona soluciones de cifrado a nivel de registro. Usted especifica qué campos se cifran y qué campos se incluyen en las firmas que garantizan la autenticidad de sus datos. El cifrado de sus datos en tránsito y en reposo confidenciales ayuda a garantizar que los datos de texto no cifrado no estén disponibles para ningún tercero, incluido AWS. El SDK de cifrado de bases de datos de AWS se suministra gratuitamente con la licencia Apache 2.0.

Esta guía para desarrolladores proporciona una descripción general conceptual del SDK de cifrado de AWS bases de datos, que incluye una [introducción a su arquitectura](concepts.md), detalles sobre [cómo protege los datos](how-it-works.md), en qué se diferencia del [cifrado del lado del servidor](client-server-side.md) y orientación sobre la [selección de los componentes fundamentales de la aplicación para ayudarle](configure.md) a empezar.

El SDK AWS de cifrado de bases de datos es compatible con Amazon DynamoDB *con* cifrado a nivel de atributos.

El SDK AWS de cifrado de bases de datos ofrece las siguientes ventajas:

**Diseñado especialmente para aplicaciones de bases de datos**  
No es necesario ser un experto en criptografía para utilizar el SDK de cifrado de AWS bases de datos. Las implementaciones incluyen métodos de ayudante que se diseñaron para funcionar con sus aplicaciones existentes.   
Después de crear y configurar los componentes requeridos, el cliente de cifrado descifra y firma los registros de forma transparente cuando los agrega a una base de datos y los verifica y los descifra cuando los recupera.

**Incluye cifrado y firma seguros**  
El SDK de cifrado de AWS bases de datos incluye implementaciones seguras que cifran los valores de los campos de cada registro mediante una clave de cifrado de datos única y, a continuación, firman el registro para protegerlo contra cambios no autorizados, como añadir o eliminar campos o intercambiar valores cifrados.

**Utiliza materiales criptográficos desde cualquier origen**  
El SDK AWS de cifrado de bases de datos utiliza [conjuntos de claves](concepts.md#keyring-concept) para generar, cifrar y descifrar la clave de cifrado de datos única que protege su registro. Los conjuntos de claves determinan las [claves de encapsulación](concepts.md#wrapping-key) que cifran esa clave de datos.   
Puede utilizar claves de encapsulación de cualquier fuente, incluidos los servicios de criptografía, como [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS) o [AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/). El SDK AWS de cifrado de bases de datos no requiere ningún servicio Cuenta de AWS ni ningún otro. AWS 

**Compatibilidad para el almacenamiento en caché de materiales criptográficos**  
El [anillo de claves AWS KMS jerárquico](use-hierarchical-keyring.md) es una solución de almacenamiento en caché de materiales criptográficos que reduce el número de AWS KMS llamadas mediante el uso de *claves de rama AWS KMS * protegidas que se conservan en una tabla de Amazon DynamoDB y, a continuación, el almacenamiento en caché local de los materiales de clave de rama utilizados en las operaciones de cifrado y descifrado. Le permite proteger sus materiales criptográficos con una clave KMS de cifrado simétrico sin tener que llamar cada vez que cifra o descifra un registro. AWS KMS El anillo de claves AWS KMS jerárquico es una buena opción para las aplicaciones que necesitan minimizar las llamadas. AWS KMS

**Cifrado para búsquedas**  
Puede diseñar bases de datos que puedan buscar registros cifrados sin necesidad de descifrar toda la base de datos. Según el modelo de amenazas y los requisitos de consulta, puede utilizar el [cifrado con capacidad de búsqueda](searchable-encryption.md) para realizar búsquedas de coincidencias exactas o consultas complejas más personalizadas en la base de datos cifrada.

**Compatibilidad para esquemas de bases de datos de multitenencia**  
El SDK AWS de cifrado de bases de datos le permite proteger los datos almacenados en bases de datos con un esquema compartido al aislar a cada usuario con materiales de cifrado distintos. Si tiene varios usuarios que realizan operaciones de cifrado en su base de datos, utilice uno de los AWS KMS anillos de claves para proporcionar a cada usuario una clave distinta para utilizarla en sus operaciones criptográficas. Para obtener más información, consulte [Trabajar con bases de datos de varios inquilinos](configure.md#config-multitenant-databases).

**Compatibilidad para actualizaciones de esquemas fluidas**  
Al configurar el SDK de cifrado de AWS bases de datos, proporciona [acciones criptográficas](concepts.md#crypt-actions) que indican al cliente qué campos debe cifrar y firmar, qué campos debe firmar (pero no cifrar) y cuáles debe ignorar. Una vez que haya utilizado el SDK de cifrado de bases de datos de AWS para proteger sus registros, podrá seguir [realizando cambios en el modelo de datos](ddb-update-data-model.md). Puede actualizar sus acciones criptográficas, como agregar o eliminar campos cifrados, en una sola implementación.

## Desarrollado en repositorios de código abierto
<a name="dbesdk-repos"></a>

El SDK AWS de cifrado de bases de datos está desarrollado en repositorios de código abierto. GitHub Puede usar estos repositorios para ver el código, leer y enviar los problemas y encontrar información específica de la implementación. 

**El SDK AWS de cifrado de bases de datos para DynamoDB**
+ El repositorio [aws-database-encryption-sdk-dynamodb](https://github.com/aws/aws-database-encryption-sdk-dynamodb/) GitHub es compatible con las versiones más recientes del SDK de cifrado de AWS bases de datos para DynamoDB en Java, .NET y Rust.

  El SDK AWS de cifrado de bases de datos para DynamoDB es un producto [de](https://github.com/dafny-lang/dafny/blob/master/README.md) Dafny, un lenguaje compatible con la verificación en el que se escriben las especificaciones, el código para implementarlas y las pruebas para probarlas. El resultado es una biblioteca que implementa las características del SDK de cifrado de bases de datos de AWS para DynamoDB en un marco que garantiza la corrección funcional.

## Compatibilidad y mantenimiento
<a name="support"></a>

El SDK AWS de cifrado de bases de datos utiliza la misma [política de mantenimiento](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) que el AWS SDK y las herramientas, incluidas las fases de control de versiones y ciclo de vida. Como práctica recomendada, le recomendamos que utilice la última versión disponible del SDK de cifrado de bases de datos de AWS para la implementación de su base de datos y que la actualice a medida que se publiquen nuevas versiones.

Para obtener más información, consulte la [política de mantenimiento AWS SDKs y las herramientas](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) en la Guía de referencia de herramientas AWS SDKs y herramientas.

## Envío de comentarios
<a name="feedback"></a>

Agradecemos sus comentarios. Si tiene una pregunta o comentario, o un problema del que informar, utilice los siguientes recursos.

Si descubre una posible vulnerabilidad de seguridad en el SDK de cifrado de AWS bases de datos, [notifíquelo al personal AWS de seguridad](https://aws.amazon.com/security/vulnerability-reporting/). No cree una GitHub emisión pública.

Para enviar comentarios sobre esta documentación, utilice el enlace de comentarios de cualquier página.

# AWS Conceptos del SDK de encriptación de bases
<a name="concepts"></a>


****  

|  | 
| --- |
| Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de AWS bases de datos. En esta guía para desarrolladores, se sigue proporcionando información sobre el [cliente de cifrado de DynamoDB](legacy-dynamodb-encryption-client.md). | 

En este tema se explican los conceptos y la terminología que se utilizan en el SDK de cifrado de AWS bases de datos. 

Para obtener información sobre cómo interactúan los componentes del SDK de cifrado de AWS bases de datos, consulte[Cómo funciona el SDK AWS de cifrado de bases de datos](how-it-works.md).

Para obtener más información sobre el SDK AWS de cifrado de bases de datos, consulte los siguientes temas.
+ Descubra cómo el SDK AWS de cifrado de bases de datos utiliza el [cifrado de sobres](#envelope-encryption) para proteger sus datos.
+ Obtenga información sobre los elementos del cifrado de sobre: las [claves de datos](#data-key) que protegen sus registros y las [claves de encapsulación](#wrapping-key) que protegen sus claves de datos. 
+ Obtenga información sobre los [conjuntos de claves](#keyring-concept) que determinan qué claves de encapsulación debe utilizar.
+ Obtenga información sobre el [contexto de cifrado](#encryption-context) que agrega integridad a su proceso de cifrado.
+ Obtenga información sobre la [descripción del material](#material-description) que los métodos de cifrado agregan a su registro.
+ Obtenga información sobre las [acciones criptográficas](#crypt-actions) que indican al SDK de cifrado de bases de datos de AWS qué campos debe cifrar y firmar.

**Topics**
+ [Cifrado de sobre](#envelope-encryption)
+ [Clave de datos](#data-key)
+ [Clave de encapsulación](#wrapping-key)
+ [Conjuntos de claves](#keyring-concept)
+ [Funciones criptográficas](#crypt-actions)
+ [Descripción de material](#material-description)
+ [Contexto de cifrado](#encryption-context)
+ [Administrador de materiales criptográficos](#crypt-materials-manager)
+ [Cifrado simétrico y asimétrico](#symmetric-key-encryption)
+ [Compromiso clave](#key-commitment)
+ [Firmas digitales](#digital-sigs)

## Cifrado de sobre
<a name="envelope-encryption"></a>

La seguridad de los datos cifrados depende en parte de la protección de la clave de datos que permite descifrarlos. Una práctica recomendada aceptada para proteger la clave de datos consiste en cifrarla. Para ello, necesita otra clave de cifrado, conocida como *clave de cifrado clave* o [clave de encapsulamiento](#wrapping-key). Esta práctica de utilizar una clave de encapsulamiento para cifrar las claves de datos se denomina *cifrado de sobre*.

**Protección de las claves de datos**  
El SDK AWS de cifrado de bases de datos cifra cada campo con una clave de datos única. A continuación, cifra cada clave de datos con la clave de encapsulación que especifique. Almacena las claves de datos cifradas en la [descripción del material](#material-description).  
Para especificar la clave de encapsulación, utilice un [conjunto de claves](#keyring-concept).  

![\[Cifrado de sobres con el SDK de cifrado AWS de bases de datos\]](http://docs.aws.amazon.com/es_es/database-encryption-sdk/latest/devguide/images/dbesdk-envelope.png)


**Cifrado de los mismos datos con varias claves múltiples**  
Puede cifrar la clave de datos con varias claves de encapsulación. Es posible que desee proporcionar diferentes claves de encapsulación para distintos usuarios, o claves de encapsulación de diferentes tipos o en diferentes ubicaciones. Cada una de las claves de encapsulamiento cifra la misma clave de datos. El SDK AWS de cifrado de bases de datos almacena todas las claves de datos cifrados junto con los campos cifrados de la [descripción del material](#material-description).  
Para descifrar los datos, debe proporcionar al menos una clave de encapsulación que pueda descifrar las claves de datos cifrados.

**Combinación de los puntos fuertes de varios algoritmos**  
[Para cifrar los datos, de forma predeterminada, el SDK de cifrado de AWS bases de datos utiliza un [conjunto de algoritmos](supported-algorithms.md) con cifrado simétrico AES-GCM, una función de derivación de claves basada en HMAC (HKDF) y firma ECDSA.](#digital-sigs) Para cifrar la clave de datos, puede especificar un [algoritmo de cifrado simétrico o asimétrico](#symmetric-key-encryption) adecuado a su clave de encapsulamiento.  
En general, los algoritmos de cifrado de clave simétrica son más rápidos y producen textos cifrados más pequeños que el *cifrado de clave pública* o asimétrico. Sin embargo, los algoritmos de clave pública proporcionan una separación inherente de las funciones. Para combinar las fortalezas de cada uno, puede cifrar la clave de datos con el cifrado de clave pública.  
Recomendamos utilizar AWS KMS uno de los anillos de claves siempre que sea posible. Al usar el [AWS KMS llavero](use-kms-keyring.md), puede optar por combinar los puntos fuertes de varios algoritmos especificando un RSA asimétrico AWS KMS key como clave de empaquetado. También puede utilizar una clave de KMS de cifrado simétrico.

## Clave de datos
<a name="data-key"></a>

[Una *clave de datos* es una clave de cifrado que el SDK de cifrado de AWS bases de datos utiliza para cifrar los campos de un registro que están marcados `ENCRYPT_AND_SIGN` en las acciones criptográficas.](#crypt-actions) Cada clave de datos es una matriz de bytes que es conforme a los requisitos para claves criptográficas. El SDK AWS de cifrado de bases de datos utiliza una clave de datos única para cifrar cada atributo.

No es necesario especificar, generar, implementar, extender, proteger ni usar claves de datos. El SDK de cifrado de bases de datos de AWS hace ese trabajo por usted cuando llama a las operaciones de cifrado y descifrado. 

[Para proteger sus claves de datos, el SDK de cifrado AWS de bases de datos las cifra en una o más claves de *cifrado clave conocidas como claves de* empaquetado.](#wrapping-key) Una vez que el SDK de cifrado de AWS bases de datos utiliza las claves de datos de texto sin formato para cifrar los datos, las elimina de la memoria lo antes posible. Almacena las claves de datos cifradas en la [descripción del material](#material-description). Para obtener más información, consulte [Cómo funciona el SDK AWS de cifrado de bases de datos](how-it-works.md).

**sugerencia**  
En el SDK de cifrado AWS de bases de datos, distinguimos las claves de *datos de las claves* de *cifrado de datos*. Como práctica recomendada, todos los [conjuntos de algoritmos](supported-algorithms.md) compatibles utilizan una [función de derivación de clave](https://en.wikipedia.org/wiki/Key_derivation_function). La función de derivación de clave toma una clave de datos como entrada y devuelve las claves de cifrado de datos que son las que se utilizan realmente para cifrar los registros. Por este motivo, a menudo decimos que los datos se cifran "bajo" una clave de datos, en lugar de "por" una clave de datos.

Cada clave de datos cifrados incluye metadatos, incluido el identificador de la clave de encapsulamiento que la cifró. Estos metadatos permiten que el SDK de cifrado de AWS bases de datos identifique las claves de empaquetado válidas al descifrar.

## Clave de encapsulación
<a name="wrapping-key"></a>

Una *clave de encapsulación* es una clave de cifrado por clave que el SDK de cifrado de bases de datos de AWS utiliza para cifrar la [clave de datos](#data-key) que cifra los registros. Cada clave de datos de texto no cifrado se puede cifrar en una o varias claves maestras. Usted determina qué claves de encapsulación se utilizan para proteger sus datos al configurar un [conjunto de claves](#keyring-concept).

![\[Puede cifrar la clave de datos con varias claves de encapsulación.\]](http://docs.aws.amazon.com/es_es/database-encryption-sdk/latest/devguide/images/dbesdk-wrapping-key.png)


El SDK de cifrado de AWS bases de datos admite varias claves de empaquetado que se utilizan habitualmente, como [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)(AWS KMS) las claves KMS de cifrado simétrico (incluidas las claves [multirregionales) y AWS KMS las claves](use-kms-keyring.md#config-mrks) [KMS RSA asimétricas, las claves](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-rsa) AES-GCM (modo de Standard/Galois contador de cifrado avanzado) sin procesar y las claves RSA sin procesar. Recomendamos utilizar claves KMS siempre que sea posible. Para decidir qué clave de encapsulación debe usar, consulte [Seleccionar claves de encapsulación](configure.md#config-keys).

Cuando se utiliza el cifrado de sobre, es necesario proteger las claves de encapsulación contra el acceso no autorizado. Esto lo puede hacer de cualquiera de las siguientes maneras:
+ Utilice un servicio diseñado para este fin, como [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/).
+ Utilice un [módulo de seguridad de hardware (HSM)](https://en.wikipedia.org/wiki/Hardware_security_module) como los que ofrece [AWS CloudHSM](https://aws.amazon.com/cloudhsm/).
+ Utilice otras herramientas y servicios de administración de claves.

Si no dispone de un sistema de administración de claves, le recomendamos que lo haga. AWS KMS El SDK AWS de cifrado de bases de datos se integra AWS KMS para ayudarle a proteger y utilizar sus claves de empaquetado.

## Conjuntos de claves
<a name="keyring-concept"></a>

Para especificar las claves de encapsulación que utiliza para el cifrado y el descifrado, utilice un conjunto de claves Puede usar los conjuntos de claves que proporciona el SDK AWS de cifrado de bases de datos o diseñar sus propias implementaciones.

Un *conjunto de claves* genera, cifra y descifra claves de datos. También genera las claves MAC que se utilizan para calcular los códigos de autenticación de mensajes basados en hash (HMACs) de la firma. Al definir un conjunto de claves, puede especificar las [claves de encapsulamiento](#wrapping-key) que cifran sus claves de datos. La mayoría de los conjuntos de claves especifican al menos una clave de encapsulamiento o un servicio que proporciona y protege las claves de encapsulamiento. Al cifrar, el SDK de cifrado AWS de bases de datos utiliza todas las claves de empaquetado especificadas en el conjunto de claves para cifrar la clave de datos. [Si necesita ayuda para elegir y usar los conjuntos de claves que define el SDK de cifrado de AWS bases de datos, consulte Uso de conjuntos de claves.](keyrings.md)

## Funciones criptográficas
<a name="crypt-actions"></a>

*Las acciones criptográficas* indican al encriptador qué acciones debe realizar en cada campo de un registro. 

Los valores de las acciones criptográficas pueden ser uno de los siguientes:
+ **Encrypt and sign**: cifre el campo. Incluya el campo cifrado en la firma.
+ **Sign only**: incluya el campo en la firma.
+ **Firmar e incluir en el contexto de cifrado**: incluya el campo en el contexto de firma y [cifrado](#encryption-context).

  De forma predeterminada, la partición y las claves de clasificación son el único atributo incluido en el contexto de cifrado. Podría considerar la posibilidad de definir campos adicionales para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` que el proveedor del identificador de clave de rama de su conjunto de [claves AWS KMS jerárquicas pueda identificar](use-hierarchical-keyring.md) qué clave de rama es necesaria para el descifrado a partir del contexto de cifrado. Para obtener más información, consulte el proveedor de ID de [clave de sucursal](use-hierarchical-keyring.md#branch-key-id-supplier).
**nota**  
Para utilizar la acción `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` criptográfica, debe utilizar la versión 3.3 o posterior del SDK de cifrado de AWS bases de datos. Implemente la nueva versión en todos los lectores antes de [actualizar su modelo de datos](ddb-update-data-model.md) para `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` incluirla.
+ **Do nothing**: no cifre ni incluya el campo en la firma.

Para cualquier campo que pueda almacenar datos confidenciales, utilice **Encrypt and sign**. Para los valores de clave principal (por ejemplo, una clave de partición y una clave de clasificación en una tabla de DynamoDB), **utilice Sign only o Sign** **and include** in encryption context. Si especifica algún **signo e incluye atributos en el contexto de cifrado**, los atributos de partición y ordenación también deben ser **Firmar e incluir en el contexto de cifrado**. No es necesario especificar acciones criptográficas para la [descripción del material](#material-description). El SDK AWS de cifrado de bases de datos firma automáticamente el campo en el que está almacenada la descripción del material.

Elija sus acciones criptográficas con cuidado. En caso de duda, use **Encrypt and sign**. Una vez que haya utilizado el SDK de cifrado de AWS bases de datos para proteger sus registros `ENCRYPT_AND_SIGN``SIGN_ONLY`, no podrá cambiar un `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` campo o un campo existente ni cambiar la acción criptográfica asignada a un `DO_NOTHING` campo existente. `DO_NOTHING` Sin embargo, aún puede [realizar otros cambios en su modelo de datos](ddb-update-data-model.md). Por ejemplo, puede agregar o eliminar campos cifrados en una sola implementación.

## Descripción de material
<a name="material-description"></a>

La descripción del material sirve como encabezado de un registro cifrado. Al cifrar y firmar campos con el SDK de cifrado de AWS bases de datos, el cifrador registra la descripción del material a medida que reúne los materiales criptográficos y almacena la descripción del material en un campo nuevo (`aws_dbe_head`) que el cifrador añade al registro.

La descripción del material es una [estructura de datos con formato](reference.md#material-description-format) portátil que contiene copias cifradas de las claves de datos y otra información, como los algoritmos de cifrado, el [contexto de cifrado](#encryption-context) y las instrucciones de cifrado y firma. El encriptador registra la descripción del material mientras reúne los materiales criptográficos para el cifrado y la firma. Posteriormente, cuando necesita reunir los materiales criptográficos para verificar y descifrar un campo, utiliza la descripción del material como guía.

Almacenar las claves de datos cifrados y los campos cifrados simplifica la operación de descifrado y evita tener que almacenar y administrar claves de datos cifradas de forma independiente de los datos que cifran.

Para obtener información técnica sobre la descripción del material, consulte[Formato de descripción del material](reference.md#material-description-format).

## Contexto de cifrado
<a name="encryption-context"></a>

Para mejorar la seguridad de sus operaciones criptográficas, el SDK de cifrado de AWS bases de datos incluye un contexto de cifrado en todas las solicitudes de cifrado y firma de un registro.

Un *contexto de cifrado* es un conjunto de pares de nombre-valor que contienen datos autenticados adicionales no secretos y arbitrarios. El SDK AWS de cifrado de bases de datos incluye el nombre lógico de la base de datos y los valores de la clave principal (por ejemplo, una clave de partición y una clave de clasificación en una tabla de DynamoDB) en el contexto de cifrado. Cuando se cifra y firma un campo, el contexto de cifrado se vincula criptográficamente a los datos cifrados, de tal forma que se requiere el mismo contexto de cifrado para descifrar los datos.

Si utiliza un conjunto de AWS KMS claves, el SDK de cifrado de AWS bases de datos también utiliza el contexto de cifrado para proporcionar datos autenticados (AAD) adicionales en las llamadas que realiza el conjunto de claves. AWS KMS

Cuando se utiliza el [conjunto de algoritmo predeterminado](supported-algorithms.md#recommended-algorithms), el [ administrador de materiales criptográficos](#crypt-materials-manager) (CMM) agrega un par nombre-valor al contexto de cifrado que consta de un nombre reservado, `aws-crypto-public-key`, y un valor que representa la clave de verificación pública. La clave de verificación pública se guarda en la [descripción del material](#material-description).

## Administrador de materiales criptográficos
<a name="crypt-materials-manager"></a>

El administrador de materiales criptográficos (CMM) reúne los materiales criptográficos que se utilizan para cifrar, descifrar y firmar los datos. Siempre que utilice el [conjunto de algoritmos predeterminado](supported-algorithms.md#recommended-algorithms), los *materiales criptográficos* incluyen claves de datos cifrados y de texto no cifrado, claves de firma simétricas y una clave de firma asimétrica. Nunca se interactúa directamente con el CMM. Los métodos de cifrado y descifrado se encargan de ello.

Como el CMM actúa como enlace entre el SDK de cifrado de AWS bases de datos y un conjunto de claves, es un punto ideal para la personalización y la ampliación, por ejemplo, como apoyo a la aplicación de políticas. Puede especificar un CMM de forma explícita, pero no es obligatorio. Al especificar un conjunto de claves, el SDK de cifrado de bases de datos de AWS crea automáticamente un CMM predeterminado para usted. El CMM predeterminado obtiene los materiales de cifrado o descifrado del conjunto de claves que especifique. Esto podría requerir una llamada a un servicio criptográfico como [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (AWS KMS).

## Cifrado simétrico y asimétrico
<a name="symmetric-key-encryption"></a>

El *cifrado simétrico* utiliza la misma clave para cifrar y descifrar datos. 

El *cifrado asimétrico* utiliza un par de claves de datos relacionados matemáticamente. Una clave del par cifra los datos; solo la otra clave del par puede descifrarlos.

El SDK de cifrado AWS de bases de datos utiliza el cifrado por [sobres.](#envelope-encryption) Cifra los datos con una clave de datos simétrica. Cifra la clave de datos simétrica con una o más claves de encapsulación simétricas o asimétricas. Agrega una [descripción del material](#material-description) al registro que incluye al menos una copia cifrada de la clave de datos.

**Cifrar los datos (cifrado simétrico)**  
Para cifrar los datos, el SDK de cifrado de AWS bases de datos utiliza una [clave de datos](#data-key) simétrica y un [conjunto de algoritmos que incluye un algoritmo](supported-algorithms.md) de cifrado simétrico. Para descifrar los datos, el SDK de cifrado de AWS bases de datos utiliza la misma clave de datos y el mismo conjunto de algoritmos.

**Cifrar la clave de datos (cifrado simétrico o asimétrico)**  
El [conjunto de claves](#keyring-concept) que se proporciona a una operación de cifrado y descifrado determina cómo se cifra y descifra la clave de datos simétrica. Puede elegir un conjunto de claves que utilice cifrado simétrico, como un anillo de AWS KMS claves con una clave KMS de cifrado simétrico, o uno que utilice cifrado asimétrico, como un AWS KMS anillo de claves con una clave KMS RSA asimétrica.

## Compromiso clave
<a name="key-commitment"></a>

El SDK AWS de cifrado de bases de datos admite el *compromiso de claves* (también conocido como *robustez*), una propiedad de seguridad que garantiza que cada texto cifrado solo se pueda descifrar en un único texto simple. Para ello, el compromiso clave garantiza que solo se utilice la clave de datos que cifró el registro para descifrarlo. El SDK de cifrado AWS de bases de datos incluye un compromiso clave para todas las operaciones de cifrado y descifrado.

La mayoría de los cifrados simétricos modernos (incluido el AES) cifran el texto sin formato con una única clave secreta, como la clave de [datos única](#data-key) que el SDK de cifrado de AWS bases de datos utiliza para cifrar cada campo de texto sin formato marcado en un registro. `ENCRYPT_AND_SIGN` Al descifrar este registro con la misma clave de datos, se obtiene un texto no cifrado idéntico al original. El descifrado con una clave diferente suele fallar. Aunque es difícil, técnicamente es posible descifrar un texto cifrado con dos claves diferentes. En raras ocasiones, es posible encontrar una clave que pueda descifrar parcialmente el texto cifrado y convertirlo en un texto no cifrado diferente, pero aún inteligible.

El SDK de cifrado AWS de bases de datos siempre cifra cada atributo con una clave de datos única. Puede cifrar esa clave de datos con varias claves de encapsulación, pero las claves de encapsulación siempre cifran la misma clave de datos. Sin embargo, un registro cifrado sofisticado y creado manualmente puede contener diferentes claves de datos, cada una cifrada con una clave de encapsulación diferente. Por ejemplo, si un usuario descifra el registro cifrado, devuelve 0x0 (falso), mientras que otro usuario que descifra el mismo registro cifrado obtiene 0x1 (verdadero).

Para evitar esta situación, el SDK de cifrado AWS de bases de datos incluye la asignación de claves al cifrar y descifrar. El método de cifrado vincula criptográficamente la clave de datos única que produjo el texto cifrado con el *compromiso clave*, un código de autenticación de mensajes basado en hash (HMAC) que se calcula sobre la descripción del material mediante una derivación de la clave de datos. A continuación, almacena el compromiso de clave en la [descripción del material](#material-description). Cuando descifra un registro con un compromiso de clave, el SDK de cifrado de AWS bases de datos comprueba que la clave de datos es la única clave de ese registro cifrado. Si se produce un error en la verificación de la clave de datos, se produce un error en la operación de descifrado.

## Firmas digitales
<a name="digital-sigs"></a>

El SDK AWS de cifrado de bases de datos cifra los datos mediante un algoritmo de cifrado autenticado, el AES-GCM, y el proceso de descifrado verifica la integridad y autenticidad de un mensaje cifrado sin utilizar una firma digital. Dado que el AES-GCM utiliza claves simétricas, cualquier persona que pueda descifrar la clave de datos utilizada para descifrar el texto cifrado también podría crear manualmente un nuevo texto cifrado, lo que podría suponer un problema de seguridad. Por ejemplo, si utilizas una AWS KMS key como clave de empaquetado, un usuario con `kms:Decrypt` permisos podría crear textos cifrados sin necesidad de llamar. `kms:Encrypt`

Para evitar este problema, el [conjunto de algoritmos predeterminado](supported-algorithms.md#recommended-algorithms) agrega una firma ECDSA (algoritmo de firma digital con curva elíptica) a los registros cifrados. El conjunto de algoritmos predeterminado cifra los campos del registro marcados `ENCRYPT_AND_SIGN` con un algoritmo de cifrado autenticado, el AES-GCM. A continuación, calcula los códigos de autenticación de mensajes basados en hash (HMACs) y las firmas ECDSA asimétricas en los campos del registro marcados con, y. `ENCRYPT_AND_SIGN` `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` El proceso de descifrado utiliza las firmas para comprobar que un usuario autorizado haya cifrado el registro.

Cuando se utiliza el conjunto de algoritmos predeterminado, el SDK AWS de cifrado de bases de datos genera una clave privada temporal y una clave pública para cada registro cifrado. El SDK AWS de cifrado de bases de datos almacena la clave pública en la [descripción del material](#material-description) y descarta la clave privada. Esto garantiza que nadie pueda crear otra firma que se verifique con la clave pública. El algoritmo vincula la clave pública a la clave de datos cifrados como datos autenticados adicionales en la descripción del material, lo que impide que los usuarios que solo pueden descifrar campos alteren la clave pública o afecten a la verificación de la firma.

El SDK AWS de cifrado de bases de datos siempre incluye la verificación HMAC. Las firmas digitales ECDSA están habilitadas de forma predeterminada, pero no son obligatorias. Si los usuarios que cifran los datos y los que los descifran tienen el mismo nivel de confianza, podría considerar la posibilidad de utilizar un conjunto de algoritmos que no incluya firmas digitales para mejorar su rendimiento. Para obtener más información sobre cómo seleccionar conjuntos de algoritmos alternativos, consulte [Elegir un conjunto de algoritmos](ddb-java-using.md#config-algorithm).

**nota**  
Si un conjunto de claves no delimita entre los cifradores y los descifradores, las firmas digitales no proporcionan ningún valor criptográfico.

[AWS KMS Los anillos de claves](use-kms-keyring.md), incluido el AWS KMS anillo de claves RSA asimétrico, pueden distinguir entre cifradores y descifradores en función de las políticas clave y de IAM. AWS KMS 

Debido a su naturaleza criptográfica, los siguientes conjuntos de claves no pueden distinguir entre cifradores y descifradores:
+ AWS KMS Anillo de claves jerárquico
+ AWS KMS Llavero ECDH
+ Conjunto de claves de AES sin formato
+ Conjunto de claves de RSA sin formato
+ Llavero ECDH sin procesar

# Cómo funciona el SDK AWS de cifrado de bases de datos
<a name="how-it-works"></a>


****  

|  | 
| --- |
| Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de bases de datos. AWS En esta guía para desarrolladores, se sigue proporcionando información sobre el [cliente de cifrado de DynamoDB](legacy-dynamodb-encryption-client.md). | 

El SDK AWS de cifrado de bases de datos proporciona bibliotecas de cifrado del lado del cliente diseñadas específicamente para proteger los datos que se almacenan en las bases de datos. Las bibliotecas incluyen implementaciones seguras que puede ampliar o utilizar sin hacer ningún cambio. Para obtener más información sobre la definición y el uso de componentes personalizados, consulte el GitHub repositorio de la implementación de la base de datos.

Los flujos de trabajo de esta sección explican cómo el SDK AWS de cifrado de bases de datos cifra, firma, descifra y verifica los datos de la base de datos. Estos flujos de trabajo describen el proceso básico mediante elementos abstractos y las características predeterminadas. Para obtener más información sobre cómo funciona el SDK AWS de cifrado de bases de datos con la implementación de la base de datos, consulte el tema *Qué se cifra* en la base de datos.

El SDK AWS de cifrado de bases de datos utiliza el [cifrado de sobres](concepts.md#envelope-encryption) para proteger sus datos. Cada registro se cifra con una [clave de datos](concepts.md#data-key) única. La clave de datos se utiliza para obtener una *clave de cifrado de datos* única para cada campo marcado `ENCRYPT_AND_SIGN` en sus acciones criptográficas. A continuación, las claves de encapsulación que especifique cifran una copia de la clave de datos. Para descifrar el registro cifrado, el SDK de cifrado de AWS bases de datos utiliza las claves de empaquetado que especifique para descifrar al menos una clave de datos cifrada. A continuación, puede descifrar el texto cifrado y devolver una entrada de texto no cifrado.

Para obtener más información sobre los términos utilizados en el SDK de cifrado de AWS bases de datos, consulte. [AWS Conceptos del SDK de encriptación de bases](concepts.md)

## Cifra y firma
<a name="encrypt-and-sign"></a>

En esencia, el SDK de cifrado de AWS bases de datos es un cifrador de registros que cifra, firma, verifica y descifra los registros de la base de datos. Recibe información acerca de los registros e instrucciones sobre qué elementos hay que cifrar y firmar. Obtiene los materiales de cifrado, y las instrucciones sobre su uso, desde un [administrador de materiales criptográficos](concepts.md#crypt-materials-manager) configurado a partir de la clave de encapsulación que especifique.

En el siguiente tutorial se describe cómo el SDK de cifrado de AWS bases de datos cifra y firma las entradas de datos.

1. El administrador de materiales criptográficos proporciona al SDK de cifrado de AWS bases de datos claves de cifrado de datos únicas: una [clave de datos](concepts.md#data-key) en texto plano, una copia de la clave de datos cifrada con la clave de [empaquetado especificada y una clave](concepts.md#wrapping-key) MAC.
**nota**  
Puede cifrar la clave de datos con varias claves de encapsulación. Cada una de las claves de encapsulación cifra una copia independiente de la clave de datos. El SDK AWS de cifrado de bases de datos almacena todas las claves de datos cifrados en la descripción del [material](concepts.md#material-description). El SDK de cifrado de bases de datos de AWS agrega un nuevo campo (`aws_dbe_head`) al registro que almacena la descripción del material.  
Se obtiene una clave MAC para cada copia cifrada de la clave de datos. Las claves MAC no se almacenan en la descripción del material. En su lugar, el método de descifrado utiliza las claves de encapsulación para volver a derivar las claves MAC.

1. El método de cifrado cifra cada campo marcado como `ENCRYPT_AND_SIGN` en las [acciones criptográficas](concepts.md#crypt-actions) especificadas.

1. El método de cifrado deriva un `commitKey` de la clave de datos y lo utiliza para generar un [valor de compromiso de clave](concepts.md#key-commitment) y, a continuación, descarta la clave de datos.

1. El método de cifrado agrega una [descripción del material](concepts.md#material-description) al registro. La descripción del material contiene las claves de datos cifrados y la información adicional sobre el registro cifrado. Para obtener una lista completa de la información incluida en la descripción del material, consulte [Formato de la descripción del material](reference.md#material-description-format).

1. El método de cifrado utiliza las claves MAC devueltas en el **paso 1** para calcular los valores del código de autenticación de mensajes basado en hash (HMAC) mediante la canonicalización de la descripción del material, el [contexto de cifrado](concepts.md#encryption-context) y cada campo marcado o `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` las `ENCRYPT_AND_SIGN` acciones `SIGN_ONLY` criptográficas. Los valores del HMAC se almacenan en un campo nuevo (`aws_dbe_foot`) que el método de cifrado agrega al registro.

1. El método de cifrado calcula una [firma ECDSA](concepts.md#digital-sigs) mediante la canonicalización de la descripción del material, el contexto de cifrado y cada campo marcado `ENCRYPT_AND_SIGN` o, y almacena las firmas ECDSA en el campo. `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` `aws_dbe_foot`
**nota**  
Las firmas ECDSA están habilitadas de forma predeterminada, pero no son obligatorias.

1. El método de cifrado almacena el registro cifrado y firmado en la base de datos

## Descifrado y verificación
<a name="decrypt-and-verify"></a>

1. El administrador de materiales criptográficos (CMM) proporciona el método de descifrado con los materiales de descifrado almacenados en la descripción del material, incluida la [clave de datos de texto no cifrado ](concepts.md#data-key) y la clave MAC asociada.

   1. El CMM descifra la clave de datos cifrada mediante las [claves de encapsulación](concepts.md#wrapping-key) del conjunto de claves especificado y devuelve la clave de datos en texto no cifrado.

1. El método de descifrado compara y verifica el valor de compromiso clave en la descripción del material.

1. El método de descifrado verifica las firmas en el campo de la firma.

   [Identifica los campos que están marcados `ENCRYPT_AND_SIGN` o los que aparecen en la lista `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` de campos no autenticados permitidos que haya definido. `SIGN_ONLY`](ddb-java-using.md#allowed-unauth) El método de descifrado utiliza la clave MAC devuelta en el **paso 1** para volver a calcular y comparar los valores HMAC de los campos marcados, o. `ENCRYPT_AND_SIGN` `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` A continuación, verifica las [firmas del ECDSA](concepts.md#digital-sigs) mediante la clave pública almacenada en el [contexto de cifrado](concepts.md#encryption-context).

1. El método de descifrado usa la clave de datos en texto no cifrado para descifrar cada valor marcado `ENCRYPT_AND_SIGN`. A continuación, el SDK AWS de cifrado de bases de datos descarta la clave de datos de texto simple.

1. El método de descifrado devuelve el registro en texto no cifrado.

# Conjuntos de algoritmos compatibles en el SDK de cifrado AWS de bases de datos
<a name="supported-algorithms"></a>


****  

|  | 
| --- |
| Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de AWS bases de datos. En esta guía para desarrolladores, se sigue proporcionando información sobre el [cliente de cifrado de DynamoDB](legacy-dynamodb-encryption-client.md). | 

Un *conjunto de algoritmos* es un conjunto de algoritmos criptográficos y sus valores relacionados. Los sistemas criptográficos utilizan la implementación del algoritmo para generar el texto cifrado.

El SDK AWS de cifrado de bases de datos utiliza un conjunto de algoritmos para cifrar y firmar los campos de la base de datos. Todos los conjuntos de algoritmos compatibles utilizan el algoritmo estándar de cifrado avanzado (AES) con Galois/Counter modo (GCM), conocido como AES-GCM, para cifrar los datos sin procesar. El SDK de cifrado de AWS bases de datos admite claves de cifrado de 256 bits. La longitud de la etiqueta de autenticación es siempre de 16 bytes.


**AWS Paquetes de algoritmos del SDK de cifrado de bases de datos**  

| Algoritmo | Algoritmo de cifrado | Longitud de la clave de datos (en bits) | Algoritmo de derivación de clave | Algoritmo de firma simétrica | Algoritmo de firma asimétrica. | Compromiso clave | 
| --- | --- | --- | --- | --- | --- | --- | 
| Predeterminado | AES-GCM | 256 | HKDF con SHA-512 | HMAC-SHA-384 | ECDSA con P-384 y SHA-384 | HKDF con SHA-512 | 
| AES-GCM sin firmas digitales ECDSA | AES-GCM | 256 | HKDF con SHA-512 | HMAC-SHA-384 | Ninguno | HKDF con SHA-512 | 

**Algoritmo de cifrado**  
El nombre y el modo del algoritmo de cifrado que se utilizó. Los conjuntos de algoritmos del SDK de cifrado AWS de bases de datos utilizan el algoritmo estándar de cifrado avanzado (AES) con Galois/Counter modo (GCM).  


**Longitud de la clave de datos**  
La longitud de la [clave de datos](concepts.md#data-key) en bits. El SDK AWS de cifrado de bases de datos admite claves de datos de 256 bits. La 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.

**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. [El SDK de cifrado AWS de bases de datos utiliza el HKDF definido en el RFC 5869.](https://tools.ietf.org/html/rfc5869)   
+ La función hash utilizada es SHA-512
+ Para el paso de extracción:
  + No se utiliza sal. Según el RFC, la sal se establece en una cadena de ceros.
  + [El material de codificación de entrada es la clave de datos del conjunto de claves.](concepts.md#keyring-concept)
+ 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.

**Algoritmo de firma simétrica**  
El algoritmo del código de autenticación de mensajes basado en hash (HMAC) se utiliza para generar una firma simétrica. Todos los conjuntos de algoritmos compatibles incluyen la verificación HMAC.  
El SDK AWS de cifrado de bases de datos serializa la descripción del material y todos los campos marcados con `ENCRYPT_AND_SIGN` o. `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` A continuación, utiliza el HMAC con un algoritmo de función hash criptográfica (SHA-384) para firmar la canonicalización.  
La firma HMAC simétrica se almacena en un campo nuevo (`aws_dbe_foot`) que el SDK de cifrado de bases de datos agrega al registro. AWS 

**Algoritmo de firma asimétrica.**  
El algoritmo de firma utilizado para generar una firma digital asimétrica.  
El SDK AWS de cifrado de bases de datos serializa la descripción del material y todos los campos marcados con `ENCRYPT_AND_SIGN` o. `SIGN_ONLY` `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` A continuación, utiliza el algoritmo de firma digital de curva elíptica (ECDSA) con las siguientes especificaciones para firmar la canonicalización:  
+ La curva elíptica utilizada es la P-384, tal como se define en el [Estándar de Firma Digital](http://doi.org/10.6028/NIST.FIPS.186-4) (DSS) (FIPS PUB 186-4).
+ La función hash utilizada es SHA-384.
La firma ECDSA asimétrica se almacena con la firma HMAC simétrica en el campo. `aws_dbe_foot`  
Las firmas digitales ECDSA se incluyen de forma predeterminada, pero no son obligatorias.

**Compromiso clave**  
La función de derivación de extract-and-expand claves (HKDF) basada en HMAC que se utiliza para derivar la clave de confirmación.  
+ La función hash utilizada es SHA-512
+ Para el paso de extracción:
  + No se utiliza sal. Según el RFC, la sal se establece en una cadena de ceros.
  + [El material de codificación de entrada es la clave de datos del conjunto de claves.](concepts.md#keyring-concept)
+ Para el paso de expansión:
  + La clave pseudoaleatoria de entrada es el resultado del paso de extracción.
  + La información de entrada son los bytes codificados en UTF-8 de la `COMMITKEY` cadena en orden de bytes endiano grande.
  + La longitud del material de codificación de salida es de 256 bits. Esta salida se utiliza como clave de confirmación.
[La clave de confirmación calcula la confirmación del [registro,](reference.md#format-commitment) un hash distinto del código de autenticación de mensajes (HMAC) basado en hash de 256 bits, sobre la descripción del material.](reference.md#material-description-format) Para obtener una explicación técnica sobre cómo añadir un compromiso clave a un conjunto de algoritmos, consulte [Key Committing AEADs in Cryptology ePrint Archive](https://eprint.iacr.org/2020/1153). 

## Conjunto de algoritmos predeterminado
<a name="recommended-algorithms"></a>

De forma predeterminada, el SDK de cifrado de AWS bases de datos utiliza un conjunto de algoritmos con AES-GCM, una función de derivación de extract-and-expand claves basada en HMAC (HKDF), verificación de HMAC, firmas digitales ECDSA, compromiso de claves y una clave de cifrado de 256 bits.

[El conjunto de algoritmos predeterminado incluye la verificación HMAC (firmas simétricas) y las firmas digitales ECDSA (firmas asimétricas).](concepts.md#digital-sigs) Estas firmas se almacenan en un campo nuevo (`aws_dbe_foot`) que el SDK de cifrado de AWS bases de datos agrega al registro. Las firmas digitales ECDSA son especialmente útiles cuando la política de autorización permite que un conjunto de usuarios cifre los datos y otro grupo diferente los descifre.

El conjunto de algoritmos predeterminado también deriva de un [compromiso clave](concepts.md#key-commitment): un hash HMAC que vincula la clave de datos al registro. El valor de compromiso clave es un HMAC que se calcula a partir de la descripción del material y la clave de confirmación. A continuación, el valor de compromiso clave se almacena en la descripción del material. El compromiso clave garantiza que cada texto cifrado se descifre en un solo texto no cifrado. Para ello, validan la clave de datos utilizada como entrada en el algoritmo de cifrado. Al cifrar, el conjunto de algoritmos obtiene un HMAC de compromiso clave. Antes de descifrar, validan que la clave de datos produzca el mismo compromiso de clave HMAC. En caso contrario, el comando de descifrado genera un error.

## AES-GCM sin firmas digitales ECDSA
<a name="other-algorithms"></a>

Si bien es probable que el conjunto de algoritmos predeterminado sea adecuado para la mayoría de las aplicaciones, puede elegir un conjunto de algoritmos alternativo. Por ejemplo, algunos modelos de confianza quedarían satisfechos con un conjunto de algoritmos sin firmas digitales ECDSA. Utilice este conjunto solo cuando los usuarios que cifran datos y los usuarios que los descifran sean de la misma confianza.

Todos los conjuntos de algoritmos del SDK de cifrado de AWS bases de datos incluyen la verificación HMAC (firmas simétricas). La única diferencia es que el conjunto de algoritmos AES-GCM sin la firma digital ECDSA carece de la firma asimétrica, lo que proporciona un nivel adicional de autenticidad y no repudio.

Por ejemplo, si tiene varias claves de empaquetado en su conjunto de claves, y descifra un registro con ellas `wrappingKeyA` `wrappingKeyB``wrappingKeyC`, la firma simétrica HMAC verifica que el registro lo cifró un usuario con `wrappingKeyA` acceso a. `wrappingKeyA` Si utilizó el conjunto de algoritmos predeterminado, HMACs proporcione la misma verificación y, además`wrappingKeyA`, utilice la firma digital ECDSA para garantizar que el registro lo haya cifrado un usuario con permisos de cifrado para ello. `wrappingKeyA`

Para seleccionar el conjunto de algoritmos AES-GCM sin firmas digitales, incluya el siguiente fragmento en la configuración de cifrado.

------
#### [ Java ]

El siguiente fragmento especifica el conjunto de algoritmos AES-GCM sin firmas digitales ECDSA. Para obtener más información, consulte [Configuración de cifrado en el SDK de cifrado AWS de bases de datos para DynamoDB](ddb-java-using.md#ddb-config-encrypt).

```
.algorithmSuiteId(
    DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
```

------
#### [ C\$1 / .NET ]

El siguiente fragmento especifica el conjunto de algoritmos AES-GCM sin firmas digitales ECDSA. Para obtener más información, consulte [Configuración de cifrado en el SDK de cifrado AWS de bases de datos para DynamoDB](ddb-net-using.md#ddb-net-config-encrypt).

```
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
```

------
#### [ Rust ]

El siguiente fragmento especifica el conjunto de algoritmos AES-GCM sin firmas digitales ECDSA. Para obtener más información, consulte [Configuración de cifrado en el SDK de cifrado AWS de bases de datos para DynamoDB](ddb-rust-using.md#ddb-rust-config-encrypt).

```
.algorithm_suite_id(
    DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384,
)
```

------