6.2.7. 指定 Algorithm Suite

概述

算法套件是用来执行诸如签名、加密、生成消息摘要等操作的一种一致加密算法集合。

为了参考目的,本节描述了 WS-SecurityPolicy 规范定义的算法套件。但是,是否提供特定的算法套件,这取决于底层的安全供应商。Apache CXF 安全性基于可插拔 Java Cryptography Extension(JCE)和 Java 安全套接字扩展(JSSE)层。默认情况下,Apache CXF 配置有 Sun 的 JSSE 提供者,它支持 Sun JSSE 参考指南附录 A 所述的密码套件。

语法

AlgorithmSuite 元素具有以下语法:

<sp:AlgorithmSuite xmlns:sp="..." ... >
  <wsp:Policy xmlns:wsp="...">
   (<sp:Basic256 ... /> |
    <sp:Basic192 ... /> |
    <sp:Basic128 ... /> |
    <sp:TripleDes ... /> |
    <sp:Basic256Rsa15 ... /> |
    <sp:Basic192Rsa15 ... /> |
    <sp:Basic128Rsa15 ... /> |
    <sp:TripleDesRsa15 ... /> |
    <sp:Basic256Sha256 ... /> |
    <sp:Basic192Sha256 ... /> |
    <sp:Basic128Sha256 ... /> |
    <sp:TripleDesSha256 ... /> |
    <sp:Basic256Sha256Rsa15 ... /> |
    <sp:Basic192Sha256Rsa15 ... /> |
    <sp:Basic128Sha256Rsa15 ... /> |
    <sp:TripleDesSha256Rsa15 ... /> |
    ...)
    <sp:InclusiveC14N ... /> ?
    <sp:SOAPNormalization10 ... /> ?
    <sp:STRTransform10 ... /> ?
   (<sp:XPath10 ... /> |
    <sp:XPathFilter20 ... /> |
    <sp:AbsXPath ... /> |
    ...)?
    ...
  </wsp:Policy>
  ...
</sp:AlgorithmSuite>

算法套件断言支持大量替代算法(例如 Basic256)。有关算法套件的替代方案的详情,请参考 表 6.4 “算法套件”

算法套件

表 6.4 “算法套件” 提供 WS-SecurityPolicy 支持的算法套件概述。列标题指向不同类型的加密算法,如下所示:\[Dig] 是摘要算法;\[Enc] 是加密算法;\[Sym KW] 是对称密钥包装算法;\[Asym KW] 是非对称密钥包装算法; \[Enc KD] 是加密密钥的算法;[Sym KW] 是签名算法。

表 6.4. 算法套件

算法套件\[Dig]\[Enc]\[Sym KW]\[Asym KW]\[Enc KD]\[Sig KD]

Basic256

Sha1

Aes256

KwAes256

KwRsaOaep

PSha1L256

PSha1L192

Basic192

Sha1

Aes192

KwAes192

KwRsaOaep

PSha1L192

PSha1L192

Basic128

Sha1

Aes128

KwAes128

KwRsaOaep

PSha1L128

PSha1L128

TripleDes

Sha1

TripleDes

KwTripleDes

KwRsaOaep

PSha1L192

PSha1L192

Basic256Rsa15

Sha1

Aes256

KwAes256

KwRsa15

PSha1L256

PSha1L192

Basic192Rsa15

Sha1

Aes192

KwAes192

KwRsa15

PSha1L192

PSha1L192

Basic128Rsa15

Sha1

Aes128

KwAes128

KwRsa15

PSha1L128

PSha1L128

TripleDesRsa15

Sha1

TripleDes

KwTripleDes

KwRsa15

PSha1L192

PSha1L192

Basic256Sha256

Sha256

Aes256

KwAes256

KwRsaOaep

PSha1L256

PSha1L192

Basic192Sha256

Sha256

Aes192

KwAes192

KwRsaOaep

PSha1L192

PSha1L192

Basic128Sha256

Sha256

Aes128

KwAes128

KwRsaOaep

PSha1L128

PSha1L128

TripleDesSha256

Sha256

TripleDes

KwTripleDes

KwRsaOaep

PSha1L192

PSha1L192

Basic256Sha256Rsa15

Sha256

Aes256

KwAes256

KwRsa15

PSha1L256

PSha1L192

Basic192Sha256Rsa15

Sha256

Aes192

KwAes192

KwRsa15

PSha1L192

PSha1L192

Basic128Sha256Rsa15

Sha256

Aes128

KwAes128

KwRsa15

PSha1L128

PSha1L128

TripleDesSha256Rsa15

Sha256

TripleDes

KwTripleDes

KwRsa15

PSha1L192

PSha1L192

加密算法的类型

WS-SecurityPolicy 支持以下加密算法:

对称密钥签名

对称密钥签名属性 [Sym Sig] 指定使用对称密钥生成签名的算法。WS-SecurityPolicy 指定始终使用 HmacSha1 算法。

HmacSha1 算法由以下 URI 识别:

http://www.w3.org/2000/09/xmldsig#hmac-sha1

非对称密钥签名

非对称密钥签名属性 [Asym Sig] 指定使用非对称密钥生成签名的算法。WS-SecurityPolicy 指定始终使用 RsaSha1 算法。

RsaSha1 算法由以下 URI 识别:

http://www.w3.org/2000/09/xmldsig#rsa-sha1

摘要

digest 属性 [Dig] 指定用于生成消息摘要值的算法。WS-SecurityPolicy 支持两种替代摘要算法: Sha1Sha256

Sha1 算法由以下 URI 识别:

http://www.w3.org/2000/09/xmldsig#sha1

Sha256 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#sha256

Encryption

加密属性 [Enc] 指定用于加密数据的算法。WS-SecurityPolicy 支持以下加密算法: Aes256Aes192Aes128TripleDes

Aes256 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#aes256-cbc

Aes192 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#aes192-cbc

Aes128 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#aes128-cbc

TripleDes 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#tripledes-cbc

对称密钥嵌套

对称密钥嵌套属性 [Sym KW] 指定用于签名和加密对称密钥的算法。WS-SecurityPolicy 支持以下对称密钥嵌套算法: KwAes256KwAes192KwAes128KwTripleDes

KwAes256 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#kw-aes256

KwAes192 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#kw-aes192

KwAes128 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#kw-aes128

KwTripleDes 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#tripledes-cbc

非对称密钥换行

非对称密钥换行属性 [Asym KW] 指定用于签名和加密非对称密钥的算法。WS-SecurityPolicy 支持以下非对称密钥嵌套算法: KwRsaOaepKwRsa15

KwRsaOaep 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

KwRsa15 算法由以下 URI 识别:

http://www.w3.org/2001/04/xmlenc#rsa-1_5

computed 密钥

computed 键属性 [Comp Key] 指定用于计算派生密钥的算法。当安全方与共享密钥通信(例如,使用 WS-SecureConvers 时)时,建议使用一个派生密钥而不是原始共享密钥,以避免通过托管第三方公开大量数据以供分析。WS-SecurityPolicy 指定始终使用 PSha1 算法。

PSha1 算法由以下 URI 识别:

http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/dk/p_sha1

加密密钥分离

加密密钥 derivation 属性 [Enc KD] 指定用于计算派生加密密钥的算法。WS-SecurityPolicy 支持以下加密密钥分离算法: PSha1L256PSha1L192PSha1L128

PSha1 算法由以下 URI 识别(同一算法用于 PSha1L256PSha1L192PSha1L128 ;只有密钥长度不同):

http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/dk/p_sha1

签名密钥分离

签名密钥 derivation 属性 [Sig KD] 指定用于计算派生签名密钥的算法。WS-SecurityPolicy 支持以下签名密钥分离算法: PSha1L192PSha1L128

密钥长度属性

表 6.5 “密钥长度属性” 显示 WS-SecurityPolicy 支持的最小和最大密钥长度。

表 6.5. 密钥长度属性

属性密钥长度

最小对称密钥长度 [Min SKL]

128, 192, 256

最大对称密钥长度 [Max SKL]

256

最小非对称密钥长度 [Min AKL]

1024

最大非对称密钥长度 [Max AKL]

4096

最小对称密钥长度的值 [Min SKL] 取决于选择哪个算法套件。