Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule Runtime Engine (Mule) は、Pretty Good Privacy (PGP) を使用して、メッセージ全体またはその一部を暗号化できます。PGP は、データ圧縮と暗号化を組み合わせてメッセージを保護します。圧縮によりメッセージのサイズが縮小され、Mule アプリケーション内での転送速度が向上します。PGP 暗号化は複雑さが増すため、JCE または XML 暗号化よりも多くのリソースを必要とします。
主な 2 つの PGP シナリオは次のとおりです。
Encryption (暗号化)
Mule アプリケーションで、他のパーティの公開鍵を使用して送信メッセージを暗号化します。
復号化
独自の秘密鍵を使用して、Mule アプリケーションで受信メッセージを復号化します。
これらのシナリオを設定するには、Cryptography Module PGP 操作を使用します。
次の手順に従います。
Anypoint Studio で、Cryptography Module PGP 操作をキャンバスフローにドラッグします。
操作設定ウィンドウで、既存のモジュール設定を選択するか、[Public keyring (公開キーリング)] ファイルと [Private keyring (非公開キーリング)] ファイルを設定して新しいモジュール設定を作成します。
署名操作で使用する非対称鍵の情報を追加することもできます。
モジュール設定で以前定義した [Key id (キー ID)] 値を使用して [Key selection (キー選択)] を設定するか、この操作用に新しく定義します。
操作中に使用するアルゴリズムを選択します。
RFC-4880 標準では、PGP キーに複数のサブキーを含めることができると定義されています。これらのサブキーを使用する場合は、<crypto:pgp-asymmetric-key-info> XML 要素内の fingerprint 属性で使用するサブキーを指定します。
たとえば、署名と暗号化に別々のサブキーがあり、署名には DSA、暗号化には ElGamal などの異なるアルゴリズムを使用する場合は、各操作に対して正しいサブキーのフィンガープリントを参照します。そのため、メッセージの暗号化では ElGamal フィンガープリントを使用し、メッセージの署名では DSA フィンガープリントを使用します。
PGP を使用してメッセージを暗号化する場合、送信者は受信者の公開鍵を使用してコンテンツを暗号化する必要があります。そのため、他の誰かの公開鍵を使用して Mule アプリケーションでメッセージを暗号化するには、公開鍵をキーリングに追加します。Mule アプリケーションで新しい PGP 操作を設定するときに、キーリングファイルを提供します。Cryptography Module はこのファイルを使用して、暗号化に必要な公開鍵を取得します。
次の手順に従います。
GPG Suite などのツールを使用して、他のパーティの公開鍵をインポートします。
同じツールを使用し、出力形式としてバイナリを選択していることを確認して公開鍵をエクスポートします。これにより、拡張子が .gpg のキーリングファイルが生成されます。
Mule アプリケーションが実行時にアクセスできる場所に..gpg キーリングファイルを配置します。
<crypto:pgp-config name="encrypt-conf" publicKeyring="pgp/pubring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
Pgp encrypt 操作を使用して、ASCII アーマー形式の暗号化ペイロードを返します。これは、プレーンテキストチャネルを介した送信に適しています。
<crypto:pgp-encrypt config-ref="encrypt-conf" keyId="myself"/>
Pgp encrypt binary 操作を使用して、代わりにバイナリ出力を返します。
<crypto:pgp-encrypt-binary config-ref="pgp-conf" keyId="recipient"/>
バイナリ出力は、ASCII アーマー形式を使用する場合よりも短時間で生成できます。ただし、標準出力ではないため、他のシステムに送信して復号化するのに適してしない場合があります。
Pgp binary to armored 操作を使用して、バイナリ出力を含むペイロードを別のシステムに送信し、それを ASCII アーマー形式に変換します。
<crypto:pgp-binary-to-armored/>
この操作には、1 つの入力パラメーター (変換するメッセージペイロード) があります。
暗号化だけでなく、1 回のアトミック操作でメッセージを暗号化および署名することもできます。これは、純粋に暗号化されたメッセージに似ていますが、暗号化されたコンテンツ内に署名が追加された ASCII アーマー形式のメッセージを返します。この署名は整合性チェックとして機能し、元のメッセージが改ざんされていないことを確認します。
暗号化して署名するには、署名者 (通常は送信者) の非公開鍵が公開キーリングに存在している必要があります。このプロセスでは、ASCII アーマー形式の出力が常に生成されます。
Pgp encrypt and sign 操作の使用
<crypto:pgp-encrypt-and-sign config-ref="encrypt-conf">
<crypto:encryption-key-selection keyId="recipient-key-id" />
<crypto:sign-key-selection keyId="signer-key-id" />
</crypto:pgp-encrypt-and-sign>
PGP 復号化の場合、メッセージレシーバーは非公開鍵を使用して、公開鍵で暗号化されたコンテンツを復号化する必要があります。つまり、受信者は暗号化されたメッセージを送信する全員と公開鍵を共有する必要があります。
<crypto:pgp-config name="decrypt-conf" privateKeyring="pgp/secring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221" passphrase="mule1234"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
前の例では、decrypt 操作で非公開キーリングを使用できるようにするために少なくとも 3 つのパラメーターを指定する必要があります。
キー ID (keyId): 操作からこのキーを参照できる内部 ID。
キーフィンガープリント (fingerprint): 外部 GPG ツール (GPG Keychain など) から取得できるキーフィンガープリントの末尾の 16 文字。
パスフレーズ (passphrase): 非公開鍵のパスフレーズ。
Pgp decrypt 操作の使用
<crypto:pgp-decrypt config-ref="decrypt-conf"/>
設定済みの非公開鍵を使用してメッセージに署名します。
<crypto:pgp-config name="sign-conf" privateKeyring="pgp/secring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="myself" fingerprint="DE3F10F1B6B7F221" passphrase="mule1234"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
Pgp sign 操作の使用
<crypto:pgp-sign config-ref="sign-conf" keyId="myself"/>
署名者の公開鍵を使用してメッセージの署名を検証します。
<crypto:pgp-config name="validate-conf" publicKeyring="pgp/pubring.gpg">
<crypto:pgp-key-infos>
<crypto:pgp-asymmetric-key-info keyId="signer" fingerprint="DE3F10F1B6B7F221"/>
</crypto:pgp-key-infos>
</crypto:pgp-config>
Pgp validate 操作の使用
<crypto:pgp-validate config-ref="validate-conf" value="#[payload]" expected="#[vars.expected]"/>