Solución de problemas de migración a las versiones más recientes - 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.

Solución de problemas de migración a las versiones más recientes

Antes de actualizar la aplicación a la versión 2.0.x o una versión posterior delAWS Encryption SDK, actualice a la última versión 1.x versión de AWS Encryption SDK e impleméntela por completo. Esto le ayudará a evitar la mayoría de los errores que puedan producirse al actualizar a las versiones 2.0.x y versiones posteriores. Para obtener una guía detallada, incluidos ejemplos, consulte Migrar su AWS Encryption SDK.

importante

Verifique que su última 1.La versión x es 1.7.x o una versión posterior deAWS Encryption SDK.

nota

CLI de cifrado de AWS: referencias en esta guía a la versión 1.7.x del AWS Encryption SDK se aplican a la versión 1.8.x de la CLI de cifrado de AWS. Referencias de esta guía a la versión 2.0.x del AWS Encryption SDK se aplica a la 2.1.x de la CLI de cifrado de AWS.

Las nuevas funciones de seguridad se publicaron originalmente en las versiones 1.7.x y 2.0.x de la CLI de cifrado del AWS. Sin embargo, la versión 1.8.x de la CLI de cifrado de AWS reemplaza a la versión 1.7.x y la CLI de cifrado de AWS 2.1.x reemplaza a 2.0.x. Para obtener más información, consulte el aviso de seguridad correspondiente en el repositorio aws-encryption-sdk-cli en GitHub.

Este tema está diseñado para ayudarlo a reconocer y resolver los errores más comunes que pueda encontrar.

Objetos obsoletos o eliminados

Versión 2.0.x incluye varios cambios importantes, como la eliminación de constructores, métodos, funciones y clases antiguos que estaban en desuso en la versión 1.7.x. Para evitar errores del compilador, errores de importación, errores de sintaxis y errores de símbolos no encontrados (según el lenguaje de programación), actualice primero a la última versión 1.x del AWS Encryption SDK para su lenguaje de programación. (La versión debe ser 1.7.x o posterior). Mientras usa la última 1.en la versión x, puede empezar a utilizar los elementos de reemplazo antes de eliminar los símbolos originales.

Si necesita actualizar a la versión 2.0.x o posterior inmediatamente, consulte el registro de cambios de su lenguaje de programación y sustituya los símbolos antiguos por los símbolos recomendados en el registro de cambios.

Conflicto de configuración: conjunto de políticas y algoritmos de compromiso

Si especifica un conjunto de algoritmos que entra en conflicto con su política de compromiso, la llamada al cifrado fallará y aparecerá un error de conflicto de configuración.

Para evitar este tipo de error, no especifique un conjunto de algoritmos. De forma predeterminada, AWS Encryption SDK elige el algoritmo más seguro que sea compatible con su política de compromiso. Sin embargo, si debe especificar un conjunto de algoritmos, por ejemplo, uno sin firmar, asegúrese de elegir un conjunto de algoritmos que sea compatible con su política de compromiso.

Política de compromiso Compatibilidad con los conjuntos de algoritmos
ForbidEncryptAllowDecrypt

Cualquier conjunto de algoritmos sin compromiso clave, como:

AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384(03 78) (con firma)

AES_256_GCM_IV12_TAG16_HKDF_SHA256(01 78) (sin firma)

RequireEncryptAllowDecrypt

RequireEncryptRequireDecrypt

Cualquier conjunto de algoritmos con un compromiso clave, como:

AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384(05 78) (con firma)

AES_256_GCM_HKDF_SHA512_COMMIT_KEY(04 78) (sin firma)

Si encuentra este error cuando no ha especificado un conjunto de algoritmos, es posible que su administrador de materiales criptográficos (CMM) haya elegido el conjunto de algoritmos conflictivo. El CMM predeterminado no seleccionará un conjunto de algoritmos conflictivo, pero sí un CMM personalizado. Para obtener ayuda, consulte la documentación de su CMM personalizado.

Conflicto de configuración: política de compromiso y texto cifrado

La política de compromiso de RequireEncryptRequireDecrypt no permite a AWS Encryption SDK descifrar un mensaje que se haya cifrado sin el compromiso de clave. Si le pide a AWS Encryption SDK que descifre un mensaje sin compromiso de clave, arrojará un error de conflicto de configuración.

Para evitar este error, antes de establecer la política de compromiso de RequireEncryptRequireDecrypt, asegúrese de que todos los textos cifrados sin compromiso de clave se descifren y se vuelvan a cifrar con compromiso de clave, o de que sean gestionados por otra aplicación. Si se produce este error, puede arrojar un error para el texto cifrado conflictivo o cambiar temporalmente la política de compromiso a RequireEncryptAllowDecrypt.

Si se produce este error porque actualizó a la versión 2.0.x o posterior desde una versión anterior a la 1.7.x sin actualizar primero a la última versión 1.versión x (versión 1.7.x o posterior), considere la posibilidad de volver a la última versión 1.versión x e implementar esa versión en todos los hosts antes de actualizar a la versión 2.0.x o una versión posterior. Para obtener ayuda, consulte Cómo migrar e implementar el AWS Encryption SDK.

Falla en la validación del compromiso clave

Al descifrar los mensajes cifrados con un compromiso de clave, es posible que aparezca un mensaje de error en la validación del compromiso de clave. Esto indica que la llamada de descifrado ha fallado porque la clave de datos de un mensaje cifrado no es idéntica a la clave de datos única del mensaje. Al validar la clave de datos durante el descifrado, el compromiso de claves evita que se descodifique un mensaje que pueda tener como resultado más de un texto sin formato.

Este error indica que el mensaje cifrado que estaba intentando descifrar no fue devuelto por el AWS Encryption SDK. Puede ser un mensaje creado manualmente o el resultado de una corrupción de datos. Si se produce este error, la aplicación puede rechazar el mensaje y continuar o dejar de procesar los mensajes nuevos.

Otras fallas de cifrado

El cifrado puede fallar por varios motivos. No puede utilizar un conjunto de claves de AWS KMS detección ni un proveedor de claves maestras en el modo de detección para cifrar un mensaje.

Asegúrese de especificar un conjunto de claves o un proveedor de claves maestras con claves de encapsulación que tenga permiso para usar para el cifrado. Para obtener ayuda sobre los permisos en AWS KMS keys, consulte Visualización de una política de claves y Determinación del acceso a una AWS KMS key en la Guía para desarrolladores de AWS Key Management Service.

Otras fallas de descifrado

Si se produce un error al intentar descifrar un mensaje cifrado, significa que AWS Encryption SDK no ha podido (o no quiere) descifrar ninguna de las claves de datos cifrados del mensaje.

Si ha utilizado un conjunto de claves o un proveedor de claves maestras que especifique las claves de encapsulación, AWS Encryption SDK utilizará únicamente las claves de encapsulación que especifique. Compruebe que está utilizando las claves de embalaje que desea utilizar y que tiene kms:Decrypt permiso para utilizar al menos una de las claves de embalaje. Si lo utilizaAWS KMS keys, como alternativa, puede intentar descifrar el mensaje con un conjunto de claves de AWS KMSdetección o con un proveedor de claves maestras en el modo de detección. Si la operación se realiza correctamente, antes de devolver el texto sin formato, compruebe que la clave utilizada para descifrar el mensaje es de confianza.

Consideraciones de restauración

Si su aplicación no logra cifrar o descifrar los datos, normalmente puede resolver el problema actualizando los símbolos de código, los conjuntos de claves, los proveedores de claves maestras o la política de compromiso. Sin embargo, en algunos casos, puede que decidas que es mejor revertir la aplicación a una versión anterior de.AWS Encryption SDK

Si tiene que revertirla, hágalo con precaución. Versiones AWS Encryption SDK anteriores a la 1.7.x no puede descifrar el texto cifrado con un compromiso de clave.

  • Retrocediendo desde la última versión 1.La versión x a una versión anterior de la AWS Encryption SDK es generalmente segura. Puede que tenga que deshacer los cambios realizados en el código para utilizar símbolos y objetos que no son compatibles con las versiones anteriores.

  • Una vez que haya empezado a cifrar con un compromiso clave (estableciendo su política de compromisoRequireEncryptAllowDecrypt) en la versión 2.0.x o posterior, puede volver a la versión 1.7.x, pero no a una versión anterior. Versiones de AWS Encryption SDK anteriores a la 1.7.x no pueden descifrar el texto cifrado con un compromiso de clave.

Si habilita accidentalmente el cifrado con compromiso de clave antes de que todos los hosts puedan descifrar con compromiso de clave, sería mejor continuar con la implementación en lugar de revertirla. Si los mensajes son transitorios o se pueden eliminar de forma segura, podría considerar la posibilidad de revertirlos con la pérdida de mensajes. Si es necesaria una reversión, podría considerar la posibilidad de crear una herramienta que descifre y vuelva a cifrar todos los mensajes.