admin 管理员组文章数量: 1086019
2024年4月20日发(作者:ppt模板下载免费完整版动态)
维普资讯
在Webt] ̄务安全
XML ̄g密
山
摘要谊文首先讨论了传统web服务安全技术存在的不足之处,然后详细说明了作web, ̄.Yr簧全技术核心的xML加密
与签名技术的具体实现,最后介绍将XML@密与签名应用到web服务安全中的优势所在。
美键词XML ̄a密XML签名WebJ] ̄.务安全
引领、 界的许多公司(例 ̄nlBM,Microsoft,Sun{nOracle
式, ̄IISMTP、TCP、FTP、消息队列等,而SSL的安全机制
等)都支持Webg ̄务,他们 仅在市场上推广Web服务,而且
并不一定适用。
还发布web服务产品。此外,现有的许多产品都将web服务的 (2)SSL只能对全部的信息进行加密,而不能有选择地
功能集成到它们的特征集中。所有这些都意味着现在我们拥有
对部分信息进行加密,这样在传送大量数据的时候,将引发严
l久量的Web服务平台和可供利用的Web服务开发T具。Web服
重的性能问题。
务将控制今后几年内新的应用程序解决方案的部署。但是在大
(3)SSL只能确保点对点((Point to Point)的安全,而无
规模使用前,Webg ̄务的许多方面都需要解决安全问题。
法保障端到端((End to End)的安全。在web服务的典型应用
中,SOAP消息往往要经过・系列的中间节点,每个节点都会
一
.
传统的Web,it务安全技术
对SOAP消息做一定的处理。虽然SSL可以确保SOAP消息在节
点之问足安 的,但是由于在 点内部SOAPtI ̄息足以明文方
Web服务的协议栈如表1所示:
式存在的,因此一旦节点被攻击者接管,他就可以查看甚至篡
表1 WebN.务的协议栈
改SOAP消息。因此,对于Webg ̄.务来说,端到端的安全性是
非常 要的。
UDDI Ser ̄ce Discovery and
PubncahOn
(4)由下有关的安全信息是任Web1] ̄务之外进行检查
WSDL Service Desmptmn
的,对于Web服务来说它是得不到相关的安全信息的。而这些
SOAP Ⅺ儿・Based Messaging
Ⅺ儿 eXtmsible Ivlarkup Language
信息在web服务向内部的服务器或第三方请求服务时又是必须
HTTP FTP Network
的。
SMTP
综上所述,当前的安全传输机制并不能适应安全的Webg ̄
由Web服务的协议栈可见,Web1] ̄务的消息都通过应用层
务要求。
传输,安全性可由现行的网络层的安全机制来保证。
因为Web服务新的需求导致现有安全传输协议无法满足其
虽然对于可互操作的XML消息传递来说SOAPf[IHTTP(或
安全性要求,因此需要制定新的安全规范。在安全服务的逻辑
SMTP,FTP等)就足够了,而且WSDL也足可以传达服务请求
组件中,提高可用性更多的是从物理层和网络层进行考虑,所
者和服务提供者之间需要什么样的消息,但是噩覆盖电子商务
以新的安全规范更多地集中在机密性、完整性、不可否认、鉴
等的全部需求还需要更多的安全性考虑。目前,业界已经有一
别和授权方面进行考虑 现在己经开发了许多行业规范,它们
套现成的而且广泛接受的传输层安全机制SSL(HTTPS),但是
可以分为两类:
只依靠SSL并不能在Webll ̄务模型内提供足够的安全性的情
(1)XML形式的安全:以XML格式表示数据的安全;
况。这是因为:
(2)SOAP消息级安全:在SOAP消息中包含XML格式的
(1)目前大多数Webll ̄务的实现可以以SSL作为其安全
安全形式,从而使SOAPi ̄息自身就能够实现足够的安全。
传输层,但是Webg ̄务在未来的实现中还将引入其他的传输方
下面我们丰要讨论XML形式中的XML签名和加密是如何
2071 i#lltll1 ̄.-2006.7
维普资讯
技术实用技术
NetwO rk&Computer Security
虚用NWebllt务安全中的。
<Signedlnfo>
<CanonicalizationMethod/>
= XML签名和加密
<SignatureMethod/>
(<Reference URI?>
XML签名和加密本身并不是一项Webl ̄务安全技术,但
(<Transforms/>)?
<DigestMethod>
是XML签名和加密是许多web服务安全技术的基础构件。
<DigestValue/>
XML签名和加密是由W3C ̄IIETF开发的,该技术在XML文档
中加入了一些元素用于封装加密数据和加密方法等,实现了
</DigestMethod>
</Reference>)+
XML文件的机密性、鉴别、完整性、不可否认性等。
1。XML签名
</Signedlnfo>
<SignatureValue/>
以数字方式签署文档是早有的技术,但利用这些技术只可
以对整个XML文档进行数字签名,而对XML文档的特定部分进
(<KeyInfo/>)?
(<0bject ID.9/>
: 签名是一个非常必要的功能。例如如果对一个文档只能进行整
体签名,那么一旦签署完毕将无法再对史档进行修改。而如果能
</Signature>
够对文档的一・部分进行签名,则其他人(机器)可以对其进行修改
和扩充。因为Ⅺvn一的可扩充性,XML签名还可以在一个Ⅺ 文
(2)XML签名语法
档中保存多个签名,这样可以使各方联合起来,协调合作对同一
下面将详细介绍XML签名规范的语法、主要元素、目的
个文档进行操作,从而完成一项工作。另外,XML签名是持久
以及主要功能。
性的签名,即不论文档是在传输还是在存储状态,签名结果都保
在2002年2月发布的规范中,定义了XML签名的所有元素
存在文档中(如SsL只在传输中保存签名,且在文档外部)。
都定义在下面的命名空间中:DS:http://www,w3.org/
XML签名规范支持对任何数字内容进行数字签名,在签
2000/09/xmldsgi#。
名中,签名通过间接方式应用在数字内容上 首先,对要签署
<Signature>元素
的内容进行摘要处理并放置在一个XML元素中。然后,对该元
<Signature>元素是XML签名的核心元素,XML签名就
素进行摘要并签名。XML签名代表的是签名后的XML元素而
是由<Signature>元素表示的,足根元素。它可以封装它所签
是原始数据。摘要处理是使用摘要算法(如MD5,SHA—l等)
署的数据对象,也可以封装于数据对象之内。它有一个Id属
来计算出原始数据的散列值的过程。签名过程是对这个散列值
性,用来作为其标识符,使其它元素可以对它进行引用。
进行的。由于摘要值通常都比原始数据小很多,所以使用它可
<Signedlnfo>元素
以缩短签署数据所需的时间和使用较小的空间,从而使数据的
元素路径:<Signature>/<Signedlnfo>,<Signedlnfo>
传输和存储更为有效。散列值是原始数据的“指纹”,任何对
元素包含了关于实际被签名的数据对象的信息以及规范化和签
原始数据的微小改动,因摘要算法的“雪崩效应”,散列值都
名的算法。
会发生巨大的变化。当对散列值进行签名后,就保证了XML文
<Canonical izationMethod>元素
档的不可变更即文档的完整性。另外,因对散列值进行签名是
元素路径:<Signature>/<SignedInfo>
使用的个人密钥,因此同时证明签名人的身份,即身份验证。
/<CanonicalizationMethod>.
(1)XML签名的基本结构
C anonicalizati0nMeth0d>元素用于指定应用到
在XML签名中,用根元素<Signature)进行标识,有关它
<SignedInfo>元素的规范化算法。该元素是必须的,所使用
所签署的原始数据的信息在<signature>元素中以URI表示,
的算法flJAlgorithm属性来指定。
同时在<Signature>中还包含摘要值、签名值等其它必要信
~一
个逻辑上相等的XML文档可以有多个不同的物理表现
息,验证签名所需的密钥或密钥引用也可以包含在其中进行传
形式(如在某些地方加入空格等),因此在进行摘要之前要经过
输和存储…。以下为<Signature>的基本结构(其中?表示0个或
规范化,以防止同一文档在其他上下文中可能会有的不同文本
者一个匹配项,+表示。个或多个匹配项,十表示一个或多个匹
表示形式,从而导致签名验证失败。
配项)。
<signatureMethod>元素
<Signature ID?>
元素路径:<Signature>/<Signedlnfo>
计霹柳安呈2。。6・7 f 21
维普资讯
/<SignatureMethod>,<SignatureMethod>元素的A卜
gOrithm属性指定在将规范化的<SignedInfo>转换成
<Signature>时所用的算法。
<Reference>元素
元素路径:<Signature>/<SignedInfo>
/<Reference>,<Reference>元素用于标识引用的数
据,并且带有数据对象的摘要值。它有三个属性:ID属性使文 X509Data:关于X509证书的数据。
档的其他部分可以引用它自已,URI属性用于对数据对象进行
<any>:用户自扩充的关于密钥的信息。
引用,Type属性用于标识被签署对象的类型。当对多个数据对
(3)建立XML签名步骤
象进行签名时,<Reference>元素可以出现多次,此时URI属
‘ 面列出了建立XML签名详细步骤:
性是必需的。
1)建立<Reference>元素,创立每个资源的消息摘要。
<Transforms>元素
①列出所有要签名资源的URI;
元素路径:<Signature>/<SignedInfo>
②按应用程序要求进行数据对象进行转换。如果转换包含
/<Reference>/<Transforms>,<Transforms>元素用
多个步骤,则每一个步骤在<Transform>元素中指定,并将
于指定在计算摘要之前数据对象可能需要的某种形式的规范化
它们放在<Transforms>元素中,放入顺序与应用顺序相同,
转换。可以认为是对需签名的数据对象的一种操作,在此情况
③对转换后的数据对象进行摘要计算;
下数据在进行签名前需要进行一些准备,否则可能需要筛选相
④使用Base64编码算法,生成摘要的Base64编码,并将它
关的数据才能访问真正需要签名的数据。<Transforms>元素
们放入<DigestValue>元素内I
包含一系列有序的<Transform>元素。
⑤生成<<D i g e s t M e t h O d>元素,其中包含
<DigestMothed>元素 <DigestValue>元素、消息摘要算法的标识;
元素路径:<Signature>/<SignedInfo>
⑥生成<Reference>元素,其中包含<Transforms,
/<Reference>/<DigestMothed>,<DigestMothed>元
<DigestMethod>和原始数据对象的URI标识。
素指定对对象数据所使用的摘要算法,所使用的算法fl ̄Algo—
2)创建<SignedInfo>元素
rithm属性来指定。常用的摘要算法有SHA一1,MD5,但最近
①创建<<S i g n e d工n f o>元素,将上面创建的
MD5算法表现得容易受到攻击,因此XML签名规范不推荐使
<Reference>元素全部加入其中;
用MD5算法。
②加入(<SignatureMethod>子元素,指定签名算法;
<DigestValue>元素
④加入<CanonicalizationMethod>子元素,指定规范化
元素路径:<Signature>/<Signedlnfo>/
<Signedlnfo>的算法I
<Reference>/<DigestMothed>/<DigestValue>
④使用<CanonicalizationMethod>元素中指定的算法规
<DigestValue>元素包含数据对象的摘要值,用Base64编
范化<SignedInfo>元素。
码表示。
3)生成签名值
<SignatureValue>元素
使用<Signedlnfo>qa的<SignatureMethod>子元素指定
元素路径:<Signature>/<SignatureVal
的签名算法来计算<Signedlnfo> ̄:素的签名值,并将签名值
ue>,<SignatureValue>5 ̄素含数据对象的签名值,用
加入<SignatureValue>元素中。
Base64编码表示。
4)创建<Signature>元素
<Keylnfo>元素
①创建<S i g n a t U r e>元素,将上面创建的
元素路径:<Signature>/<KeyInfo>,<Keylnfo>元素
<SignatureValue>和<Signedlnfo> ̄:素加入;
是可选元素,用于携带XML签名的密钥信息。它包含密钥、公
②根据需要创建可选的<Keylnfo> ̄:素和<<Object>元
钥名称、安全证书以及其他的信息。<Keylnfo> ̄素有ID属
素。
性,用于其他元素进行引用。
(4)验证XML签名步骤
因为关于签名的密钥相关信息很多,甚至用户可以进行扩
下面列出了验证XML签名详细步骤:
充,所以下面仅列出一些常见的<KeyInf0>元素的子元素。
1)规范化
计算觚安至2006.7
维普资讯
技术实用技术
Network&CoITIpu rer Security
使用(SignedInfo>的<CanonicalizatioI1
同的获取方式。
Method>子元素中所指定的算法来规范化<SignedInfo>
3)解密数据,使<EncryptionMethod>元素中的算法,
元素。
解密中<CipherData>的内容。
2)进行引用验证
4)还原原文,将解密后的数据,替换<<Encryp dData>
将生成的摘要值与<DigestValue>元素中包含的摘要值比 结构,获得原文。
较,如果有任何不匹配,州引用验证失败,即原始数据对象被
更改。
三、XML签名与加密应用到WebB ̄务
3)进行签名验证
安全中的优势
将生成的加密摘要值与<SignatureValue>元素中的加密
摘要值进行比较,如果两者不匹配,则签名验证失败。
2、×ML加密
XML签名、加密规范提供了XML文档的安全性、机密性
XML签名可以实现文档的完整性,并且可以进行身份验
和身份验证。它有以下特点:
证,但文档也需要机密性,因此W3C成立r一个工作组,由它
(1)部分性XML签名、加密规范可以只对xML文档的
某些需要处理的特定部分进行签名、加密,因此相当的灵活,
来开发用于加密和解密XML文档的方法。该工作组于2002年l2
门提交了XML推荐规范。XML加密允许对文档中特定的部分
算法处理时问短;
进行加密,也呵以对同一文档的不同部分进行多重加密,加密
(2)多重性XML签名、加密规范可以对xML文档进行
后的文档在传输和存储状态都是安全的。
多处签名和加密,不同的处理单位也可以对同一文档进行签
任XML]/II密中,加密后的数据以XML格式表示,并且由
名、加密,因此适合多方联合起来,合作处理某一项t作,
一
个(EncryptedData>元素或<EncryptedKey>元素来标识
(3)持久性经过XML签名、加密处理的文档,无论是
<EncryptedData>元素用来表示除加密密钥以外所有的加密内
在存储状态还是在传输状态都是安全的,不存在类似SSL的
容,而<EncryptedKey>元素用来表示加密后的数据是一个加
“安仓间隙”
密密钥。除了表示加密内容外,XML ̄/II密还表示了其他的加密
Web服务是基于SOAPf ̄IWSDL等之类的标准协议,它
信息,如所使用的加密算法和加密密钥等,这样使应用程序的
们是以XML格式描述一种标准的数据表示格式和消息格
工作得以简化。另外,XML加密在对XML文档加密时并没有
式。对于Web服务安全的实现最好是基于开放的标准协议,
:意义任何新的加密算法,而是构建于现有的算法之上,从而使
而不是依赖f某些专用格式。所以XML签名、加密规范将
互操作成为可能。
安全集成f1]XML环境中,完仝可以作为安全的Web服务的
(1)xML加密步骤
基础。
1)选择加密算法。XMLJill密算法中有对称加密和不对称
构建Web服务的一个动机就是为了实现一个在松散祸合、
加密,对称加密比不对称加密速度不快,而使用对称加密必须
随时可用的应用程序中,由不同各方的服务可以相互合作,共
传递密钥给接收方。在实际使用不对称加密时,可以使用不对
同完成一项任务。由于XML签名加密的多重性,使设计跨越单
称加密算法加密对称加密的密钥,实际传输的数据使用对称加
位界限并且多方参与的安全应用成为可能,并且因为其持久
密。
性,各参与方都能保持以安全的方式参与。
2)选择密钥传输方法。解密必须使用密钥,可以传输解
综卜所述,xML签名与加密技术部分满足TWeb1]ll务安
密的密钥的方法:不传输密钥、使用密钥名称或其他相关信
全的需求,囚此可以作为Webff ̄务安全的基础。
息、传输加密后的密钥。
3)加密原始数据。
参考文献
4)生成<EncryptedData>。
…1孙永强著,web服务深入编程,清华大学出版祖.
5)生成加密文档。
[2 Si2】mon gobinson著、康博译,c#高级璃程,清华大学出版杜.
(2)解密XML ̄I]:密文档
[3】宗平、邓赛峰,web服务安全结构模型研究和设计,计算机
1)确定算法,通过<EncryptionMethod> 素获取加密
与现代化,2004年第1 1期.
算法。
【4】郑东曦、唐韶毕、黎绍发,XML web服务安全技术纵览,计
2)获取密钥,因加密算法和不同的密钥传输方式而有不
算机工程与应用2004.07.
计鞠栅安宝2。。6・7 1I23
版权声明:本文标题:在Web服务安全中XML加密与签名的应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713578266a641641.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论