for JCESDKの既知の問題 AWS CloudHSM - AWS CloudHSM

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

for JCESDKの既知の問題 AWS CloudHSM

以下の問題は、 JCESDKの に影響します AWS CloudHSM。

問題: 非対称キーペアを使用する場合、明示的にキーを作成またはインポートしない場合でも、キー容量が占有されます。

  • 影響: この問題により、 HSMsが予期せずキースペースを使い果たす可能性があり、アプリケーションがオブジェクトの代わりに暗号化オペレーションに標準JCEキーCaviumKeyオブジェクトを使用する場合に発生します。標準JCEキーオブジェクトを使用する場合、 はそのキーをセッションキーHSMとして CaviumProvider に暗黙的にインポートし、アプリケーションが終了するまでこのキーを削除しません。その結果、アプリケーションの実行中にキーが蓄積され、 の空きキー領域がHSMs不足して、アプリケーションがフリーズする可能性があります。

  • 回避策: CaviumSignature クラス、CaviumCipherクラス、CaviumMacクラス、またはCaviumKeyAgreementクラスを使用する場合は、標準キーオブジェクトCaviumKeyの代わりにJCEキーを として指定する必要があります。

    CaviumKey クラスを使用して通常のキーを ImportKey に手動で変更し、オペレーションの完了後にキーを手動で削除できます。

  • 解決策のステータス: 暗黙的なインポートを適切に管理するために、CaviumProvider を更新中です。修正は、利用可能なバージョン履歴ページで告知されます。

問題: JCE KeyStore は読み取り専用です

  • 影響: 現在、 でサポートされていないオブジェクトタイプをJCEキーストアHSMに保存することはできません。具体的には、キーストアに証明書を保存することはできません。これにより、キーストア内で証明書を見つけることを期待する jarsigner などのツールとの相互運用性が妨げられます。

  • [Workaround(回避策)]: キーストアではなく、ローカルファイルまたは S3 バケットの場所から証明書をロードするようにコードを修正することができます。

  • [Resolution status( 解決策のステータス )]: キーストアに証明書ストレージのサポートを追加しています。機能は、利用可能なバージョン履歴ページで告知されます。

問題: のバッファ AES-GCM 暗号化は 16,000 バイトを超えることはできません

マルチパート AES-GCM 暗号化はサポートされていません。

  • 影響: AES-GCM を使用して 16,000 バイトを超えるデータを暗号化することはできません。

  • 回避策: AES- などの代替メカニズムを使用するかCBC、データを分割して各ピースを個別に暗号化できます。データを分割する場合、分割された暗号化テキストとその復号化を管理する必要があります。FIPS では AES-GCM の初期化ベクトル (IV) を で生成する必要があるためHSM、データの各 AES-GCM-encrypted部分の IV は異なります。

  • 解決ステータス: データバッファが大きすぎる場合、明示的に失敗SDKするように を修正しています。マルチパート暗号化を使用しなくても大きいバッファをサポートできる代替方法を評価しています。更新は AWS CloudHSM フォーラムとバージョン履歴ページで告知されます。

問題: 楕円曲線 Diffie-Hellman (ECDH) キー導出が 内で部分的に実行される HSM

EC プライベートキーHSMは常に 内に残りますが、キー導出プロセスは複数のステップで実行されます。その結果、各ステップの中間結果がクライアントに存在します。ECDH キー派生サンプルは、Java コードサンプル で使用できます。

  • 影響: クライアント SDK 3 は にECDH機能を追加しますJCE。KeyAgreement クラスを使用して を導き出すと SecretKey、まずクライアントで使用でき、次に にインポートされますHSM。その後、キーのハンドルがアプリケーションに返されます。

  • 回避策: で SSL/TLS オフロードを実装している場合 AWS CloudHSM、この制限は問題ではない可能性があります。アプリケーションが常に境界内にキーを保持する必要がある場合はFIPS、ECDHキー導出に依存しない代替プロトコルの使用を検討してください。

  • 解決ステータス: 内で完全にECDHキー派生を実行するオプションを開発中ですHSM。利用可能な場合は、バージョン履歴ページで更新された実装をお知らせします。

問題: KeyGenerator キーサイズパラメータをビットではなくバイト数として KeyAttribute 誤って解釈する

クラス の init関数KeyGenerator または AWS CloudHSM KeyAttribute 列挙型の SIZE 属性 を使用してキーを生成する場合、 は引数がキーバイト数であるとAPI誤って想定します。代わりにキービット数である必要があります。

  • 影響: クライアントSDKバージョン 5.4.0 から 5.4.2 では、キーサイズがバイトAPIsとして指定された に提供されることを誤って想定しています。

  • 回避策: クライアントSDKバージョン 5.4.0 から 5.4.2 を使用している場合、 KeyGenerator クラスまたは KeyAttribute 列挙型を使用する前にキーサイズをビットからバイトに変換して、 AWS CloudHSM JCEプロバイダーを使用してキーを生成します。

  • 解決ステータス: クライアントSDKバージョンを 5.5.0 以降にアップグレードします。これには、 KeyGenerator クラスまたは KeyAttribute 列挙型を使用してキーを生成するときに、ビット単位でキーサイズを正しく想定するための修正が含まれています。

問題: クライアント SDK 5 が「不正な反射アクセスオペレーションが発生した」という警告をスローする

Java 11 SDK でクライアント 5 を使用する場合、クラウドHSMは次の Java 警告をスローします。

``` WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore (file:/opt/cloudhsm/java/cloudhsm-jce-5.6.0.jar) to field java.security .KeyStore.keyStoreSpi WARNING: Please consider reporting this to the maintainers of com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ```

これらの警告は影響しません。この問題は認識済みであり、現在、問題の解決に取り組んでいます。解決策も回避策も必要ありません。

問題: JCEセッションプールが枯渇している

影響: 次のメッセージが表示されJCEた後、 でオペレーションを実行できない場合があります。

com.amazonaws.cloudhsm.jce.jni.exception.InternalException: There are too many operations happening at the same time: Reached max number of sessions in session pool: 1000

回避方法:

  • 影響が発生した場合は、JCEアプリケーションを再起動します。

  • オペレーションを実行する場合、JCEオペレーションへの参照を失う前にオペレーションを完了する必要がある場合があります。

    注記

    オペレーションによっては、完了方法が必要な場合があります。

    操作 完了方法
    暗号

    暗号化モードまたは復号モードの doFinal()

    ラップモードの wrap()

    アンラップモードの unwrap()

    KeyAgreement

    generateSecret()、または generateSecret(String)

    KeyPairGenerator

    generateKeyPair()genKeyPair()、または reset()

    KeyStore メソッド不要
    MAC

    doFinal() 、、または reset()

    MessageDigest

    digest() 、、または reset()

    SecretKeyFactory メソッド不要
    SecureRandom メソッド不要
    署名

    サインモードの sign()

    検証モードの verify()

解決ステータス: この問題はクライアント 5.9.0 SDK 以降で解決されました。この問題を修正するには、クライアントSDKをこれらのバージョンのいずれかにアップグレードします。

問題: SDK getKey オペレーションによるクライアント 5 メモリリーク

  • 影響: APIgetKeyオペレーションには、クライアントSDKバージョン 5.10.0 以前の JCE でメモリリークがあります。アプリケーションで をgetKeyAPI複数回使用すると、メモリの増加につながり、その結果、アプリケーションのメモリフットプリントが増加します。時間が経つと、スロットリングエラーが発生したり、アプリケーションの再起動が必要になることがあります。

  • 回避策: クライアント 5.11.0 SDK にアップグレードすることをお勧めします。これができない場合は、アプリケーションで をgetKeyAPI複数回呼び出さないことをお勧めします。代わりに、以前のgetKeyオペレーションから以前に返されたキーを可能な限り再利用します。

  • 解決ステータス: クライアントSDKバージョンを 5.11.0 以降にアップグレードします。これには、この問題の修正が含まれています。