Preguntas frecuentes - AWS Encryption SDK

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

Preguntas frecuentes

¿En qué se diferencia el AWS Encryption SDK de los SDK de AWS?

Los SDK de AWS proporcionan bibliotecas para interactuar con los Servicios web de Amazon (AWS), incluidas AWS Key Management Service (AWS KMS). Algunas de las implementaciones de lenguajes de la AWS Encryption SDK, como la AWS Encryption SDK para .NET, siempre requieren que el SDK AWS esté en el mismo lenguaje de programación. Las implementaciones de otros lenguajes requieren el SDK AWS correspondiente solo cuando utiliza claves de AWS KMS en sus llaveros o proveedores de claves maestras. Para obtener más información, consulte el tema sobre su lenguaje de programación en Lenguajes de programación del AWS Encryption SDK.

Puede utilizar los SDK de AWS para interactuar con AWS KMS, incluido cifrar y descifrar pequeñas cantidades de datos (hasta 4096 bytes con una clave de cifrado simétrica) y generar claves de datos para el cifrado del cliente. Sin embargo, al generar una clave de datos, debe gestionar todo el proceso de cifrado y descifrado, incluido el cifrado de los datos con la clave de datos externa de AWS KMS, descartar de forma segura la clave de datos no cifrados, almacenar la clave de datos cifrada y, a continuación, descifrar la clave de datos y sus datos. El AWS Encryption SDK se encarga de este proceso por usted.

El AWS Encryption SDK proporciona una biblioteca que cifra y descifra los datos utilizando los estándares y las prácticas recomendadas de la industria. Genera la clave de datos, la cifra con las claves de empaquetado que especifique y devuelve un mensaje cifrado, un objeto de datos portátil que incluye los datos cifrados y las claves de datos cifrados que necesita para descifrarlos. Cuando llegue el momento de descifrarlo, pasa el mensaje cifrado y al menos una de las claves de empaquetado (opcional) y, a continuación, el AWS Encryption SDK devuelve los datos en texto no cifrado.

Se puede utilizar AWS KMS keys como claves de empaquetado en el AWS Encryption SDK, pero no es obligatorio. Puede usar las claves de cifrado que genere y las del administrador de claves o del módulo de seguridad de hardware en las instalaciones. Puede utilizar AWS Encryption SDK incluso si no tiene una cuenta de AWS.

¿En qué se diferencia el AWS Encryption SDK del cliente de cifrado de Amazon S3?

El cliente de cifrado de Amazon S3 en los SDK de AWS proporciona cifrado y descifrado de los datos que almacena en Amazon Simple Storage Service (Amazon S3). Estos clientes están estrechamente acoplados a Amazon S3 y se han diseñado para utilizarlos exclusivamente con los datos almacenados en este servicio.

El AWS Encryption SDK proporciona cifrado y descifrado para datos que pueden almacenarse en cualquier lugar. Los clientes de cifrado de Amazon S3 y AWS Encryption SDK no son compatibles, ya que producen textos cifrados con distintos formatos de datos.

¿Qué algoritmos criptográficos son compatibles con el AWS Encryption SDK y cuál es el predeterminado?

El AWS Encryption SDK usa el algoritmo simétrico Advanced Encryption Standard (AES) en Galois/Counter Mode (GCM), denominado AES-GCM, para cifrar sus datos. Le permite elegir entre varios algoritmos simétricos y asimétricos para cifrar las claves de datos que cifran sus datos.

En el caso del AES-GCM, el conjunto de algoritmos predeterminado es AES-GCM, con una clave de 256 bits, un sistema de derivación de claves (HKDF), firmas digitales y compromiso de clave. AWS Encryption SDK también admite claves de cifrado y algoritmos de cifrado de 192 y 128 bits sin firmas digitales ni compromiso de clave.

En todos los casos, la longitud del vector de inicialización (IV) siempre es de 12 bytes; la longitud de la etiqueta de autenticación siempre es de 16 bytes. De forma predeterminada, el SDK utiliza la clave de datos como entrada de la función de derivación de clave de extracción y expansión basada en HMAC (HKDF) para derivar la clave de cifrado AES-GCM y también agrega una firma de Algoritmo de firma digital de curva elíptica (ECDSA).

Para obtener información sobre qué algoritmo utilizar, consulte Conjuntos de algoritmos admitidos.

Para obtener más información sobre la implementación de los algoritmos compatibles, consulte Referencia de algoritmos.

¿Cómo es el vector de inicialización (IV) generado y dónde se almacena?

El AWS Encryption SDK utiliza un método determinista para construir un valor IV diferente para cada trama. Este procedimiento garantiza que los IV nunca se repitan en un mensaje. (Antes de la versión 1.3.0 de SDK de cifrado de AWS para Java y el SDK de cifrado de AWS para Python, el AWS Encryption SDK generaba de forma aleatoria un valor IV único para cada trama).

El IV se almacena en el mensaje cifrado que devuelve el AWS Encryption SDK. Para obtener más información, consulte AWS Encryption SDK referencia de formato de mensaje.

¿Cómo se genera, cifra y descifra cada clave de datos?

El método depende del llavero o proveedor de claves maestras que utilice.

Los llaveros de AWS KMS y los proveedores de claves maestras en el AWS Encryption SDK utilizan la operación de la API GenerateDataKey de AWS KMS para generar cada clave de datos y cifrarla con su clave de empaquetado. Para cifrar copias de la clave de datos en claves KMS adicionales, utilizan la operación de cifrado de AWS KMS. Para descifrar las claves de datos, usan la operación de descifrado de AWS KMS. Para obtener más información, consulte el llavero de AWS KMS en la Especificación de AWS Encryption SDK en GitHub.

Otros llaveros generan la clave de datos, la cifran y la descifran utilizando los métodos de las prácticas recomendadas para cada lenguaje de programación. Para obtener más información, consulte la especificación del llavero o proveedor de claves maestras en la sección Framework de la Especificación de AWS Encryption SDK en GitHub.

¿Cómo se realizar el seguimiento de las claves de datos que se han utilizado para cifrar los datos?

El AWS Encryption SDK lo hace automáticamente. Cuando se cifran datos, el SDK cifra la clave de datos y almacena la clave cifrada junto con los datos cifrados en el mensaje cifrado que devuelve. Al descifrar los datos, el AWS Encryption SDK extrae la clave de datos cifrada del mensaje cifrado, la descifra y luego la usa para descifrar los datos.

¿Cómo almacena el AWS Encryption SDK las claves de datos cifradas con sus datos cifrados?

Las operaciones de cifrado del AWS Encryption SDK devuelven un mensaje cifrado, una sola estructura de datos que contiene los datos cifrados y sus las claves de datos cifradas. El formato del mensaje consta de al menos dos partes: un encabezado y un cuerpo. El encabezado del mensaje contiene las claves de datos cifradas e información sobre la composición del cuerpo del mensaje. El cuerpo del mensaje contiene los datos cifrados. Si el conjunto de algoritmos incluye una firma digital, el formato del mensaje incluye un pie de página que contiene la firma. Para obtener más información, consulte AWS Encryption SDK referencia de formato de mensaje.

¿Cuánta sobrecarga agrega el formato de mensaje del AWS Encryption SDK a los datos cifrados?

La cantidad de sobrecarga que agrega el AWS Encryption SDK depende de varios factores, tales como:

  • El tamaño de los datos en texto no cifrado.

  • Cuál de los algoritmos admitidos se utiliza.

  • Si se proporciona información autenticada adicional (AAD) y cuál es la longitud de esa AAD.

  • El número y el tipo de claves de empaquetado o claves maestras

  • El tamaño de la trama (cuando se utilizan datos con tramas).

Cuando se utiliza el AWS Encryption SDK con su configuración predeterminada (un AWS KMS key como la clave de empaquetado (o clave maestra), sin AAD, datos sin trama y un algoritmo de cifrado con firma), la sobrecarga es de aproximadamente 600 bytes. En general, es razonable suponer que el AWS Encryption SDK agrega una sobrecarga de 1 KB o menos, sin incluir la AAD proporcionada. Para obtener más información, consulte AWS Encryption SDK referencia de formato de mensaje.

¿Puedo utilizar mi propio proveedor de claves maestras?

Sí. Los detalles de la implementación varían en función de cuál de los lenguajes de programación admitidos se utilice. Sin embargo, todos los lenguajes admitidos permiten definir administradores de materiales criptográficos (CMM), proveedores de claves maestras, llaveros, claves maestras y claves de empaquetado personalizados.

¿Puedo cifrar datos con más de una clave de empaquetado?

Sí. Es posible cifrar la clave de datos con claves de empaquetado (o claves maestras) adicionales con el fin de aportar redundancia en caso de que una clave se encuentre en una región diferente o no esté disponible para el descifrado.

Para cifrar datos con varias claves de empaquetado, cree un llavero o un proveedor de claves maestras con varias claves de empaquetado. Cuando trabaje con llaveros, puede crear un solo llavero con varias claves de empaquetado o un llavero múltiple.

Cuando cifra datos con varias claves de empaquetado, el AWS Encryption SDK utiliza una clave de empaquetado para generar una clave de datos de texto no cifrado. La clave de datos es única y no está relacionada matemáticamente con la clave de empaquetado. Esta operación devuelve una copia de texto no cifrado de la clave de datos y una copia de la clave de datos que está cifrada por la clave de empaquetado. Luego, el método de cifrado cifra la clave de datos con las demás claves de empaquetado. El mensaje cifrado obtenido incluye los datos cifrados y una clave de datos cifrada para cada clave de empaquetado.

El mensaje cifrado se puede descifrar con cualquiera de las claves de empaquetado que se utilizaron en la operación de cifrado. El AWS Encryption SDK utiliza la clave de empaquetado para descifrar la clave de datos cifrada. Luego, usa la clave de datos de texto no cifrado para descifrar los datos.

¿Qué tipos de datos puedo cifrar con el AWS Encryption SDK?

La mayoría de las implementaciones de lenguaje de programación del AWS Encryption SDK pueden cifrar bytes sin procesar (matrices de bytes), secuencias de E/S (secuencias de bytes) y cadenas. La AWS Encryption SDK para .NET no admite las secuencias de E/S. Proporcionamos ejemplos de código para cada uno de los lenguajes de programación admitidos.

¿Cómo cifra y descifra el AWS Encryption SDK las secuencias de entrada/salida (E/S)?

El AWS Encryption SDK crea una secuencia de cifrado o descifrado que encapsula una secuencia de E/S subyacente. La secuencia de cifrado o descifrado realiza una operación criptográfica en una llamada de lectura o escritura. Por ejemplo, puede leer datos en texto no cifrado en la secuencia subyacente y cifrarlos antes de devolver el resultado. O puede leer texto cifrado en una secuencia subyacente y descifrarlo antes de devolver el resultado. Proporcionamos ejemplos de código para cifrar y descifrar secuencias en cada uno de los lenguajes de programación compatibles con las secuencias.

La AWS Encryption SDK para .NET no admite las secuencias de E/S.