暗号化解除メソッド
暗号化解除アルゴリズムは、SOAP メッセージの暗号化解除を行うために使用するデータおよび鍵暗号化アルゴリズムを指定します。 暗号化用 WSS API (WSSDecryption) は、データ暗号化方式および鍵暗号化方式のアルゴリズム URI (Uniform Resource Identifier) を指定します。 WSSDecryption インターフェースは、com.ibm.websphere.wssecurity.wssapi.decryption パッケージの一部です。
データ暗号化アルゴリズム
データ暗号化アルゴリズムは、 データの暗号化および暗号化解除を行うために使用するアルゴリズムです。 このタイプのアルゴリズムは、本文コンテンツやシグニチャーなど、メッセージ内のさまざまな部分の暗号化および暗号化解除を行うデータの暗号化で使用します。
データ暗号化解除アルゴリズムは、データ暗号化方式のアルゴリズム URI (Uniform Resource Identifier) を指定します。 WebSphere® Application Server は、以下の事前構成済みデータ暗号化解除アルゴリズムをサポートしています。
WSS API | URI |
---|---|
WSSDecryption.AES128 (デフォルト値) | データ暗号化アルゴリズム AES 128 の URI: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSDecryption.AES192 | データ暗号化アルゴリズム AES 192 の URI: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSDecryption.AES256 | データ暗号化アルゴリズム AES 256 の URI: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSDecryption.TRIPLE_DES | データ暗号化アルゴリズム TRIPLE DES の URI: http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
デフォルトでは、Java™ Cryptography Extension (JCE) は、強度が制限または限定された暗号を使用します。 192 ビットおよび 256 ビットの Advanced Encryption Standard (AES) 暗号化アルゴリズムを使用するには、 無制限の管轄権ポリシー・ファイルを適用する必要があります。
AES256-cbc アルゴリズムと AES192-cbc アルゴリズムの場合、Web サイト http://www.ibm.com/developerworks/java/jdk/security/index.html から非制限 Java™ Cryptography Extension (JCE) ポリシー・ファイルをダウンロードする必要があります。
このデータ暗号化アルゴリズムは、 コンシューマー用に構成されるデータ暗号化解除アルゴリズムと一致しなければなりません。
鍵暗号化アルゴリズム
鍵暗号化アルゴリズムは、鍵の暗号化および暗号化解除を行うために使用するアルゴリズムです。
この鍵情報は、デジタル署名および暗号化用の鍵の生成に必要な構成を指定する際に使用します。 署名情報の構成と暗号化情報の構成で、鍵情報を共有することができます。 コンシューマー側の鍵情報は、 受信メッセージにおけるデジタル署名の検証、または 暗号化されたメッセージ・パーツの暗号化解除に使用する鍵の情報を指定するために使用します。 要求生成プログラムはクライアント用に構成されます。
鍵暗号化アルゴリズムは、鍵暗号化方式のアルゴリズム URI (Uniform Resource Identifier) を指定します。WebSphere Application Server は、次の事前構成済み鍵暗号化アルゴリズムをサポートしています。
WSS API | URI |
---|---|
WSSDecryption.KW_AES128 | 鍵暗号化アルゴリズムの URI、鍵ラップ AES 128 の場合: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSDecryption.KW_AES192 | 鍵暗号化アルゴリズムの URI、鍵ラップ AES 192 の場合:
http://www.w3.org/2001/04/xmlenc#kw-aes192 制約事項: ご使用の構成済みアプリケーションを Basic Security Profile (BSP) に準拠させる場合は、192 ビット鍵暗号化アルゴリズムを使用しないでください。
|
WSSDecryption.KW_AES256 | 鍵暗号化アルゴリズムの URI、鍵ラップ AES 256 の場合: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSDecryption.KW_RSA_OAEP (デフォルト値) | 鍵暗号化アルゴリズムの URI、鍵ラップ RSA OAEP の場合: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSDecryption.KW_RSA15 | 鍵暗号化アルゴリズムの URI、鍵ラップ RSA 1.5 の場合: http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSDecryption.KW_TRIPLE_DES | データ暗号化アルゴリズムの URI、キー・ラップ TRIPLE DES の場合: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
デフォルトでは、RSA-OAEP アルゴリズムは、SHA1 メッセージ・ダイジェスト・アルゴリズムを使用して、暗号化操作の一部としてメッセージ・ダイジェストを計算します。 オプションで、鍵暗号化アルゴリズム・プロパティーを指定することにより、SHA256 または SHA512 メッセージ・ダイジェスト・アルゴリズムを使用できます。プロパティー名は com.ibm.wsspi.wssecurity.enc.rsaoaep.DigestMethod です。 プロパティー値は、ダイジェスト方式の以下の URI のいずれかです。 http://www.w3.org/2001/04/xmlenc#sha256 http://www.w3.org/2001/04/xmlenc#sha512
デフォルトで RSA-OAEP アルゴリズムは、OAEPParams 用のオプショナル・エンコードのオクテット・ストリングに対してヌル・ストリングを使用します。 鍵暗号化アルゴリズム・プロパティーを指定することにより、明示的エンコードのオクテット・ストリングを提供できます。 プロパティー名として、com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams を指定できます。 プロパティー値は、オクテット・ストリングを Base 64 でエンコードした値です。
kw-aes256 および kw-aes192 鍵暗号化アルゴリズムの場合、Web サイト http://www.ibm.com/developerworks/java/jdk/security/index.html から非制限 Java? Cryptography Extension (JCE) ポリシー・ファイルをダウンロードする必要があります。
ジェネレーターとコンシューマーの鍵暗号化アルゴリズムは一致しなければなりません。
以下は、WebSphere Application Server の暗号化解除で使用するデフォルトのアルゴリズム用の WSS API コードのサンプルです。
WSSFactory factory = WSSFactory.getInstance();
WSSConsumingContext concont = factory.newWSSConsumingContext();
// Required to attach username token into the message.
X509ConsumeCallbackHandler callbackHandler =
new X509ConsumeCallbackHandler("",
"enc-sender.jceks",
"JCEKS",
"storepass".toCharArray(),
"alice",
"keypass".toCharArray(),
"CN=Alice, O=IBM, C=US");
// Set the decrypt component.
// Default encrypted part: Body-Content
// Default data encryption algorithm: AES128
// Default key encryption algorithm: KW-RSA-OAEP
WSSDecryption dec = factory.newWSSDecryption(X509Token.Type,
callbackHandler);
concont.add(dec);
// validate the WS-Security header.
concont.process(msgctx);