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 


本文标签: 签名 加密 进行 元素 数据