Compatibilidad del SDK de cifrado de AWS para JavaScript - 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.

Compatibilidad del SDK de cifrado de AWS para JavaScript

El SDK de cifrado de AWS para JavaScript está diseñado para ser interoperable con otras implementaciones de lenguaje del AWS Encryption SDK. En la mayoría de los casos, puede cifrar datos con el SDK de cifrado de AWS para JavaScript y descifrarlos con cualquier otra implementación de lenguaje, incluida la interfaz de línea de comandos del AWS Encryption SDK. También puede usar el SDK de cifrado de AWS para JavaScript para descifrar mensajes cifrados producidos por otras implementaciones de lenguaje del AWS Encryption SDK.

Sin embargo, cuando utilice el SDK de cifrado de AWS para JavaScript, debe tener en cuenta algunos problemas de compatibilidad en la implementación de lenguaje y en los navegadores web.

Además, cuando utilice implementaciones de lenguaje diferentes, asegúrese de configurar , y conjuntos de claves compatibles. Para obtener más información, consulte Compatibilidad de conjuntos de claves.

Compatibilidad con el SDK de cifrado de AWS para JavaScript

La implementación de JavaScript del AWS Encryption SDK difiere de otras implementaciones de lenguaje de las siguientes maneras:

  • La operación de cifrado del SDK de cifrado de AWS para JavaScript no devuelve texto cifrado sin trama. Sin embargo, el SDK de cifrado de AWS para JavaScript descifrará texto cifrado con y sin trama devuelto por otras implementaciones de lenguaje del AWS Encryption SDK.

  • A partir de Node.js versión 12.9.0, Node.js admite las siguientes opciones de encapsulamiento de claves de RSA:

    • OAEP con SHA1, SHA256, SHA384 o SHA512

    • OAEP con SHA1 y MGF1 con SHA1

    • PKCS1v15

  • Antes de la versión 12.9.0, Node.js admitía las siguientes opciones de encapsulamiento de claves de RSA:

    • OAEP con SHA1 y MGF1 con SHA1

    • PKCS1v15

Compatibilidad del navegador

Algunos navegadores web no admiten operaciones criptográficas básicas que el SDK de cifrado de AWS para JavaScript requiere. Puede compensar algunas de las operaciones que faltan; para ello, configure un respaldo para la API de WebCrypto que el navegador implementa.

Limitaciones del explorador web

Las siguientes limitaciones son comunes a todos los navegadores web:

  • La API de WebCrypto no admite el encapsulamiento de claves PKCS1v15.

  • Los navegadores no admiten claves de 192 bits.

Operaciones criptográficas requeridas

El SDK de cifrado de AWS para JavaScript requiere las siguientes operaciones en los navegadores web. Si un navegador no las admite, es incompatible con el SDK de cifrado de AWS para JavaScript.

  • El navegador debe incluir crypto.getRandomValues(), que es un método para generar valores criptográficamente aleatorios. Para obtener información acerca de las versiones del navegador web compatibles con crypto.getRandomValues(), vea Can I Use crypto.getRandomValues()?.

Reserva obligatoria

El SDK de cifrado de AWS para JavaScript requiere las siguientes bibliotecas y operaciones en navegadores web. Si admite un navegador web que no cumple estos requisitos, debe configurar una reserva. De lo contrario, los intentos de usar el SDK de cifrado de AWS para JavaScript con el navegador fracasarán.

  • La API de WebCrypto, que realiza operaciones criptográficas básicas en aplicaciones web, no está disponible para todos los navegadores. Para obtener información acerca de las versiones del explorador web que admiten la criptografía web, vea Can I Use Web Cryptography?.

  • Las versiones modernas del navegador web Safari no admiten el cifrado AES-GCM de cero bytes que el AWS Encryption SDK necesita. Si el navegador implementa la API de WebCrypto, pero no puede usar AES-GCM para cifrar cero bytes, el SDK de cifrado de AWS para JavaScript utiliza la biblioteca de reserva solo para el cifrado de cero bytes y la API de WebCrypto para el resto de las operaciones.

Para configurar una reserva para cualquiera de las limitaciones, agregue las instrucciones siguientes al código. En la función configureFallback, especifique una biblioteca que admita las entidades que faltan. En el ejemplo siguiente se utiliza la biblioteca de criptografía de JavaScript de Microsoft Research (msrcrypto), pero se puede reemplazar por otra biblioteca compatible. Para ver un ejemplo completo, consulte fallback.ts.

import { configureFallback } from '@aws-crypto/client-browser' configureFallback(msrCrypto)