`

Web Service 安全基础

阅读更多

在互连网应用中Web Service已经得到了广泛的认同,同时也是因为这种广泛的应用,使得Web Service在规范化方面越来越成熟。企业和企业之间的信息交互,很重要一点就是信息的安全性,电子商务等互连网应用这方面的需求更为突出,如果没有安全的保证,没有客户或者企业愿意将信息在网上交互,同时也不会信任任何接受到的信息。然而,作为SOA的有效技术手段,Web Service的动态性很强,服务的开发者无法预料到服务将在什么环境下被使用,因此服务的安全性变得更加复杂。

在考虑安全性方面主要有三个关键性的概念:

机密性(Confidentiality),完整性(Integrity,身份鉴别(Authentication)。

机密性:除了指定的接受者,其他人无法查看消息的内容。通常会使用密钥(对称或非对称)对消息加密,从而保证消息的机密性。
    
完整性:确保消息在传输的过程中没有被修改。即保证消息的接收者接收到的消息与消息发送者最初发送的消息完全一致。通常会对消息做摘要(Digest),再使用密钥(对称,非对称)加密摘要,从而保证消息的完整性。   

身份鉴别:确保消息发送者的身份与消息中所声称的用户身份一致。最简单的做法就是让用户同时发送用户名和密码,服务方确认密码的有效性从而判断该用户身份是否与用户名所代表的一致。然而在实际的应用中的做法通常不会如此简单,此时往往会使用密钥对一段信息加密,服务方通过解密此信息确认用户的身份。

那么如何选择使用对称密钥还是非对称密钥?什么时候使用公,什么时候使用私?首先由于对称密钥的加密解密速度比非对称的密钥快很多(大约1000倍),所以在加密消息的时候一般都使用对称密钥。但是有一个问题就是对称密钥又如何发布呢?网络上两个没有联系的用户如何建立起一个共享的密钥?这时就需要PKI来帮助我们将这个共享的密钥建立起来,即利用非对称密钥中的公来加密那个共享密钥,传递到私的拥有方。由此可以知道:对称密钥加密普通信息,非对称密钥加密对称密钥。

Integrity,使用非对称密钥的私加密摘要,得到的东西是一个广为人知的东西Digital Signature(数字签名). 而使用对称密钥加密摘要得到的是HMAC(Hash message authentication codes)。他们在保证消息完整性的同时,都具有身份鉴别的功能,不过前者还有一个功能---抗否认性。值得注意的是在Confidentiality中,使用非对称密钥方法是用公加密,私解密,而在Integrity中使用非对称密钥的方法恰恰相反。

在当前的安全策略上很多时候会使用到SSLVPN,他们的好处和缺点网上都有评论,但作为和传输层无关的安全策略,WS-Security规范无疑是最具广泛的应用。IBMBEA,Microsoft共同制定了WS-Security规范,解决了安全的三个基本问题:机密性、完整性、身份鉴别,在Web Services使用SOAPXML 格式)作为消息封装协议的背景下,标准化组织分别制定了XML EncryptionXML Digital Signature、与SAML(XML格式的Security Token)三套规范,WS-Security则是规定了如何将以上规范组合起来以满足Web Services安全需求的一套规范。

XML Signature规范是将数字签名和XML组合而成的产物,不要以为XML Signature仅仅是将数字签名技术应用于XML文件。

XML Signature包括以下的功能:

    1XML Signature可以对任何能够以URI形式(uniform resource identifier)定位的资源做签名。既包括与签名同在一个XML文件中的元素,也包括其他XML文件中的元素,甚至可以是非XML形式的资源(比如一个图形文件),只要能被URI定位到的资源都可以应用XML Signature. 这也代表了XML签名的对象可以是动态的变化。

    2XML Signature可以对XML文件中的任一元素做签名,也可以对整个文件做签名。

    3XML Signature 既可以用非对称密钥做签名(Digital Signature),也可以用对称密钥做签名(HMAC)

具体的标签以及含义就不做解释了,不过如果要做签名策略配置,需要熟悉这些标签,这也会影响到后续开发中遇到的各种问题。另外两个规范这边就不做说明了,因为现在服务框架暂时只是提供了Signature的要求,如果内容需要加密,那么对于应用来说性能可能是不可接受的,因此需要的是利用SSL和签名结合的策略来实现完整的安全机制。

 

对于WSSE的支持

       ASF这部分是改造了TusncayWeb Service子项目,Tuscany子项目内部集成的web service的开源框架是axis2,虽然很多朋友评价xfire好于axis2,不过个人在使用过程中感觉其实两者各有所长,只是说如何在适当的场合使用,如果需要和Spring很好的集成,那么xfire当然是最好的选择,如果需要能够有很好的wsse以及其他开源支持,那么axis2应该是个很不错的选择,毕竟apache组织下的开源项目众多,自家人集成起来更是得心应手,特别是wss4jaxis2的集成,axis2addressrampart两个子插件模块使用起来十分方便,同时在框架的可插入性和模块化上,觉得axis2要好过xfire。不过axis2的客户端比xfire要麻烦得多,xfire封装的好多了,这也是很多人喜欢xfire的缘故了(不过再傻瓜也抵不过.net客户端的傻瓜,不过这个傻瓜模式无法让人测试,那么就真的被当成傻瓜了),毕竟易用性往往是吸引到第一批客户的重要特质,这也是后续做ASF所需要考虑的问题。

       使用Axis2的框架结合Jetty这个轻量级内嵌容器作为Web Service发布框架(不得不提的是,在作web service的性能测试的过程中,公司的测试资深人员对于ASFweb service性能作了肯定,其实这和使用Jetty也有一定的关系,现在越来越多的开源框架都使用了Jetty作为内置web轻量级容器,很灵活,同时也可以达到很好的性能要求,在后面工作中对于hessian集成到服务框架中来,也是采用了Hessian+Jetty),并且通过Axis2rampart集成了wss4j,提供了WSSE的增强功能。

 

对于认证模式场景需求问题的解决

       ASF对于Web Service Security这部分只是要求了Signature,而对于Signature需要提供两种方式,UserNameTokenX.509证书。前者提供给内部的一些应用使用,后者提供给外部ISV使用,两者主要差别也就是在性能上,后者经过测试,在CPU的使用上,是6-8倍于不带SignatureWeb Service

       UserNameToken这种模式很简单,就很类似于我们平常的用户认证,用户名和密码作为明文或者加密,嵌入在Soap Header中即可,客户端根据本地保存的受信用户记录来交验是否是合法用户。

       X.509就比较特殊一些,所谓的证书,其中包括了公对(作为签名和认证使用),证书颁发者的信息(可能是一些CA机构或者是用本地的证书生成工具自己生成),证书拥有者的身份信息,以及一些导入的受信第三方的公证书。当前的证书方式的签名认证主要有两种模式,一种是双方证书都是由第三方CA认证,同时双方都将对方的CA作为可信的CA,那么请求发起方将会把自己的证书放入到Soap Header中,接受方接受到请求以后,获取证书,发现是受信的CA,那么就认为请求发起方身份可信,同时在作完整性摘要校对。另一种模式就是双方的证书可以没有任何权威的CA作保证,但是双方首先就需要将附带自己公的证书发送给对方,对方将这附带有公的证书分别导入到证书管理库中(java是某个JKS.netwindows的当前用户或者本机的证书管理文件)。双方交互的时候不需要将证书置入Soap Header中,但是需要将证书的引用标示(序列号或者是X.509SubjectKeyIdentifier)传递给服务端,服务端根据标示在本地的证书库中查找并且校验,这种模式的好处就是不需要CA的认证(省钱)同时传递的时候不需要将证书带入到Header中,节省了传递报文的大小,缺点就是双方需要互相保存对方的公证书到本地的证书库中,同时这种模式也为跨平台带来了很多问题,后续的互通中就会提到。

       ASF的证书认证模式中采用了后者,因为要求每个ISV去有一个第三方CA作为授权不是很可行,但是问题就是如果ISV需要导入我们的公证书比较方便,但是我们需要管理那么多ISV的证书,同时又需要动态上传修改保存证书那么就不能用原有的手动导入的模式,同时由于到时候部署的服务器集群不可能都维护一份本地的证书库,因此需要用数据库手段来维护,但是在应用启动以后再要新增或者修改证书,将会比较麻烦,因此采取了扩展wss4j的策略读取方式来适应新的应用场景。

 

 

 


扩展的
CrytoProvider类图

 


扩展后的
keystore 初始化以及signature部分流程图

         这部分设计主要是扩展了WSS4JCrytoProvider,扩展后的CrytoProvider重载了获取X509证书的几个方法,这里类似于AOP,通过提供ICertsLoaderHandler接口来回调获取其它存储内的certs 构建 visual keystore,同时在作signature的时候,如果发现ISVcert不存在于当前的visual keystore 中根据CrytoProvider的接口实现,来决定是全部刷新还是部分获取刷新当前的visual keystore中的certs。这样就可以达到了动态装载和刷新certs的要求,同时根据性能要求选择配置和实现不同的CrytoProvider

分享到:
评论

相关推荐

    XML Web Service开发

    XML基础知识 XML Web Service体系结构 XML Web Service基础技术 使用XML Web Service 部署和发布XML Web Service XML Web Service安全 XML Web Service设计 XML 基础 XML 编写 XML 查询 XML 序列化

    XML WEB SERVICE 认证课件

    第3章 XML Web Service基础技术 第4章 使用 XML Web Service 第5章 实现一个简单的 XML Web Service 第6章 部署和发布 XML Web Service 第7章 XML Web Service的安全 第8章 XML Web Service设计 第9章 全局 XML Web ...

    Web应用安全:WVS简介基本配置.pptx

    WVS简介- 基本配置 4 WVS扫描演示 3 WVS的基本配置 2 WVS的安装 1 WVS简介 目录 ...WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全测试工具 用于测试和管理Web应用程序安全性的平台 ...Web Service S

    web技术与网站规划共387页

    了解CGI、SSI、JSP、Web Service、.net技术 ,掌握 ASP 及ASP.NET Web编程的基本知识。 (六)日志文件:1学时 掌握Web服务器日志文件分析的基本方法。 (七)搜索引擎:1学时 了解建立搜索引擎、提高站点访问率的...

    Amazon Simple Storage Service(S3)简介.pdf

    本指南旨在向您介绍如何使用 AWS 管理控制台操 Amazon Simple Storage Service...它提供了访问 Amazon 用于运行其全球的网站网络的基础设施的权限,该基础设施具备 高扩展性、可靠性、安全性、高速度和性价比。该服务旨

    Web开发敏捷之道-应用Rails进行敏捷Web开发(第3版).pdf

    整体而言,全书既有直观的实例,又有深入的分析,同时还涵盖了web应用开发中各方面的相关知识,堪称一部内容全面而又深入浅出的佳作。 编辑推荐 《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on ...

    基于Web Service技术的教育资源集成研究 (2006年)

    结果提出了一种教育资源集成的基础架构方案,分析了教育资源遗留系统的现代化过程中应当注意的问题,给出了一个基于Web Service技术的安全身份认证实例,讨论了设计Web Service时的粒度问题。结论Web Service技术是...

    嵌入式系统/ARM技术中的一种以Web Service为基础的移动式医疗信息系统

    摘要:为了使医生、护士和管理人员能够更加方便地使用安全、便捷地移动医疗信息系统,达到普遍地提高医疗服务质量的目的,相关研究人员因此而研发出了移动式的医疗信息系统,该系统采用了Web Service的技术,引入了...

    论文研究-基于Webservices的XML引擎安全模型研究.pdf

    它以XML为基础,使用了基于XML语言的协议来描述要执行的操作或要与另一个Web服务交换的数据。SOAP是Web services的传输层协议,所有的SOAP消息均使用XML编码。XML engine是建立在Web service上的一种技术。在整个Web...

    基于Web Service的中小型医院电子病历系统设计

    根据Web Service的特点和优势,本文探讨基于Web Service的电子病历系统的体系结构、数据模型和安全性设计,并在此基础上提出下一步研究方向。方便患者就诊,减少大量检查手续,为患者提供方便。

    sql注入 黑客攻击 白帽子讲web安全

    1.1.3Web安全的兴起 常见攻击:SQL注入,XSS(跨站脚本攻击) “破坏往往比建设容易”,但凡事都不是绝对的。一般来说,白帽子选择的方法,是克服某种攻击方法,而并非抵御单次的攻击。比如设计一个解决方案,在...

    .NET程序设计全接触

    第一部分为基础篇,介绍一些必须的基础知识,包括1—3章。 • 第一章介绍.NET产生的背景、.NET的特点、结构、使读者迅速形成关于.NET 的一个全貌认识。... • 第十二章讨论.NET环境下Web Service的安全问题。

    HTTP协议基本原理PPT介绍

    第3章 XML Web Service 基础技术 第4章 使用 XML Web Service 第5章 实现一个简单的 XML Web Service 第6章 部署和发布 XML Web Service 第7章 XML Web Service 的安全 第8章 XML Web Service 设计 第9章 全局 ...

    1、 web脚本攻击 2、 IIS安全设置

    1、 web脚本攻击 2、 IIS安全设置 1. 地址栏中执行脚本  主机A在浏览器地址栏中输入“javascript:alert('xss')”确定后可以看到浏览器弹出了一个内容为xss的对话框,如图3-1-1所示。这说明在浏览器地址栏中输入可...

    一种基于Web Service的信息搜索引擎机制 (2010年)

    在解析Web Service的体系结构的基础上,分析了其应用于搜索引擎的原因,以油田信息资源为平台,设计了一种基于Web Service技术的信息搜索引擎解决方案,并详细描述了该方案中各模块的具体内容,工作流程及安全策略等...

    网络安全行业投资分析.pptx

    安全操作系统 网络安全审计 终端安全管理 网络准入控制 网络隔离与单导 防病毒网关 虚拟专用网 抗拒绝服务攻击 应用安全 Web应用防火墙 Web安全检测 网页防篡改 邮件安全 数据安全 数据库审计防护 安全数据库 数据...

    WEB Service环境下基于业务流程的访问控制模型设计 (2009年)

    结合传统的访问控制的优点,在充分考虑安全性的基础上,提出了一个关于WEB Service流程的授权架构模型,实现了电子商务平台更加安全、稳定、高效运行的目标。

    EJB入门及高级特性

    轻松学会EJB,包括开发流程,事务处理,Entity基础和高级特性,Time Service,安全,Web Service,会话Bean,消息驱动bean,资源注入

    北京中科信软 Visual Basic.NET培训

    二 .NET框架&C#编程 面向对象的基本知识体系 .NET中的面向对象设计与应用 C#与设计模式 泛型 C#中的新特性 程序集 .NET应用程序部署和版本控制 委托和事件 线程 反射 对象序列化 数据流和文件 Internet...

    构建安全的 ASP.NET 应用程序(中文译作+英文原作)

    这一部分还提供了基本知识文章集锦,可指导您在最短的时间内开发出实用的安全解决方案。 返回页首 本指南的内容构成 本指南分为四部分。目标是按逻辑划分各组成部分,这样有助于您更容易地消化内容。 第 I 部分,...

Global site tag (gtag.js) - Google Analytics