適用於 JavaScript 的 AWS Encryption SDK 的相容性 - AWS Encryption SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 JavaScript 的 AWS Encryption SDK 的相容性

適用於 JavaScript 的 AWS Encryption SDK 的設計是為了與 AWS Encryption SDK 的其他語言實作互通。在大多數情況下,您可以使用 適用於 JavaScript 的 AWS Encryption SDK 加密資料,並使用任何其他語言實作 (包括 AWS Encryption SDK 命令列介面) 來解密資料。並且您可以使用適用於 JavaScript 的 AWS Encryption SDK解密已加密的訊息由其他語言實現AWS Encryption SDK。

但是,當您使用 適用於 JavaScript 的 AWS Encryption SDK 時,您需要注意語言 JavaScript 實作和 Web 瀏覽器中的一些相容性問題。

此外,使用不同的語言實作時,請務必設定相容的主密鑰提供程式、主密鑰和鑰環。如需詳細資訊,請參閱 Keyring 相容性

適用於 JavaScript 的 AWS Encryption SDK 相容性

AWS Encryption SDK 的 JavaScript 實作與其他語言實作在下列方面有所不同:

  • 適用於 JavaScript 的 AWS Encryption SDK 的加密操作不會傳回無框架加密文字。但是,適用於 JavaScript 的 AWS Encryption SDK 會將 AWS Encryption SDK 的其他語言實作傳回的框架和無框架加密文字解密。

  • 從 Node.js 版本 12.9.0 開始,Node.js 支援以下 RSA 金鑰包裝選項:

    • 具有 SHA1、SHA256、SHA384 或 SHA512 的 OAEP

    • 具有 SHA1 的 OAEP 和具有 SHA1 的 MGF1

    • PKCS1v15

  • 在版本 12.9.0 之前,Node.js 僅支援以下 RSA 金鑰包裝選項:

    • 具有 SHA1 的 OAEP 和具有 SHA1 的 MGF1

    • PKCS1v15

瀏覽器相容性

某些 Web 瀏覽器不支援 適用於 JavaScript 的 AWS Encryption SDK 所需的基本密碼編譯操作。如需設定備用程式,您可以彌補部分遺漏的操作。WebCrypto瀏覽器實現的 API。

Web 瀏覽器限制

下列限制為所有 Web 瀏覽器通用:

  • 所以此WebCryptoAPI 不支援 PKCS1v15 金鑰包裝。

  • 瀏覽器不支援 192 位元金鑰。

必要的密碼編譯操作

適用於 JavaScript 的 AWS Encryption SDK 需要在 Web 瀏覽器中執行以下操作。如果瀏覽器不支援這些操作,則它與 適用於 JavaScript 的 AWS Encryption SDK 相容。

必要的備用

適用於 JavaScript 的 AWS Encryption SDK 需要下列程式庫並在 Web 瀏覽器中執行以下操作。如果您支援不符合這些需求的 Web 瀏覽器,則必須設定備用。否則,嘗試使用 適用於 JavaScript 的 AWS Encryption SDK 搭配瀏覽器將會失敗。

  • 所以此WebCryptoAPI 會在 Web 應用程式中執行基本密碼編譯操作,但並非可在所有瀏覽器上使用。如需支援 Web 密碼編譯的 Web 瀏覽器版本的相關資訊,請參閱我可以使用 Web 密碼編譯嗎?

  • Safari Web 瀏覽器的現代版本不支援零位元組的 AES-GCM 加密,而這是 AWS Encryption SDK 所需。如果瀏覽器實現WebCryptoAPI,但無法使用 AES-GCM 來加密零位元組,適用於 JavaScript 的 AWS Encryption SDK僅使用回退庫進行零字節加密。它使用WebCryptoAPI 進行所有其他操作。

若要設定任一限制的備用,請將下列陳述式新增至您的程式碼。在 configureFallback 函數中,指定支援遺漏功能的程式庫。下列範例使用 Microsoft ResearchJavaScript密碼編譯庫 (msrcrypto),但是您可以以相容的程式庫取代它。如需完整範例,請參閱 fallback.ts

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