Compatibilité du kit Kit SDK de chiffrement AWS pour JavaScript - AWS Encryption SDK

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Compatibilité du kit Kit SDK de chiffrement AWS pour JavaScript

Le kit Kit SDK de chiffrement AWS pour JavaScript est conçu pour être interopérable avec d'autres implémentations de langage du kit AWS Encryption SDK. Dans la plupart des cas, vous pouvez chiffrer des données avec le kit Kit SDK de chiffrement AWS pour JavaScript et les déchiffrer avec n'importe quelle autre implémentation de langage, y compris l'interface de ligne de commande AWS Encryption SDK. Et vous pouvez utiliser le kit Kit SDK de chiffrement AWS pour JavaScript pour déchiffrer les messages chiffrés produits par d'autres implémentations de langages du kit AWS Encryption SDK.

Toutefois, lorsque vous utilisez le kit Kit SDK de chiffrement AWS pour JavaScript, vous devez être conscient de certains problèmes de compatibilité dans l'implémentation de langage du kit JavaScript et dans les navigateurs web.

En outre, lorsque vous utilisez différentes implémentations de langage, assurez-vous de configurer les fournisseurs de clés principales, clés principales et porte-clés compatibles. Pour plus d'informations, consultez Compatibilité du porte-clés.

Compatibilité Kit SDK de chiffrement AWS pour JavaScript

L'implémentation JavaScript du kit AWS Encryption SDK diffère des autres implémentations de langage de la manière suivante :

  • L'opération de chiffrement du kit Kit SDK de chiffrement AWS pour JavaScript ne renvoie pas de texte chiffré non encadré. Cependant, le kit Kit SDK de chiffrement AWS pour JavaScript déchiffre le texte chiffré encadré et non encadré renvoyé par d'autres implémentations de langage du kit AWS Encryption SDK.

  • À partir de Node.js version 12.9.0, Node.js prend en charge les options d'encapsulage de clé RSA suivantes :

    • OAEP avec SHA1, SHA256, SHA384 ou SHA512

    • OAEP avec SHA1 et MGF1 avec SHA1

    • PKCS1v15

  • Avant la version 12.9.0, Node.js ne prend en charge que les options d'encapsulage de clé RSA suivantes :

    • OAEP avec SHA1 et MGF1 avec SHA1

    • PKCS1v15

Compatibilité des navigateurs

Certains navigateurs web ne prennent pas en charge les opérations de chiffrement de base requises par Kit SDK de chiffrement AWS pour JavaScript. Vous pouvez compenser certaines opérations manquantes en configurant un repli pour leWebCryptoAPI implémentée par le navigateur.

Limites du navigateur web

Les limitations suivantes sont communes à tous les navigateurs web :

  • LeWebCryptoL'API ne prend pas en charge l'encapsulage de clé PKCS1v15.

  • Les navigateurs ne prennent pas en charge les clés 192 bits.

Opérations de chiffrement requises

Le kit Kit SDK de chiffrement AWS pour JavaScript nécessite les opérations suivantes dans les navigateurs web. Si un navigateur ne prend pas en charge ces opérations, il est incompatible avec le kit Kit SDK de chiffrement AWS pour JavaScript.

  • Le navigateur doit inclure le kit crypto.getRandomValues(), qui est une méthode pour générer des valeurs cryptographiquement aléatoires. Pour de plus amples informations sur les versions de navigateur web qui prennent en chargecrypto.getRandomValues(), voirPuis-je utiliser crypto.getRandomValues() ?.

Repli requis

Le kit Kit SDK de chiffrement AWS pour JavaScript nécessite les bibliothèques et opérations suivantes dans les navigateurs web. Si vous prenez en charge un navigateur web qui ne répond pas à ces exigences, vous devez configurer une solution de secours. Sinon, les tentatives d'utilisation du kit Kit SDK de chiffrement AWS pour JavaScript avec le navigateur échoueront.

  • LeWebCryptoL'API, qui effectue des opérations cryptographiques de base dans les applications web, n'est pas disponible pour tous les navigateurs. Pour de plus amples informations sur les versions de navigateur web qui prennent en charge le chiffrement web, veuillez consulter Puis-je utiliser le chiffrement web ?.

  • Les versions modernes du navigateur web Safari ne prennent pas en charge le chiffrement AES-GCM de zéro octets, requis par le kit AWS Encryption SDK. Si le navigateur implémente l'optionWebCryptomais ne peut pas utiliser AES-GCM pour chiffrer zéro octet,Kit SDK de chiffrement AWS pour JavaScriptutilise la bibliothèque de secours uniquement pour le chiffrement zéro octet. Il utilise leWebCryptoAPI pour toutes les autres opérations.

Pour configurer une solution de secours pour l'une ou l'autre limitation, ajoutez les instructions suivantes à votre code. Dans la fonction configureFallback, spécifiez une bibliothèque qui prend en charge les fonctions manquantes. L'exemple suivant repose sur Microsoft ResearchJavaScriptBibliothèque de chiffrement (msrcrypto), mais vous pouvez le remplacer par une bibliothèque compatible. Pour un exemple complet, veuillez consulter fallback.ts.

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