¿Qué es la AWS Encryption SDK? - 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.

¿Qué es la AWS Encryption SDK?

El AWS Encryption SDK es una biblioteca de cifrado del cliente diseñada para facilitar que todo el mundo cifre y descifre los datos usando estándares y prácticas recomendadas del sector. Permite centrarse en la funcionalidad central de la aplicación, en lugar de en la mejor manera de cifrar y descifrar los datos. El AWS Encryption SDK se suministra gratuitamente con la licencia Apache 2.0.

El AWS Encryption SDK responde a preguntas como las siguientes:

  • ¿Qué algoritmo de cifrado debo usar?

  • ¿Cómo o en qué modo debo usar ese algoritmo?

  • ¿Cómo se genera la clave de cifrado?

  • ¿Cómo se protege la clave de cifrado y dónde debo almacenarla?

  • ¿Cómo hago que los datos cifrados sean portables?

  • ¿Cómo me aseguro de que el destinatario previsto pueda leer los datos cifrados?

  • ¿Cómo me aseguro de que los datos cifrados no sufran ninguna modificación desde que se escriben hasta que se leen?

  • ¿Cómo utilizo las claves de datos que AWS KMS devuelve?

Con el AWS Encryption SDK, define un proveedor de claves de cifrado (Java y Python) o un conjunto de claves (C, C#/.NET y JavaScript) que determina las claves maestras que utiliza para proteger sus datos. Luego se cifran y descifran los datos con los sencillos métodos que el AWS Encryption SDK proporciona. El AWS Encryption SDK se encarga del resto.

Sin el AWS Encryption SDK, es posible que tenga que dedicar más esfuerzos a crear una solución de cifrado que a la funcionalidad principal de la aplicación. El AWS Encryption SDK responde a estas preguntas y aporta los siguientes elementos.

Una implementación predeterminada que cumple las prácticas recomendadas en criptografía

De forma predeterminada, el AWS Encryption SDK genera una clave de datos única para cada objeto de datos que cifra. Esto es conforme con la práctica recomendada en criptografía que consiste en usar claves de datos únicas para cada operación de cifrado.

El AWS Encryption SDK cifra los datos mediante un algoritmo de clave simétrica, seguro y autenticado. Para obtener más información, consulte Conjuntos de algoritmos admitidos en el AWS Encryption SDK.

Un marco para proteger las claves de datos mediante claves maestras

Para proteger las claves de datos que se utilizan para cifrar los datos, el AWS Encryption SDK las cifra mediante una o varias claves maestras. Al proporcionar un marco para cifrar las claves de datos con más de una clave maestra, el AWS Encryption SDK facilita la portabilidad de los datos cifrados.

Por ejemplo, cifre los datos con AWS KMS key y AWS KMS y una clave de su HSM local. Puede usar cualquiera de las claves de encapsulación para descifrar los datos, en caso de que alguna no esté disponible o la persona que llama no tenga permiso para usar ambas claves.

Un mensaje con formato que almacene las claves de datos cifradas con los datos cifrados

El AWS Encryption SDK almacena los datos cifrados y la clave de datos cifrada juntos en un mensaje cifrado que utiliza un formato de datos definido. Esto significa que no es preciso realizar el seguimiento de las claves de datos utilizadas para cifrar los datos ni protegerlas, porque el AWS Encryption SDK se encarga de ello automáticamente.

Algunas implementaciones de lenguaje del AWS Encryption SDK requieren un SDK de AWS, pero el AWS Encryption SDK no requiere una cuenta de Cuenta de AWS y no depende de ningún servicio de AWS. Solo necesitará un Cuenta de AWS si decide utilizar AWS KMS keys para proteger sus datos.

Desarrollado en repositorios de código abierto

El AWS Encryption SDK se desarrolla en repositorios de código abierto en GitHub. Puede usar estos repositorios para ver el código, leer y enviar los problemas y encontrar información específica sobre la implementación de su lenguaje.

Compatibilidad con bibliotecas y servicios de cifrado

El AWS Encryption SDK es compatible con varios lenguajes de programación. Todas las implementaciones de lenguaje son interoperables. Puede cifrar con una implementación de lenguaje y descifrar con otra. La interoperabilidad puede estar sujeta a restricciones de lenguaje. Si es así, estas restricciones se describen en el tema que trata de la implementación del lenguaje. Además, al cifrar y descifrar, debe usar conjuntos de claves compatibles o claves maestras y proveedores de claves maestras. Para obtener más información, consulte Compatibilidad de conjuntos de claves.

Sin embargo, el AWS Encryption SDK no puede interactuar con otras bibliotecas. Dado que cada biblioteca devuelve datos cifrados en un formato diferente, no se puede cifrar con una biblioteca y luego descifrar con otra.

Cliente de cifrado de DynamoDB y cifrado del cliente de Amazon S3

El AWS Encryption SDK no puede descifrar los datos cifrados por el cliente de cifrado de DynamoDB o el cifrado del cliente de Amazon S3. Y estas bibliotecas no pueden descifrar el mensaje cifrado que devuelve AWS Encryption SDK. 

AWS Key Management Service (AWS KMS)

El AWS Encryption SDK puede usar AWS KMS keys y claves de datos para proteger sus datos, incluidas las claves KMS multirregionales. Por ejemplo, puede configurar el AWS Encryption SDK para cifrar sus datos con una o varias AWS KMS keys en su cuenta de Cuenta de AWS. Sin embargo, debe usar el AWS Encryption SDK para descifrar esos datos.

El AWS Encryption SDK no puede descifrar el texto cifrado que devuelven las operaciones de AWS KMS Encrypt o ReEncrypt. Del mismo modo, la operación AWS KMS Decrypt no puede descifrar el mensaje cifrado que devuelve AWS Encryption SDK.

El AWS Encryption SDK solo es compatible con claves de cifrado de KMS simétricas. No se puede utilizar una clave KMS asimétrica para el cifrado o la firma en el AWS Encryption SDK. El AWS Encryption SDK genera sus propias claves de firma ECDSA para conjuntos de algoritmos que firmen mensajes.

Para obtener ayuda para decidir qué biblioteca o servicio utilizar, consulte Cómo elegir una herramienta o servicio de cifrado en Servicios y herramientas criptográficos de AWS.

Soporte y mantenimiento

El AWS Encryption SDK utiliza la misma política de mantenimiento que utilizan el SDK y las herramientas de AWS, 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 lenguaje de programación y que la AWS Encryption SDK actualice a medida que se publiquen nuevas versiones. Cuando una versión requiera cambios importantes, como la actualización desde AWS Encryption SDK versiones anteriores a la 1.7.x a las versiones 2.0.x y versiones posteriores, proporcionamos instrucciones detalladas para ayudarle.

Cada implementación del lenguaje de programación del AWS Encryption SDK se desarrolla en un repositorio GitHub de código abierto independiente. Es probable que el ciclo de vida y la fase de soporte de cada versión varíen de un repositorio a otro. Por ejemplo, una versión determinada de AWS Encryption SDK puede estar en la fase de disponibilidad general (soporte total) en un lenguaje de programación, pero en la fase de fin de soporte en un lenguaje de programación diferente. Le recomendamos que utilice una versión totalmente compatible siempre que sea posible y evite las versiones que ya no lo sean.

Para encontrar la fase del ciclo de vida de las versiones de AWS Encryption SDK para su lenguaje de programación, consulte el archivo SUPPORT_POLICY.rst en cada repositorio de AWS Encryption SDK.

Para obtener más información, consulte Versiones del AWS Encryption SDK y la Política de mantenimiento de SDK y herramientas de AWS en la Guía de referencia de SDK y herramientas de AWS.

Más información

Si desea obtener más información acerca del AWS Encryption SDK y el cifrado de lado del cliente, puede consultar estas fuentes.

Para obtener más información acerca de las implementaciones del AWS Encryption SDK en los distintos lenguajes de programación:

Envío de comentarios

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 AWS Encryption SDK, por favor, informe a seguridad de AWS. No cree un problema público en GitHub.

  • Para proporcionar comentarios sobre el AWS Encryption SDK, presente una notificación de problema en el repositorio de GitHub para el lenguaje de programación que use.

  • Para proporcionar comentarios sobre esta documentación, use el enlace Comentarios de esta página. También puede presentar una notificación de problema o contribuir a aws-encryption-sdk-docs, el repositorio de código abierto para esta documentación en GitHub.