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 SDKConceptos de encriptación de bases
Nuestra biblioteca de cifrado del lado del cliente pasó a llamarse AWS Database Encryption. SDK 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 utilizados en el cifrado de AWS bases de datos. SDK
Para obtener información sobre cómo SDK interactúan los componentes del cifrado de la AWS base de datos, consulteCómo funciona el SDK AWS de cifrado de bases de datos.
Para obtener más información sobre el cifrado AWS de bases de datosSDK, consulte los siguientes temas.
-
Descubra cómo el cifrado AWS de bases de datos SDK 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 a AWS Database Encryption SDK 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 cifrado AWS de la base de datos SDK 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 cifrado AWS de la base de datos SDK almacena todas las claves de datos cifradas 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 cifrado de AWS bases de datos SDK utiliza un conjunto de algoritmos con AES cifrado GCM simétrico, una función de derivación de claves HMAC basada en datos (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 uno de los AWS KMS llaveros siempre que sea posible. Cuando utilices el AWS KMS llavero, puedes optar por combinar los puntos fuertes de varios algoritmos especificando una asimétrica RSA AWS KMS key como clave de ajuste. También puede utilizar una clave de cifrado simétrica. KMS
Clave de datos
Una clave de datos es una clave de cifrado que el cifrado de AWS bases de datos SDK 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 cifrado AWS de la base de datos SDK utiliza una clave de datos única para cifrar cada atributo.
No es necesario especificar, generar, implementar, extender, proteger ni usar claves de datos. El cifrado AWS de la base de datos lo SDK hace por usted cuando llama a las operaciones de cifrado y descifrado.
Para proteger sus claves de datos, el cifrado de AWS bases de datos las SDK cifra en una o más claves de cifrado por clave conocidas como claves de empaquetado. Una vez que el cifrado de AWS bases de datos SDK utiliza las claves de datos en texto plano 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 información, consulte Cómo funciona el SDK AWS de cifrado de bases de datos.
sugerencia
En el cifrado de AWS bases de datosSDK, 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 cifrado de la AWS base de datos SDK identifique las claves de empaquetado válidas al descifrar.
Clave de encapsulamiento
Una clave de empaquetado es una clave de cifrado por clave que el sistema de cifrado AWS de bases de datos SDK 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.
El cifrado AWS de bases de datos SDK admite varias claves de empaquetado de uso común, como AWS Key Management Service(AWS KMS) las claves de cifrado simétricas (incluidas KMS las claves multirregionales) y las claves asimétricas, AWS KMS las claves sin procesar (estándar de cifrado avanzado/modo de AES contador de GCM Galois) y RSAKMSlas claves sin procesar. RSA Recomendamos utilizar claves siempre que sea posible. KMS 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 cifrado AWS de bases de datos SDK 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 utilizar los anillos de claves que SDK proporciona el cifrado AWS 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 MAC claves 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 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 cifrado de la AWS base de datos SDK utiliza todas las claves de empaquetado especificadas en el anillo de claves para cifrar la clave de datos. Para obtener ayuda sobre la elección y el uso de los anillos de claves que SDK define el cifrado de AWS bases de datos, consulte Uso de anillos 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 cifrado SDK 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 cifrado AWS de la base de datos firma SDK 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 cifrado de la AWS base de datos SDK para proteger sus registros ENCRYPT_AND_SIGN
SIGN_ONLY
, no podrá cambiar un SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
campo o 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 cifrado de AWS base de datosSDK, 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 nuevo campo (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 cifrado de la AWS base de datos SDK 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 cifrado AWS de bases de datos SDK 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 cifrado de la AWS base de datos SDK también utiliza el contexto de cifrado para proporcionar datos autenticados adicionales (AAD) en las llamadas que realiza el conjunto de claves. AWS KMS
Siempre que utilice el conjunto de algoritmos predeterminado, el administrador de materiales criptográficos (CMM) agrega un par nombre-valor al contexto de cifrado que consta de un nombre reservado y un valor que representa aws-crypto-public-key
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 interactúas directamente con ellos. CMM Los métodos de cifrado y descifrado se encargan de ello.
Como CMM actúa como enlace entre el cifrado de la AWS base de datos SDK 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 una de forma explícitaCMM, pero no es obligatorio. Al especificar un conjunto de claves, el cifrado de la AWS base de datos SDK crea un valor predeterminado CMM para usted. El valor predeterminado CMM obtiene los materiales de cifrado o descifrado del anillo 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.
El cifrado de la AWS base de datos SDK utiliza el cifrado de 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 cifrado de la AWS base de datos SDK 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 cifrado de la AWS base de datos SDK 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 un cifrado simétrico, como un AWS KMS anillo de claves con una KMS clave de cifrado simétrica, o uno que utilice un cifrado asimétrico, como un anillo de claves con una AWS KMS clave asimétrica. RSA KMS
Compromiso clave
El cifrado AWS de la base de datos SDK 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 plano. Para ello, el compromiso clave garantiza que solo se utilice la clave de datos que cifró el registro para descifrarlo. El cifrado de la AWS base de datos SDK incluye un compromiso clave para todas las operaciones de cifrado y descifrado.
La mayoría de los cifrados simétricos modernos (incluidosAES) cifran el texto sin formato con una única clave secreta, como la clave de datos única que SDK utiliza el cifrado de AWS bases de datos 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 cifrado de la AWS base de datos SDK 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 este escenario, el cifrado de la AWS base de datos SDK incluye el compromiso de clave 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. Al descifrar un registro con un compromiso de clave, el cifrado de la AWS base de datos SDK 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
El SDK cifrado AWS de la base de datos cifra los datos mediante un algoritmo de cifrado autenticado, AES -GCM, y el proceso de descifrado verifica la integridad y autenticidad de un mensaje cifrado sin utilizar una firma digital. Sin embargo, dado AES que 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 añade una firma de algoritmo de firma digital (ECDSA) de 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, -. AES GCM A continuación, calcula los códigos de autenticación de mensajes basados en hash (HMACs) y ECDSA las firmas asimétricas en los campos del registro marcados ENCRYPT_AND_SIGN
con, y. 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 cifrado de la AWS base de datos SDK genera una clave privada temporal y un par de claves públicas para cada registro cifrado. El cifrado AWS de la base de datos SDK almacena la clave pública en la descripción del material 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 cifrado de la AWS base de datos SDK siempre incluye HMAC la verificación. ECDSALas firmas digitales 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.
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, incluido el RSA AWS KMS anillo de claves asimétrico, pueden distinguir entre cifradores y descifradores en función de las políticas y políticas clave. AWS KMS IAM
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
-
Llavero de AWS KMS ECDH
-
Llavero sin procesar AES
-
Llavero sin procesar RSA
-
Llavero sin procesar ECDH