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.
Mejores prácticas para la AWS Encryption SDK
AWS Encryption SDK Está diseñado para facilitarle la protección de sus datos mediante los estándares y las mejores prácticas del sector. Si bien se seleccionan muchas de las prácticas recomendadas en los valores predeterminados, algunas son opcionales, pero se recomiendan siempre que sea práctico.
- Uso de la versión más reciente
-
Cuando empiece a utilizar el AWS Encryption SDK, utilice la última versión que se ofrece en su lenguaje de programación preferido. Si ha estado utilizando el AWS Encryption SDK, actualice a cada versión más reciente lo antes posible. Esto garantiza que está utilizando la configuración recomendada y que aprovecha las nuevas propiedades de seguridad para proteger sus datos. Para obtener más información sobre las versiones compatibles, incluidas las directrices para la migración y la implementación, consulte Compatibilidad y mantenimiento y Versiones del AWS Encryption SDK.
Si una nueva versión deja en desuso algunos elementos del código, sustitúyalos lo antes posible. Las advertencias de obsolescencia y los comentarios del código suelen recomendar una buena alternativa.
Para que las actualizaciones importantes sean más fáciles y menos propensas a errores, en ocasiones ofrecemos una versión temporal o de transición. Utilice estas versiones y la documentación que las acompaña para asegurarse de que puede actualizar su aplicación sin interrumpir el flujo de trabajo de producción.
- Use valores predeterminados
-
AWS Encryption SDK Diseña las mejores prácticas en sus valores predeterminados. Siempre que sea posible, úselos. Para los casos en los que la configuración predeterminada no sea práctica, ofrecemos alternativas, como conjuntos de algoritmos sin firma. También ofrecemos oportunidades de personalización a los usuarios avanzados, como conjuntos de claves personalizados, proveedores de claves maestras y administradores de material criptográfico (CMM). Utilice estas alternativas avanzadas con cautela y pida a un ingeniero de seguridad que verifique sus opciones siempre que sea posible.
- Cómo utilizar un contexto de cifrado
-
Para mejorar la seguridad de las operaciones criptográficas, incluya un contexto de cifrado con un valor significativo en todas las solicitudes de cifrado de datos. El uso de un contexto de cifrado es opcional, pero es una práctica criptográfica recomendada que le aconsejamos. Un contexto de cifrado proporciona datos autenticados adicionales (AAD) para el cifrado autenticado en el AWS Encryption SDK. Aunque no es secreto, el contexto de cifrado puede ayudarle a proteger la integridad y autenticidad
de sus datos cifrados. En AWS Encryption SDK, se especifica un contexto de cifrado solo al cifrar. Al descifrar, AWS Encryption SDK utiliza el contexto de cifrado en el encabezado del mensaje cifrado que devuelve. AWS Encryption SDK Antes de que la aplicación devuelva los datos en texto no cifrado, compruebe que el contexto de cifrado que proporcionó durante el cifrado esté incluido en el contexto de cifrado que se utilizó para descifrar el mensaje. Para obtener más información, consulte los ejemplos en su lenguaje de programación.
Cuando utiliza la interfaz de línea de comandos, AWS Encryption SDK verifica automáticamente el contexto de cifrado.
Contexto de cifrado obligatorio con la biblioteca de proveedores de materiales
Empezando por las versiones AWS Encryption SDK que integran la biblioteca de proveedores de material AWS criptográfico
(MPL) (por ejemplo, la versión 3). x y versiones posteriores de la SDK de cifrado de AWS para Java y la versión 4. x y versiones posteriores del SDK de cifrado de AWS para Python), puede configurar una CMM de contexto de cifrado requerida que marque las claves de contexto de cifrado seleccionadas como obligatorias. Las claves de contexto de cifrado necesarias y sus valores siguen enlazados al texto cifrado como datos autenticados adicionales (AAD), pero las claves no se almacenan en el encabezado del mensaje cifrado. La persona que llama debe proporcionar las mismas claves y valores de contexto de cifrado requeridos al descifrar; de lo contrario, el descifrado fallará. Esto reduce el tamaño del texto cifrado para el contexto de cifrado que ya tiene la persona que llama, al tiempo que conserva las propiedades de autenticación e integridad del contexto de cifrado. Cross-version y compatibilidad entre idiomas
Los mensajes que incluyen todo el contexto de cifrado en el encabezado (producidos por AWS Encryption SDK versiones que no configuran un contexto de cifrado obligatorio (CMM)) se pueden descifrar con cualquier AWS Encryption SDK versión compatible, incluidas las versiones anteriores a la integración de MPL. Los mensajes producidos con un contexto de cifrado obligatorio (CMM) solo pueden descifrarse en AWS Encryption SDK las versiones que integren la MPL, y la persona que llama debe proporcionar las claves y valores del contexto de cifrado necesarios en el momento del descifrado. Para obtener más información sobre las versiones lingüísticas que integran la MPL, consulte. AWS Encryption SDK lenguajes de programación Para obtener más información sobre la compatibilidad entre versiones, consulte. Versiones del AWS Encryption SDK
- Proteja sus claves de encapsulamiento
-
AWS Encryption SDK Genera una clave de datos única para cifrar cada mensaje de texto sin formato. Luego, cifra la clave de datos con las claves de encapsulamiento que proporciona. Si sus claves de encapsulamiento se pierden o se eliminan, sus datos cifrados son irrecuperables. Si sus claves no están protegidas, es posible que sus datos sean vulnerables.
Utilice claves de encapsulamiento que estén protegidas por una infraestructura de claves segura, como AWS Key Management Service (AWS KMS). Cuando utilice claves de RSA o de AES sin procesar, utilice una fuente de asignación al azar y de almacenamiento duradero que cumpla sus requisitos de seguridad. Se recomienda generar y almacenar las claves de empaquetado en un módulo de seguridad de hardware (HSM) o en un servicio que proporcione HSM AWS CloudHSM, por ejemplo.
Utilice los mecanismos de autorización de su infraestructura de claves para limitar el acceso a las claves de encapsulamiento únicamente a los usuarios que lo necesiten. Implemente los principios de las prácticas recomendadas, como el privilegio mínimo. Cuando lo utilices AWS KMS keys, usa políticas clave y políticas de IAM que implementen los principios de las mejores prácticas.
- Especifique sus claves de encapsulamiento
-
Siempre se recomienda especificar las claves de encapsulamiento de forma explícita al descifrar, así como al cifrar. Cuando lo haga, AWS Encryption SDK utilizará únicamente las claves que especifique. Esta práctica garantiza que solo utilice las claves de cifrado que desee. Al AWS KMS empaquetar claves, también mejora el rendimiento al impedir que utilices por error claves de otra región Cuenta de AWS o región, o que intentes descifrarlas con claves para las que no tienes permiso de uso.
Al cifrar, los conjuntos de claves y los proveedores de claves maestras que proporcionan requieren que especifiques las claves de AWS Encryption SDK empaquetado. Utilizan únicamente las claves de encapsulamiento que especifique. También es necesario especificar las claves de empaquetado al cifrar y descifrar con conjuntos de claves AES sin procesar, anillos de claves RSA sin procesar y. JCEMasterKeys
Sin embargo, al descifrar con AWS KMS anillos de claves y proveedores de claves maestras, no es necesario especificar las claves de empaquetado. AWS Encryption SDK Pueden obtener el identificador de clave a partir de los metadatos de la clave de datos cifrada. Sin embargo, la práctica recomendada es especificar las claves de encapsulamiento.
Para respaldar esta práctica recomendada al trabajar con claves de AWS KMS empaquetado, recomendamos lo siguiente:
-
Utilice AWS KMS llaveros que especifiquen las claves de empaquetado. Al cifrar y descifrar, estos conjuntos de claves utilizan únicamente las claves de encapsulamiento que especifica.
-
Cuando utilice claves AWS KMS maestras y proveedores de claves maestras, utilice los constructores de modo estricto introducidos en la versión 1.7. x del. AWS Encryption SDK Crean proveedores que cifran y descifran solo con las claves de encapsulamiento que especifique. Los constructores para los proveedores de claves maestras que siempre descifran con cualquier clave de encapsulamiento están obsoletos en la versión 1.7.x y se eliminaron en la versión 2.0.x.
Si no resulta práctico especificar las claves de AWS KMS empaquetado para el descifrado, puede utilizar proveedores de detección. Los conjuntos de AWS Encryption SDK claves de AWS KMS detección están en C y en JavaScript soporte. Los proveedores de claves maestras con modo de detección están disponibles para Java y Python en las versiones 1.7.x y posteriores. Estos proveedores de detección, que solo se utilizan para descifrar con claves de AWS KMS empaquetado, les indican explícitamente que usen cualquier clave de empaquetado que cifre una clave de datos. AWS Encryption SDK
Si debe utilizar un proveedor de detección, utilice sus características de filtro de detección para limitar las claves de encapsulamiento que utilizan. Por ejemplo, el conjunto de claves regional de detección de AWS KMS usa solo las claves de encapsulamiento en un Región de AWS particular. También puede configurar los conjuntos de AWS KMS claves y los proveedores de claves AWS KMS maestras para que utilicen únicamente las claves de empaquetado en concreto. Cuentas de AWS Además, como siempre, usa las políticas de claves y las políticas de IAM para controlar el acceso a tus claves de AWS KMS empaquetado.
-
- Uso de firmas digitales
-
Se recomienda utilizar un conjunto de algoritmos para la firma. Las firmas digitales comprueban que el remitente del mensaje estaba autorizado a enviar el mensaje y protegen la integridad del mensaje. Todas las versiones AWS Encryption SDK utilizan conjuntos de algoritmos con la firma de forma predeterminada.
Si sus requisitos de seguridad no incluyen las firmas digitales, puede seleccionar un conjunto de algoritmos sin firmas digitales. Sin embargo, se recomienda utilizar firmas digitales, especialmente cuando un grupo de usuarios cifra los datos y otro grupo de usuarios los descifra.
- Utilice el compromiso clave
-
Se recomienda utilizar la característica de seguridad de compromiso clave. Al comprobar la identidad de la clave de datos única que cifró los datos, la clave de confirmación impide descifrar cualquier texto cifrado que pueda dar lugar a más de un mensaje de texto no cifrado.
AWS Encryption SDK Proporciona soporte completo para el cifrado y el descifrado con el compromiso de clave a partir de la versión 2.0. x. De forma predeterminada, todos los mensajes se cifran y descifran con un compromiso clave. Versión 1.7. x of AWS Encryption SDK puede descifrar textos cifrados con un compromiso clave. Está diseñado para ayudar a los usuarios de versiones anteriores a implementar la versión 2.0.x correctamente.
El soporte para el compromiso clave incluye nuevos conjuntos de algoritmos y un nuevo formato de mensaje que produce un texto cifrado de solo 30 bytes más grande que un texto cifrado sin compromiso clave. El diseño minimiza su impacto en el rendimiento para que la mayoría de los usuarios puedan disfrutar de las ventajas de un compromiso clave. Si su aplicación es muy sensible al tamaño y al rendimiento, puede decidir usar la configuración de la política de confirmación para deshabilitar la confirmación de claves o permitir que se descifre los mensajes sin compromiso, pero hacerlo solo si es necesario. AWS Encryption SDK
- Limitar el número de claves de datos cifradas
Se recomienda limitar el número de claves de datos cifradas en los mensajes que descifra, especialmente los que provienen de fuentes que no son de confianza. Descifrar un mensaje con numerosas claves de datos cifradas que no puede descifrar puede provocar demoras prolongadas, aumentar los gastos, limitar su aplicación y otras que comparten su cuenta y, potencialmente, agotar su infraestructura de claves. Sin límites, un mensaje cifrado puede contener hasta 65 535 (2^16 - 1) claves de datos cifrados. Para obtener más información, consulte Limitar las claves de datos cifrados.
Para obtener más información sobre las funciones de AWS Encryption SDK seguridad en las que se basan estas prácticas recomendadas, consulte la sección Mejora del cifrado del lado del cliente: compromiso explícito KeyIds y clave