暗号化方式
要求生成プログラム・バインディングの設定では、暗号化方式に SOAP メッセージの暗号化で使用するデータ暗号化アルゴリズムおよび鍵暗号化アルゴリズムの指定が含まれます。 暗号化用 WSS API (WSSEncryption) は、アルゴリズム名、およびデータ暗号化方式と鍵暗号化方式のマッチング・アルゴリズム URI (Uniform Resource Identifier) を指定します。 データ暗号化アルゴリズムと鍵暗号化アルゴリズムを指定すると、それらのアルゴリズムで暗号化されたエレメントのみが受け入れられます。
データ暗号化アルゴリズム
データ暗号化アルゴリズムは、本文とシグニチャーを含む SOAP メッセージの各部を暗号化するために使用します。 データ暗号化解除アルゴリズムは、各データ暗号化アルゴリズム・タイプのアルゴリズム URI (Uniform Resource Identifier) を指定します。
| データ暗号化アルゴリズム名 | アルゴリズム URI |
|---|---|
| WSSEncryption.AES128 (デフォルト値) | データ暗号化アルゴリズム AES 128 の URI: http://www.w3.org/2001/04/xmlenc#aes128-cbc |
| WSSEncryption.AES192 | データ暗号化アルゴリズム AES 192 の URI: http://www.w3.org/2001/04/xmlenc#aes192-cbc |
| WSSEncryption.AES256 | データ暗号化アルゴリズム AES 256 の URI: http://www.w3.org/2001/04/xmlenc#aes256-cbc |
| WSSEncryption.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) を指定します。 次の事前構成済み鍵暗号化アルゴリズムがサポートされています。
| WSS API | URI |
|---|---|
| WSSEncryption.KW_AES128 | 鍵暗号化アルゴリズム、鍵ラップ AES 128 の URI: http://www.w3.org/2001/04/xmlenc#kw-aes128 |
| WSSEncryption.KW_AES192 | 鍵暗号化アルゴリズム、鍵ラップ AES 192 の URI:
http://www.w3.org/2001/04/xmlenc#kw-aes192 制約事項: 構成したアプリケーションを基本セキュリティー・プロファイル (BSP) に準拠させる場合は、192 ビットの鍵暗号化アルゴリズムを使用しないでください。
|
| WSSEncryption.KW_AES256 | 鍵暗号化アルゴリズム、鍵ラップ AES 256 の URI: http://www.w3.org/2001/04/xmlenc#kw-aes256 |
| WSSEncryption.KW_RSA_OAEP (デフォルト値) | 鍵暗号化アルゴリズム、鍵ラップ RSA OAEP の URI: http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
| WSSEncryption.KW_RSA15 | 鍵暗号化アルゴリズム、鍵ラップ RSA 1.5 の URI: http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
| WSSEncryption.KW_TRIPLE_DES | 鍵暗号化アルゴリズムの URI、キー・ラップ TRIPLE DES の場合: http://www.w3.org/2001/04/xmlenc#kw-tripledes |
- algorithmName
- keyLength
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から非制限 JCE ポリシー・ファイルをダウンロードする必要があります。
生成プログラム用の鍵暗号化アルゴリズムは、 コンシューマー用に構成された鍵暗号化解除アルゴリズムと一致していなければなりません。
以下は、データ暗号化方式で Triple-DES を使用し、鍵暗号化方式で RSA1.5 を使用する暗号化のサンプル・コードの例です。
// get the message context
Object msgcontext = getMessageContext();
// generate WSSFactory instance
WSSFactory factory = WSSFactory.getInstance();
// generate WSSGenerationContext instance
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// generate callback handler
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// generate the security token used to the encryption
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// generate WSSEncryption instance to encrypt the SOAP body content
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// set the data encryption method
// DEFAULT: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// set the key encryption method
// DEFAULT: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// add the WSSEncryption to the WSSGenerationContext
gencont.add(enc);
// generate the WS-Security header
gencont.process(msgcontext);