暗号操作とメカニズム

専用キー管理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_PERSISTENTTRUEに設定します。

KeyFactory

KeyFactoryファクトリは、非対称キーのインポートに使用されます。有効なKeyまたはKeySpecを渡すことで、非対称キーを専用キー管理にインポートできます。詳細は、Java Platform APIドキュメントのクラスKeyFactoryを参照してください。

generatePublicメソッドでは、次のKeySpecクラスがサポートされています。

  • KeyAttributesMap: RSAとEC KeyTypesの両方で使用できます。
  • X509EncodedKeySpec:このクラスは、RSAKeyFactoryおよびEcKeyFactorygeneratePublic用であり、X509でエンコードされたキー仕様をインポートするために使用されます。詳細は、Java Platform APIドキュメントのクラスX509EncodedKeySpecを参照してください。
  • RSAPublicKeySpec: RSAKeyFactorygeneratePublicの場合。このクラスを使用して、RSA公開キー仕様をインポートします。詳細は、Java Platform APIドキュメントのクラスRSAPublicKeySpecを参照してください。
  • ECPublicKeySpec: EcKeyFactorygeneratePublicの場合。このクラスを使用して、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アルゴリズムをサポートしています。