暗号操作とメカニズム
専用キー管理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アルゴリズムをサポートしています。