Kompatibilität des AWS-Verschlüsselungs-SDK for JavaScript - AWS Encryption SDK

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Kompatibilität des AWS-Verschlüsselungs-SDK for JavaScript

Das AWS-Verschlüsselungs-SDK for JavaScript ist so konzipiert, dass es mit anderen Sprachenimplementierungen des AWS Encryption SDK kompatibel ist. In den meisten Fällen können Sie Daten mit dem AWS-Verschlüsselungs-SDK for JavaScript verschlüsseln und mit jeder anderen Sprachenimplementierung, einschließlich der AWS Encryption SDK-Befehlszeilenschnittstelle entschlüsseln. Und Sie können das AWS-Verschlüsselungs-SDK for JavaScript verwenden, um verschlüsselte Nachrichten zu entschlüsseln, die von anderen Sprachenimplementierungen des AWS Encryption SDK erzeugt werden.

Wenn Sie jedoch das AWS-Verschlüsselungs-SDK for JavaScript verwenden, müssen Sie einige Kompatibilitätsprobleme in der JavaScript-Sprachenimplementierung und in Webbrowsern beachten.

Wenn Sie verschiedene Sprachenimplementierungen verwenden, achten Sie außerdem darauf, kompatible Hauptschlüsselanbieter, Hauptschlüssel und Schlüsselbunde zu konfigurieren. Details hierzu finden Sie unter Schlüsselbund-Kompatibilität.

AWS-Verschlüsselungs-SDK for JavaScript-Kompatibilität

Die JavaScript-Implementierung des AWS Encryption SDK unterscheidet sich von anderen Sprachenimplementierungen auf folgende Weise:

  • Die Verschlüsselungsoperation des AWS-Verschlüsselungs-SDK for JavaScript gibt keinen Verschlüsselungstext ohne Frame zurück. Das AWS-Verschlüsselungs-SDK for JavaScript entschlüsselt jedoch Verschlüsselungstext mit und ohne Frame, der von anderen Sprachenimplementierungen des AWS Encryption SDK zurückgegeben wird.

  • Ab Node.js-Version 12.9.0 unterstützt Node.js die folgenden RSA-Schlüsselumhüllungsoptionen:

    • OAEP mit SHA1, SHA256, SHA384 oder SHA512

    • OAEP mit SHA1 und MGF1 mit SHA1

    • PKCS1v15

  • Vor Version 12.9.0 unterstützt Node.js nur die folgenden RSA-Schlüsselumhüllungsoptionen:

    • OAEP mit SHA1 und MGF1 mit SHA1

    • PKCS1v15

Browserkompatibilität

Einige Webbrowser unterstützen keine grundlegenden kryptografischen Operationen, die für das AWS-Verschlüsselungs-SDK for JavaScript erforderlich sind. Sie können einige der fehlenden Operationen kompensieren, indem Sie einen Fallback für dieWebCryptoAPI, die der Browser implementiert.

Webbrowser-Einschränkungen

Die folgenden Einschränkungen gelten für alle Webbrowser:

  • DieWebCryptoDie API unterstützt keine Schlüsselumhüllung von PKCS1v15.

  • Browser unterstützen keine 192-Bit-Schlüssel.

Erforderliche kryptografische Operationen

Das AWS-Verschlüsselungs-SDK for JavaScript erfordert die folgenden Operationen in Webbrowsern. Wenn ein Browser diese Operationen nicht unterstützt, ist er nicht mit dem AWS-Verschlüsselungs-SDK for JavaScript kompatibel.

  • Der Browser muss crypto.getRandomValues() enthalten, was eine Methode zum Generieren kryptografisch zufälliger Werte ist. Weitere Informationen zu den Webbrowser-Versionen, die unterstützencrypto.getRandomValues(), finden Sie unterKann ich Krypto verwenden.getRandomValues()?aus.

Erforderlicher Fallback

Das AWS-Verschlüsselungs-SDK for JavaScript erfordert die folgenden Bibliotheken und Operationen in Webbrowsern. Wenn Sie einen Webbrowser unterstützen, der diese Anforderungen nicht erfüllt, müssen Sie einen Fallback konfigurieren. Andernfalls schlagen Versuche, das AWS-Verschlüsselungs-SDK for JavaScript mit dem Browser zu verwenden, fehl.

  • DieWebCryptoDie API, die grundlegende kryptografische Operationen in Webanwendungen durchführt, ist nicht für alle Browser verfügbar. Weitere Informationen zu den Webbrowser-Versionen, die Web-Kryptografie unterstützen, finden Sie unter Kann ich Web-Kryptografie verwenden?.

  • Moderne Versionen des Safari-Webbrowsers unterstützen keine AES-GCM-Verschlüsselung von Null-Bytes, was das AWS Encryption SDK erfordert. Wenn der Browser dasWebCryptoAPI, aber AES-GCM nicht zum Verschlüsseln von Null-Bytes verwenden kannAWS-Verschlüsselungs-SDK for JavaScriptverwendet die Fallback-Bibliothek nur für die Nullbyte-Verschlüsselung. Es benutzt dasWebCryptoAPI für alle anderen Operationen.

Um einen Fallback für eine der Einschränkungen zu konfigurieren, fügen Sie die folgenden Anweisungen zu Ihrem Code hinzu. Geben Sie in der Funktion configureFallback eine Bibliothek an, die die fehlenden Funktionen unterstützt. Im folgenden Beispiel wird Microsoft Research verwendetJavaScriptKryptografie-Bibliothek (msrcrypto), aber Sie können es durch eine kompatible Bibliothek ersetzen. Ein vollständiges Beispiel finden Sie unter fallback.ts.

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