

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

# AWS CloudHSM クライアント SDK 5 の JCE プロバイダーでサポートされているメカニズム
<a name="java-lib-supported_5"></a>

このトピックでは、 AWS CloudHSM クライアント SDK 5 で JCE プロバイダーでサポートされているメカニズムについて説明します。でサポートされている Java 暗号化アーキテクチャ (JCA) インターフェイスとエンジンクラスの詳細については AWS CloudHSM、以下のトピックを参照してください。

**Topics**
+ [キーとキーペアの関数を生成する](#java-gen-key-pairs-5)
+ [暗号関数](#java-ciphers_5)
+ [署名および検証](#java-sign-verify_5)
+ [ダイジェスト関数](#java-digests_5)
+ [Hash-based Message Authentication Code (HMAC) 関数](#java-mac_5)
+ [暗号ベースのメッセージ認証コード (CMAC) 関数](#java-cmac_5)
+ [キー共有機能](#java-key-derivation_5)
+ [キーファクトリを使用してキーをキー仕様に変換します](#java-key-factories)
+ [メカニズムの注釈](#w2aac25c21c25c15c23)

## キーとキーペアの関数を生成する
<a name="java-gen-key-pairs-5"></a>

Java 用 AWS CloudHSM ソフトウェアライブラリでは、次のオペレーションを使用してキーとキーペア関数を生成できます。
+ `RSA`
+ `EC`
+ `AES`
+ `DESede (Triple DES)`注記「[1](#java-gen-key-pairs-5-note-1)」を参照
+ `GenericSecret`

## 暗号関数
<a name="java-ciphers_5"></a>

Java 用 AWS CloudHSM ソフトウェアライブラリは、次のアルゴリズム、モード、パディングの組み合わせをサポートしています。


| アルゴリズム | モード | [Padding] (パディング) | 注意事項 | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  |  `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。 `Cipher.UNWRAP_MODE for AES/CBC NoPadding` を実装します  | 
| AES | ECB |  `AES/ECB/PKCS5Padding` `AES/ECB/NoPadding`  | `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。  | 
| AES | CTR |  `AES/CTR/NoPadding`  |  `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。  | 
| AES | GCM | `AES/GCM/NoPadding` | `Cipher.WRAP_MODE`、`Cipher.UNWRAP_MODE`、`Cipher.ENCRYPT_MODE`、および `Cipher.DECRYPT_MODE` を実装します。AES-GCM 暗号化の実行時に、HSM はリクエスト内の初期化ベクトル (IV) を無視し、独自に IV を生成して使用します。オペレーションが完了したら、`Cipher.getIV()` を呼び出して IV を取得する必要があります。 | 
| AESWrap | ECB |  `AESWrap/ECB/NoPadding` `AESWrap/ECB/PKCS5Padding` `AESWrap/ECB/ZeroPadding`  | `Cipher.WRAP_MODE` および `Cipher.UNWRAP_MODE` を実装します。  | 
| DESede (Triple DES) | CBC |  `DESede/CBC/PKCS5Padding` `DESede/CBC/NoPadding`  |  `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。今後の変更については、以下の注記「[1](#java-gen-key-pairs-5-note-1)」を参照してください。  | 
| DESede (Triple DES) | ECB |  `DESede/ECB/NoPadding` `DESede/ECB/PKCS5Padding`  | `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。今後の変更については、以下の注記「[1](#java-gen-key-pairs-5-note-1)」を参照してください。  | 
| RSA | ECB | `RSA/ECB/PKCS1Padding` **注記「[1](#java-gen-key-pairs-5-note-1)」を参照** `RSA/ECB/OAEPPadding` `RSA/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-512ANDMGF1Padding`  |  `Cipher.WRAP_MODE`、`Cipher.UNWRAP_MODE`、`Cipher.ENCRYPT_MODE`、および `Cipher.DECRYPT_MODE` を実装します。  | 
| RSA | ECB | `RSA/ECB/NoPadding` |  `Cipher.ENCRYPT_MODE` および `Cipher.DECRYPT_MODE` を実装します。  | 
| RSAAESWrap | ECB |  `RSAAESWrap/ECB/OAEPPadding` `RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding`  | `Cipher.WRAP_MODE` および `Cipher.UNWRAP_MODE` を実装します。  | 

## 署名および検証
<a name="java-sign-verify_5"></a>

Java 用 AWS CloudHSM ソフトウェアライブラリは、次のタイプの署名と検証をサポートしています。クライアント SDK 5 とハッシュ機能付きの署名アルゴリズムでは、データはソフトウェアでローカルにハッシュされてから、署名/検証のために HSM に送信されます。つまり、SDK でハッシュできるデータのサイズに制限はありません。

**RSA 署名タイプ**
+ `NONEwithRSA`
+ `RSASSA-PSS`
+ `SHA1withRSA`
+ `SHA1withRSA/PSS`
+ `SHA1withRSAandMGF1`
+ `SHA224withRSA`
+ `SHA224withRSAandMGF1`
+ `SHA224withRSA/PSS`
+ `SHA256withRSA`
+ `SHA256withRSAandMGF1`
+ `SHA256withRSA/PSS`
+ `SHA384withRSA`
+ `SHA384withRSAandMGF1`
+ `SHA384withRSA/PSS`
+ `SHA512withRSA`
+ `SHA512withRSAandMGF1`
+ `SHA512withRSA/PSS`

**ECDSA 署名タイプ**
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

## ダイジェスト関数
<a name="java-digests_5"></a>

Java 用 AWS CloudHSM ソフトウェアライブラリは、次のメッセージダイジェストをサポートしています。クライアント SDK 5 では、データはソフトウェアでローカルにハッシュされます。つまり、SDK でハッシュできるデータのサイズに制限はありません。
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Hash-based Message Authentication Code (HMAC) 関数
<a name="java-mac_5"></a>

Java 用の AWS CloudHSM ソフトウェアライブラリは、次の HMAC アルゴリズムをサポートしています。
+ `HmacSHA1` (最大データサイズ (バイト): 16288)
+ `HmacSHA224` (最大データサイズ (バイト): 16256)
+ `HmacSHA256` (最大データサイズ (バイト): 16288)
+ `HmacSHA384` (最大データサイズ (バイト): 16224)
+ `HmacSHA512` (最大データサイズ (バイト): 16224)

## 暗号ベースのメッセージ認証コード (CMAC) 関数
<a name="java-cmac_5"></a>

CMAC (暗号ベースのメッセージ認証コード) は、ブロック暗号とシークレットキーを使用してメッセージ認証コード (MAC) を作成します。HMAC とは異なり、MAC にはハッシュ方式ではなくブロック対称キーメソッドを使用します。

Java 用 AWS CloudHSM ソフトウェアライブラリは、次の CMAC アルゴリズムをサポートしています。
+ `AESCMAC`

## キー共有機能
<a name="java-key-derivation_5"></a>

Java 用の AWS CloudHSM ソフトウェアライブラリは、Key Derivation Functions (KDF) を使用した ECDH をサポートしています。サポートされている KDF の種類は次のとおりです。
+ `ECDHwithX963SHA1KDF` X9.63 KDF (SHA1 アルゴリズム) をサポート[2](#kdf2)
+ `ECDHwithX963SHA224KDF` X9.63 KDF (SHA224 アルゴリズム) をサポート[2](#kdf2)
+ `ECDHwithX963SHA256KDF` X9.63 KDF (SHA256 アルゴリズム) をサポート[2](#kdf2)
+ `ECDHwithX963SHA384KDF` X9.63 KDF (SHA384 アルゴリズム) をサポート[2](#kdf2)
+ `ECDHwithX963SHA512KDF` X9.63 KDF (SHA512 アルゴリズム) をサポート[2](#kdf2)

## キーファクトリを使用してキーをキー仕様に変換します
<a name="java-key-factories"></a>

キーファクトリを使用してキーをキー仕様に変換できます。 AWS CloudHSM には、JCE 用の 2 種類のキーファクトリがあります。

**SecretKeyFactory:** 対称キーをインポートまたは派生させるために使用されます。SecretKeyFactory を使用すると、サポートされているキーまたはサポートされている KeySpec を渡して、対称キーを AWS CloudHSMにインポートまたは派生させることができます。KeyFactory でサポートされている仕様は次のとおりです。
+ SecretKeyFactory `generateSecret` のメソッドでは、以下の [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html) クラスがサポートされています。
  + **KeyAttributesMap** を使用すると、追加の属性を含むキーバイトを CloudHSM キーとしてインポートできます。例は[こちら](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)からご覧いただけます。
  + **[SecretKeySpec](https://docs.oracle.com/javase/8/docs/api/javax/crypto/spec/SecretKeySpec.html)** を使用すると、対称キースペックを CloudHSM キーとしてインポートできます。
  + **AESCMackDFParameterSpec** を使用すると、別の CloudHSM AES キーを使用して対称キーを派生できます。

**注記**  
SecretKeyFactory の `translateKey` メソッドは、[キー](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html)インターフェイスを実装する任意のキーを受け取ります。

**KeyFactory:** 非対称キーのインポートに使用されます。SecretKeyFactory を使用すると、サポートされているキーまたはサポートされている KeySpec を渡して、非対称キーを AWS CloudHSMにインポートすることができます。詳細については、以下のリソースを参照してください。
+ KeyFactory `generatePublic` のメソッドでは、次の [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html) クラスがサポートされています。
+ RSA と EC の両方の KeyTypes に対応する CloudHSM KeyAttributesMap には以下が含まれます。
  + RSA と EC の両方のパブリック KeyTypes に対応する CloudHSM KeyAttributesMap。例は[こちら](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)からご覧いただけます
  + RSA と EC パブリックキー両方向け [X509EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/X509EncodedKeySpec.html)
  + RSA パブリックキー向け [RSAPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPublicKeySpec.html)
  + EC パブリックキー向け [ECPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPublicKeySpec.html)
+ KeyFactory `generatePrivate` のメソッドでは、次の [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html) クラスがサポートされています。
+ RSA と EC の両方の KeyTypes に対応する CloudHSM KeyAttributesMap には以下が含まれます。
  + RSA と EC の両方のパブリック KeyTypes に対応する CloudHSM KeyAttributesMap。例は[こちら](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)からご覧いただけます
  + EC と RSA の両方のプライベートキー向け [PKCS8EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/PKCS8EncodedKeySpec.html)
  + RSA プライベートキー向け [RSAPrivateCrtKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPrivateCrtKeySpec.html)
  + EC プライベートキー向け [ECPrivateKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPrivateKeySpec.html)

KeyFactory の `translateKey` メソッドでは、[キーインターフェイス](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html)を実装する任意のキーが取り込まれます。

## メカニズムの注釈
<a name="w2aac25c21c25c15c23"></a>

[1] NIST ガイダンスに従い、2023 年以降の FIPS モードのクラスターでは、これは許可されません。FIPS 以外のモードのクラスターでは、2023 年以降も許可されます。詳細については、「[FIPS 140 コンプライアンス: 2024 年 メカニズムの非推奨](compliance-dep-notif.md#compliance-dep-notif-1)」を参照してください。

[2] キー取得関数 (KDFs) は [NIST Special Publication 800-56A Revision 3 ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)で指定されています。