暗号操作とメカニズム
専用キー管理JCEプロバイダでサポートされている操作、メカニズムおよびアルゴリズムについて学習します。
キーおよびキー・ペアの生成
JCEプロバイダを使用して、次のタイプのキーを生成します。
-
RSA: RSAは、安全なデータ伝送、デジタル署名、および鍵交換プロトコルに広く使用されています。
-
EC (楕円曲線):楕円曲線暗号は、小さいキー・サイズで高いセキュリティを提供し、SSL/TLSやブロックチェーンなどの最新の暗号化アプリケーションに対して効率的です。
-
AES (Advanced Encryption Standard): AESは、機密データを保護するために広く採用されている暗号化標準であり、保存データと移動中のデータの両方に強力なセキュリティを提供します。
-
DESede (Triple DES): Triple DESは、元のDESアルゴリズムの拡張であり、数ラウンドの暗号化によってセキュリティが向上します。DESedeは、非FIPSクラスタでのみサポートされ、通常、下位互換性を必要とするレガシー・アプリケーションに使用されます。
キー・ファクトリを使用したキーの変換
キー・ファクトリは、指定されたキー仕様に準拠するようにキーを変換するために使用されます。詳細は、JavaプラットフォームAPIドキュメントのインタフェースKeySpecを参照してください。JCEのキー・ファクトリの2つの主なタイプは次のとおりです。
SecretKeyFactory
SecretKeyFactoryファクトリは、対称キーのインポートまたは導出用に設計されています。これにより、サポートされているKeyまたはKeySpecを渡して、対称キーをインポートできます。詳細は、Java Platform APIドキュメントのクラスSecretKeyFactoryを参照してください。
次のKeySpecクラスは、generateSecretメソッドと互換性があります。
- KeyAttributesMap:このクラスでは、キー・バイトを関連属性とともにインポートできます。
- SecretKeySpec:このクラスは、対称キー指定をインポートするために使用されます。詳細は、JavaプラットフォームAPIドキュメントのインタフェースSecretKeyを参照してください。
- DESedeKeySpec:このクラスはDESedeKeyFactoryでのみ使用され、DESedeKey仕様をインポートできます。DESedeは、FIPS以外のクラスタでのみサポートされています。詳細は、Java Platform APIドキュメントのクラスDESedeKeySpecを参照してください。このクラスでは、既存のDKMS AESキーに基づいて対称キーを導出できます。
translateKeyメソッドは、キー処理の柔軟性を提供するKeyインタフェースを実装する任意のキーを受け入れることができます。永続キーを変換するには、環境変数またはシステム・プロパティでDEDICATED_KMS_JCE_TRANSLATE_KEY_PERSISTENTをTRUEに設定します。
KeyFactory
KeyFactoryファクトリは、非対称キーのインポートに使用されます。有効なKeyまたはKeySpecを渡すことで、非対称キーを専用キー管理にインポートできます。詳細は、Java Platform APIドキュメントのクラスKeyFactoryを参照してください。
generatePublicメソッドでは、次のKeySpecクラスがサポートされています。
- KeyAttributesMap: RSAとEC KeyTypesの両方で使用できます。
-
X509EncodedKeySpec:このクラスは、
RSAKeyFactoryおよびEcKeyFactoryのgeneratePublic用であり、X509でエンコードされたキー仕様をインポートするために使用されます。詳細は、Java Platform APIドキュメントのクラスX509EncodedKeySpecを参照してください。 -
RSAPublicKeySpec:
RSAKeyFactoryのgeneratePublicの場合。このクラスを使用して、RSA公開キー仕様をインポートします。詳細は、Java Platform APIドキュメントのクラスRSAPublicKeySpecを参照してください。 -
ECPublicKeySpec:
EcKeyFactoryのgeneratePublicの場合。このクラスを使用して、EC公開キー仕様をインポートします。詳細は、Java Platform APIドキュメントのクラスECPublicKeySpecを参照してください。
generatePrivateメソッドでは、次のKeySpecクラスがサポートされています。
- PKCS8EncodedKeySpec: EC秘密キーとRSA秘密キーの両方に使用されます。詳細は、Java Platform APIドキュメントのクラスPKCS8EncodedKeySpecを参照してください。
- RSAPrivateCrtKeySpec: RSA秘密キーの場合のみ。詳細は、Java Platform APIドキュメントのクラスRSAPrivateCrtKeySpecを参照してください。
- ECPrivateKeySpec: EC秘密キーの場合のみ。詳細は、Java Platform APIドキュメントのクラスECPrivateKeySpecを参照してください。
translateKeyメソッドは、Keyインタフェースを実装する任意のキーを受け入れ、異なるキー形式間のシームレスな変換を提供します。
暗号関数
専用キー管理JCEプロバイダは、次のアルゴリズム、モードおよびパディングの組合せをサポートしています。
| アルゴリズム | Mode | パディング | ノート |
|---|---|---|---|
| AES | CBC |
AES/CBC/NoPadding AES/CBC/PKCS5Padding |
Cipher.ENCRYPT_MODEおよびCipher.DECRYPT_MODEを実装します。 AES/CBC NoPaddingにCipher.UNWRAP_MODEを実装します。 |
| AES | 欧州中央銀行 |
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 | 欧州中央銀行 |
AESWrap/ECB/NoPadding AESWrap/ECB/PKCS5Padding AESWrap/ECB/ZeroPadding |
Cipher.WRAP_MODEおよびCipher.UNWRAP_MODEを実装します。 |
| DESede (トリプルDES) | CBC |
DESede/CBC/PKCS5Padding デセード/CBC/NoPadding |
Cipher.ENCRYPT_MODEおよびCipher.DECRYPT_MODEを実装します。 DESedeは、非FIPSクラスタでのみサポートされています。 |
| DESede (トリプルDES) | 欧州中央銀行 |
デセード/ECB/NoPadding DESede/ECB/PKCS5Padding |
Cipher.ENCRYPT_MODEおよびCipher.DECRYPT_MODEを実装します。 DESedeは、非FIPSクラスタでのみサポートされています。 |
| RSA | 欧州中央銀行 |
RSA/ECB/PKCS1Padding (ノート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 | 欧州中央銀行 | RSA/ECB/NoPadding | Cipher.ENCRYPT_MODEおよびCipher.DECRYPT_MODEを実装します。 |
| RSAAESWrap | 欧州中央銀行 |
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を実装します。 |
ファンクションの署名および検証
DKMS JCEプロバイダは、次のタイプの署名および検証をサポートしています。
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
メッセージダイジェスト関数
データ整合性検証用の暗号化ハッシュ値を生成します。DKMS JCEプロバイダは、次のメッセージ・ダイジェストをサポートしています。
-
SHA-1
-
SHA-224
-
SHA-256
-
SHA-384
-
SHA-512
ハッシュベースメッセージ認証コード(HMAC)関数
暗号化ハッシュ関数のハッシュベースのメッセージ認証コード(HMAC)鍵を生成します。HMACは、ハッシュ関数で秘密キーを適用することで、データの整合性と信頼性を検証するために使用されます。専用キー管理JCEプロバイダは、次のHMACアルゴリズムをサポートしています。
-
HmacSHA1 (バイト単位の最大データ・サイズ: 16288)
-
HmacSHA224 (バイト単位の最大データ・サイズ: 16256)
-
HmacSHA256 (バイト単位の最大データ・サイズ: 16288)
-
HmacSHA384 (バイト単位の最大データ・サイズ: 16224)
-
HmacSHA512 (バイト単位の最大データ・サイズ: 16224)
暗号ベースのメッセージ認証コード(CMAC)
ブロック暗号(AESなど)を使用して暗号ベースのメッセージ認証コード(CMAC)を生成し、メッセージの整合性と信頼性を確保する認証コードを生成します。CMACはHMACと同様に動作しますが、暗号化操作には対称キー暗号を使用します。
専用キー管理JCEプロバイダは、CMAC生成用のAESCMACアルゴリズムをサポートしています。