JCE 暗号化の設定

Java Cryptography Extension (JCE) 戦略では、Java の強力な暗号化機能を使用できます。次の 2 つの方法のいずれかを使用して、メッセージ全体または特定の部分のみを柔軟に暗号化できます。

  • パスワードベースの暗号化 (PBE)
    この方法を使用すると、暗号化パスワードを指定するだけでコンテンツの暗号化と署名ができます。

  • キーベースの暗号化 (KBE)
    PGP および XML 暗号化に似ていますが、この方法では、対称鍵または非対称鍵を設定して、暗号化および署名操作を実行できます。

これらの方法を設定するには、Cryptography Module JCE 操作を使用します。

始める前に

PBE および KBE 暗号化や、公開鍵、非公開鍵、非対称暗号化の概念について理解します。

PBE 暗号化を設定する

この方法では、パスワードを取得し、それをハッシュ関数で実行して対称暗号化鍵を作成します。この生成されたキーは標準の暗号化アルゴリズムで機能します。PBE に必要なのはパスワードのみであるため、JCE PBE 操作に別のグローバル設定要素は必要ありません。

Anypoint Studio で JCE PBE 操作を設定する

次の手順に従います。

  1. Anypoint Studio で、​Cryptography Module​ JCE PBE 操作をキャンバスフローにドラッグします。

    暗号化フローのパスワードベースの Cryptography Module を追加するパレットメニュー
  2. 操作設定ウィンドウで ​[Algorithm (アルゴリズム)]​、​[Password (パスワード)]​、​[Password salt (パスワードソルト)]​、および ​[Iteration count (反復回数)]​ プロパティを設定します。 +git s image::crypto-jce-setting.png["[Algorithm (アルゴリズム)]、[Password (パスワード)]、[Password salt (パスワードソルト)]、[Iteration count (反復回数)] オプションが含まれる JCE 暗号化 PBE の設定"]

XML の例

以下は、各 JCE PBE 操作の XML の例です。

  • Jce encryption pbe

    <crypto:jce-encrypt-pbe password="a-Sup3r_Secure-Passw0rd"/>

    アルゴリズムを指定しない場合、モジュールでは ​PBEWithHmacSHA256AndAES_128​ が使用されます。

  • Jce decrypt pbe

    <crypto:jce-decrypt-pbe algorithm="PBEWithHmacSHA256AndAES_128" password="a-Sup3r_Secure-Passw0rd"/>
  • Jce sign pbe

    <crypto:jce-sign-pbe password="a-Sup3r_Secure-Passw0rd"/>

    アルゴリズムを指定しない場合、モジュールでは ​PBEWithHmacSHA256​ が使用されます。

  • Jce validate pbe

    <crypto:jce-validate-pbe password="a-Sup3r_Secure-Passw0rd" algorithm="PBEWithHmacSHA256" expected="#[vars.expectedSignature]"/>

    expected​ パラメーターでは、メッセージを検証するために使用される署名を定義します。

KBE 暗号化を設定する

対称鍵または非対称鍵を設定して、暗号化および署名操作を実行します。

Anypoint Studio で JCE KBE 操作を設定する

次の手順に従います。

  1. Anypoint Studio で、Cryptography Module JCE KBE 操作をキャンバスフローにドラッグします。

    暗号化と復号化のコンポーネントが含まれる crypto-examples プロジェクト
  2. 操作設定ウィンドウで、既存の​モジュール設定​を選択するか、​[Keystore (キーストア)]​、​[Type (種別)]​ (JKS、JCEKS、PKCS12)、および ​[Password (パスワード)]​ パラメーターを設定して新しいモジュール設定を作成します。

    署名操作で使用する対称鍵または非対称鍵の情報を追加することもできます。

    キーストアの詳細が含まれる暗号化 JCE のグローバル設定プロパティ
  3. モジュール設定で以前定義した ​[Key id (キー ID)]​ 値を使用して ​[Key selection (キー選択)]​ を設定するか、この操作用に新しく定義します。

    コンテンツ、アルゴリズム、キー選択の設定が表示されている JCE 暗号化の設定パネル
  4. 操作中に使用するアルゴリズムを選択します。

XML の例

次の XML の例は、対称鍵と非対称鍵、およびそれらのキーを使用するさまざまな操作を定義する JCE 設定を示しています。

  • 設定

    次の例では、JCE 設定にはさまざまな種別のキーのキーストアが含まれています。

    <crypto:jce-config name="jceConfig" keystore="jce/keys.jceks" password="123456" type="JCEKS">
        <crypto:jce-key-infos>
            <crypto:jce-symmetric-key-info keyId="aes128" alias="aes128" password="123456"/>
            <crypto:jce-symmetric-key-info keyId="blowfish" alias="blowfish" password="123456"/>
            <crypto:jce-symmetric-key-info keyId="hmacsha256" alias="hmacsha256" password="123456"/>
            <crypto:jce-asymmetric-key-info keyId="rsa" alias="myrsakey" password="123456"/>
            <crypto:jce-asymmetric-key-info keyId="dsa" alias="mydsakey" password="123456"/>
        </crypto:jce-key-infos>
    </crypto:jce-config>
  • 非対称暗号化

    次の例では、​Jce encrypt​ および ​Jce decrypt​ 操作は、前の設定で定義された非対称鍵を使用します。

    メッセージの暗号化
    <crypto:jce-encrypt config-ref="jceConfig" keyId="rsa" algorithm="RSA"/>
    メッセージの復号化
    <crypto:jce-decrypt config-ref="jceConfig" keyId="rsa" algorithm="RSA"/>
  • 対称暗号化

    次の例では、​Jce encrypt​ および ​Jce decrypt​ 操作は、前の設定で定義された対称鍵を使用します。

    メッセージの暗号化
    <crypto:jce-encrypt config-ref="jceConfig" keyId="aes128" algorithm="AES"/>
    メッセージの復号化
    <crypto:jce-decrypt config-ref="jceConfig" keyId="aes128" algorithm="AES"/>
  • 署名および検証

    次の例では、​Jce sign​ および ​Jce validate​ 操作は、前の設定定義されたキーを使用します。

    メッセージの署名
    <crypto:jce-sign config-ref="jceConfig" keyId="dsa" algorithm="SHA256withDSA"/>
    署名の検証
    <crypto:jce-validate config-ref="jceConfig" keyId="dsa" algorithm="SHA256withDSA" expected="#[vars.expectedSignature]"/>

    expected​ パラメーターでは、メッセージを検証するために使用される署名を定義します。