AWS Encryption SDK for JavaScript の互換性 - AWS Encryption SDK

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Encryption SDK for JavaScript の互換性

AWS Encryption SDK for JavaScript は、AWS Encryption SDK の他の言語の実装と相互運用できるように設計されています。ほとんどの場合、AWS Encryption SDK for JavaScript でデータを暗号化して、他の言語の実装 (AWS Encryption SDK コマンドラインインターフェイスを含む) で復号することができます。AWS Encryption SDK の他の言語実装によって生成された暗号化されたメッセージを復号するには、AWS Encryption SDK for JavaScript を使用することもできます。

ただし、AWS Encryption SDK for JavaScript を使用する場合は、JavaScript 言語の実装とウェブブラウザのいくつかの互換性の問題に注意する必要があります。

また、他の言語の実装を使用する場合は、必ず互換性のあるマスターキープロバイダー、マスターキー、キーリングを設定してください。詳細については、「キーリングの互換性」を参照してください。

AWS Encryption SDK for JavaScript の互換性

AWS Encryption SDK の JavaScript の実装は、以下の点で他の言語の実装と異なります。

  • AWS Encryption SDK for JavaScript の暗号化オペレーションでは、フレーム化されていない暗号化テキストは返されません。ただし、AWS Encryption SDK for JavaScript は、AWS Encryption SDK の他の言語の実装から返されたフレーム化された暗号化テキストとフレーム化されていない暗号化テキストを復号します。

  • Node.js のバージョン 12.9.0 以降で、以下の RSA キーのラッピングオプションをサポートしています。

    • OAEP と SHA1、SHA256、SHA384、SHA512

    • OAEP と SHA1 および MGF1 と SHA1

    • PKCS1v15

  • バージョン 12.9.0 より前の Node.js では、以下の RSA キーのラッピングオプションのみをサポートしています。

    • OAEP と SHA1 および MGF1 と SHA1

    • PKCS1v15

ブラウザの互換性

ウェブブラウザによっては、AWS Encryption SDK for JavaScript が必要とする基本的な暗号化オペレーションがサポートされていません。ブラウザが実装している WebCrypto API のフォールバックを設定することで、不足しているオペレーションの一部を補うことができます。

ウェブブラウザの制限事項

以下の制限は、すべてのウェブブラウザに共通です。

  • WebCrypto API では、PKCS1v15 のキーのラッピングはサポートされていません。

  • ブラウザでは、192 ビットキーはサポートされていません。

必要な暗号化オペレーション

AWS Encryption SDK for JavaScript は、ウェブブラウザで以下のオペレーションを必要とします。ブラウザでこれらのオペレーションがサポートされていない場合は、AWS Encryption SDK for JavaScript との互換性がありません。

  • ブラウザには、暗号化の乱数を生成するメソッドである crypto.getRandomValues() が含まれている必要があります。crypto.getRandomValues() をサポートしているウェブブラウザのバージョンについては、「Can I Use crypto.getRandomValues()?」を参照してください。

必要なフォールバック

AWS Encryption SDK for JavaScript は、ウェブブラウザで以下のライブラリとオペレーションを必要とします。これらの要件を満たしていないウェブブラウザをサポートする場合は、フォールバックを設定する必要があります。設定しない場合、そのブラウザで AWS Encryption SDK for JavaScript を使用しようとすると失敗します。

  • ウェブアプリケーションで基本的な暗号化オペレーションを行う WebCrypto API は、すべてのブラウザで使用できるわけではありません。ウェブでの暗号化をサポートしているウェブブラウザのバージョンについては、「Can I Use Web Cryptography?」を参照してください。

  • Safari ウェブブラウザの最近のバージョンでは、AWS Encryption SDK が必要とする AES-GCM での 0 バイトの暗号化がサポートされていません。ブラウザが WebCrypto API を実装していても AES-GCM での 0 バイトの暗号化を使用できない場合、AWS Encryption SDK for JavaScript はフォールバックライブラリを 0 バイトの暗号化にのみ使用します。他のすべてのオペレーションには、WebCrypto API を使用します。

いずれかの制限のフォールバックを設定するには、コードに次のステートメントを追加します。configureFallback 関数に不足している機能をサポートするライブラリを指定します。この例では、マイクロソフトリサーチの JavaScript 暗号化ライブラリ (msrcrypto) を使用していますが、互換性のあるライブラリに置き換えることができます。詳しい例については、fallback.ts を参照してください。

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