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 Conceptos del SDK de encriptación de bases
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. |
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, consulteCómo funciona el SDK AWS de cifrado de bases de datos.
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 para proteger sus datos.
-
Obtenga información sobre los elementos del cifrado de sobre: las claves de datos que protegen sus registros y las claves de encapsulación que protegen sus claves de datos.
-
Obtenga información sobre los conjuntos de claves que determinan qué claves de encapsulación debe utilizar.
-
Obtenga información sobre el contexto de cifrado que agrega integridad a su proceso de cifrado.
-
Obtenga información sobre la descripción del material que los métodos de cifrado agregan a su registro.
-
Obtenga información sobre las acciones criptográficas que indican al SDK de cifrado de bases de datos de AWS qué campos debe cifrar y firmar.
Temas
Cifrado de sobre
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. 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.
Para especificar la clave de encapsulación, utilice un conjunto de claves.
- 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.
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 con cifrado simétrico AES-GCM, una función de derivación de claves basada en HMAC (HKDF) y firma ECDSA. Para cifrar la clave de datos, puede especificar un algoritmo de cifrado simétrico o asimétrico 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, 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
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. 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. 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. Para obtener más detalles, consulte Cómo funciona el SDK AWS de cifrado de bases de datos.
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 compatibles utilizan una función de derivación de clave
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
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 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.
![Puede cifrar la clave de datos con varias claves de encapsulación.](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(AWS KMS) las claves KMS de cifrado simétrico (incluidas las claves multirregionales) y las AWS KMS claves KMS RSA asimétricas, las claves AES-GCM (Advanced Encryption Standard/Galois Counter Mode) 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.
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)
. -
Utilice un módulo de seguridad de hardware (HSM)
como los que ofrece AWS CloudHSM . -
Utilice otras herramientas y servicios de administración de claves.
Si no tiene 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
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 (HMAC) en la firma. Al definir un conjunto de claves, puede especificar las claves de encapsulación que cifran las 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 anillo 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.
Funciones criptográficas
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.
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 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.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 paraSIGN_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. 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. Por ejemplo, puede agregar o eliminar campos cifrados en una sola implementación.
Descripción de material
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 portátil que contiene copias cifradas de las claves de datos y otra información, como los algoritmos de cifrado, el contexto de cifrado 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, consulteFormato de descripción del material.
Contexto de cifrado
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, el administrador de materiales criptográficos (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.
Administrador de materiales criptográficos
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, 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 (AWS KMS).
Cifrado simétrico y asimétrico
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. Para obtener más información, consulte Algoritmos criptográficos en la AWS Guía de herramientas y servicios criptográficos.
El SDK de cifrado AWS de bases de datos utiliza el cifrado por sobres. 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 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 simétrica y un conjunto de algoritmos que incluye un algoritmo 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 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
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 de bases de datos de AWS incluye un compromiso clave para todas las operaciones de cifrado y descifrado.
La mayoría de los sistemas de cifrado simétricos modernos (incluido el AES) cifran el texto sin formato con una única clave secreta, como la clave de datos única 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. 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
Para garantizar la autenticidad de los datos al pasar de un sistema a otro, puede aplicar una firma digital al registro. Las firmas digitales son siempre asimétricas. Utiliza su clave privada para crear la firma y anexarla al registro original. El destinatario usa una clave pública para comprobar que el registro no se ha modificado desde que lo firmó. Debe utilizar firmas digitales si los usuarios que cifran los datos y los que los descifran no tienen el mismo nivel de confianza.
El SDK de cifrado de AWS bases de datos cifra los datos mediante un algoritmo de cifrado autenticado, el AES-GCM, pero 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 provocar un posible problema de seguridad.
Para evitar este problema, el conjunto de algoritmos predeterminado 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 (HMAC) basados en hash y las firmas ECDSA asimétricas en los campos del registro marcados con ENCRYPT_AND_SIGN
SIGN_ONLY
, ySIGN_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 y descarta la clave privada, por lo que nadie puede crear otra firma que verifique con la clave pública. Como el algoritmo vincula la clave pública a la clave de datos cifrados como datos autenticados adicionales en la descripción del material, un usuario que solo pueda descifrar registros no podrá alterar la clave pública.
El SDK de cifrado AWS de bases de datos siempre incluye la verificación de 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.