

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

# JCE SDK for の既知の問題 AWS CloudHSM
<a name="ki-jce-sdk"></a>

次の問題は JCE SDK for に影響します AWS CloudHSM。

**Topics**
+ [問題: 非対称キーペアを使用する場合、明示的にキーを作成またはインポートしない場合でも、キー容量が占有されます。](#ki-jce-1)
+ [問題: JCE KeyStore は読み取り専用です](#ki-jce-3)
+ [問題: AES-GCM 暗号化のバッファが 16,000 バイトを超えることはできません](#ki-jce-4)
+ [問題: 楕円曲線ディフィーヘルマン (ECDH) キーの導出が、HSM 内で部分的に実行されます](#ki-jce-5)
+ [問題: KeyGenerator と KeyAttribute がキーサイズパラメータをビット数ではなくバイト数として誤って解釈します](#ki-jce-6)
+ [問題: クライアント SDK 5 から「不正な反射アクセスオペレーションが発生しました」という警告が表示されます](#ki-jce-7)
+ [問題: JCE セッションプールが使い果たされています](#ki-jce-8)
+ [問題: getKey 操作によるクライアント SDK 5 メモリリーク](#ki-jce-9)

## 問題: 非対称キーペアを使用する場合、明示的にキーを作成またはインポートしない場合でも、キー容量が占有されます。
<a name="ki-jce-1"></a>
+ **影響: **この問題により、HSM が予期せずキー領域を使い果たすことがあります。この問題は、アプリケーションが暗号化オペレーションに `CaviumKey` オブジェクトではなく標準の JCE キーオブジェクトを使用する場合に発生します。標準の JCE キーオブジェクトを使用する場合、`CaviumProvider` によって暗黙的にそのキーが HSM にインポートされ、アプリケーションが終了するまでセッションキーによってこのキーは削除されません。その結果、アプリケーションの実行中にキーが蓄積され、HSM の空きキー領域が不足して、アプリケーションがフリーズする可能性があります。
+ **回避策: **`CaviumSignature` クラス、`CaviumCipher` クラス、`CaviumMac` クラス、または `CaviumKeyAgreement` クラスを使用する場合は、標準の JCE キーオブジェクトではなく `CaviumKey` としてキーを指定してください。

  [https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/master/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/master/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java) クラスを使用して通常のキーを `ImportKey` に手動で変更し、オペレーションの完了後にキーを手動で削除できます。
+ **解決策のステータス: **暗黙的なインポートを適切に管理するために、`CaviumProvider` を更新中です。修正は、利用可能なバージョン履歴ページで告知されます。

## 問題: JCE KeyStore は読み取り専用です
<a name="ki-jce-3"></a>
+ **影響: **現在、HSM でサポートされていないオブジェクトタイプを JCE KeyStore に保存することはできません。具体的には、キーストアに証明書を保存することはできません。これにより、キーストア内で証明書を見つけることを期待する jarsigner などのツールとの相互運用性が妨げられます。
+ [**Workaround**(回避策)]: キーストアではなく、ローカルファイルまたは S3 バケットの場所から証明書をロードするようにコードを修正することができます。
+ **解決ステータス: ** AWS CloudHSM キーストアを使用して証明書を保存できます。

## 問題: AES-GCM 暗号化のバッファが 16,000 バイトを超えることはできません
<a name="ki-jce-4"></a>

マルチパート AES-GCM 暗号化は対応していません。
+ **影響 :** AES-GCM を使用して 16,000 バイトを超えるデータを暗号化することができません。
+ **回避策: **AES-CBC などの代替メカニズムを使用するか、データを複数部分に分割して各部分を別々に暗号化できます。データを分割する場合、分割された暗号化テキストとその復号化を管理する必要があります。FIPS では AES-GCM の初期化ベクター (IV) を HSM で生成する必要があるため、AES-GCM で暗号化された部分的データはそれぞれ IV が異なります。
+ **解決策のステータス: ** SDK を修正し、データバッファが大きすぎる場合は明示的に失敗するようにします。マルチパート暗号化を使用しなくても大きいバッファをサポートできる代替方法を評価しています。更新は AWS CloudHSM フォーラムとバージョン履歴ページで告知されます。

## 問題: 楕円曲線ディフィーヘルマン (ECDH) キーの導出が、HSM 内で部分的に実行されます
<a name="ki-jce-5"></a>

EC プライベートキーは常に HSM にありますが、キーの取得手順は複数のステップで実行されます。その結果、各ステップの中間結果がクライアントに存在します。ECDH キー導出サンプルは [Java コードサンプル](java-samples_3.md)で入手できます。
+ **影響: ** クライアント SDK 3 により、JCE に ECDH 機能が追加されました。`KeyAgreement` クラスを使用して SecretKey を取得すると、最初にクライアントで使用可能になり、HSM にインポートされます。その後、キーのハンドルがアプリケーションに返されます。
+ **回避策: **で SSL/TLS オフロードを実装している場合 AWS CloudHSM、この制限は問題ではない可能性があります。アプリケーションでキーが常に FIPS 境界内に留まる必要がある場合、ECDH キー取得に依存しない代替プロトコルの使用を検討してください。
+ **解決策のステータス: **SDK 5.16 は、ECDH とキー導出をサポートしており、これらの処理はすべて HSM 内で実行されます。

## 問題: KeyGenerator と KeyAttribute がキーサイズパラメータをビット数ではなくバイト数として誤って解釈します
<a name="ki-jce-6"></a>

[KeyGenerator クラス](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/KeyGenerator.html#init(int))の `init` 関数または [AWS CloudHSM KeyAttribute 列挙値](java-lib-attributes_5.md)の `SIZE` 属性を使用してキーを生成する場合、API は引数がキービット数であるべきところ、キーバイト数であると誤って想定します。
+ **影響: **クライアント SDK バージョン 5.4.0～5.4.2 では、指定した API にキーサイズがバイトとして提供されることを誤って想定しています。
+ **回避策: **クライアント SDK バージョン 5.4.0 から 5.4.2 を使用している場合、KeyGenerator クラスまたは KeyAttribute 列挙を使用して AWS CloudHSM JCE プロバイダーを使用してキーを生成する前に、キーサイズをビットからバイトに変換します。
+ **解決策のステータス: **クライアント SDK バージョンを 5.5.0 以降にアップグレードしてください。これには、KeyGenerator クラスまたは KeyAttribute 列挙値を使用してキーを生成するときに、キーサイズがビット単位であることを正しく想定する修正が含まれています。

## 問題: クライアント SDK 5 から「不正な反射アクセスオペレーションが発生しました」という警告が表示されます
<a name="ki-jce-7"></a>

Java 11 でクライアント SDK 5 を使用すると、CloudHSM から次の 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
```

この問題は、クライアント SDK バージョン 5.8 以降で修正されています。

**注記**  
OpenJDK 11 はサポートされなくなりました。クライアント SDK 5.17.1 は、OpenJDK 11 をサポートする最後のリリースです。

## 問題: JCE セッションプールが使い果たされています
<a name="ki-jce-8"></a>

**影響:** 次のメッセージが表示されると、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 オペレーションを完了する必要がある場合があります。
**注記**  
オペレーションによっては、完了方法が必要な場合があります。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/cloudhsm/latest/userguide/ki-jce-sdk.html)

**解決策のステータス: **この問題は、クライアント SDK 5.9.0 以降で解決に向けて積極的に取り組んでいます。この問題を解決するには、クライアント SDK を以下のバージョンのいずれかにアップグレードしてください。

## 問題: getKey 操作によるクライアント SDK 5 メモリリーク
<a name="ki-jce-9"></a>
+ **影響: **API `getKey` オペレーションには、クライアント SDK バージョン 5.10.0 以前の JCE でメモリリークがあります。アプリケーションで `getKey` API を複数回使用している場合、メモリの増加につながり、その結果、アプリケーションのメモリフットプリントが増加します。時間が経つと、スロットリングエラーが発生したり、アプリケーションの再起動が必要になる場合があります。
+ **回避策: **クライアント SDK 5.11.0 にアップグレードすることをお勧めします。アップグレードができない場合は、アプリケーションで `getKey` API を複数回呼び出さないことをお勧めします。代わりに、以前の `getKey` オペレーションから以前に返されたキーを可能な限り再利用します。
+ **解決策のステータス: **クライアント SDK バージョンを 5.11.0 以降にアップグレードします。これには、この問題の修正が含まれています。