0 引言
网络的出现,方便了信息的流动.降低了人与人之间,以及企业之间信息流动的成本。为了充分发挥网络在信息交互过程中的作用,就需要在网络基础架构之上,构建各式各样的网络服务,以支撑日常的应用。目前各式各样的网络应用随处可见,但是多为封闭的系统.而为了更好的支持各种应用场景.经常需要对多个系统进行集成,在多个服务之间进行数据交换,协作完成共同的任务。Web Service正是为了处理这一问题而提出的构建在现有网络标准之上的、松耦合、跨平台、跨语言的数据交换和通信的标准方法。
Web Service系统利用互联网为用户提供服务,但是其关注与构建系统之间通信的协议,专注于数据描述(XML)和交换(SOAP),以及服务的描述(WSDL)与发布(UDDI),而对安全性的支持较为欠缺,使软件处于巨大的风险之中,需要在应用中加以解决。
1 Web Service安全问题描述
在日常应用中,Web Service的安全威胁主要来自以下几方面:
(1)数据的保密性无法保证
在网络安全中,要求信息不能够泄漏给未经授权的用户及恶意访问者,而Web Service运行在Internet之上,利用XML定义数据交换的格式,并利用SOAP进行数据交换.整个过程都是通过网络明文进行传输,容易被恶意用户监听和窃取。另外,由于Web Service的接口描述暴露在网络之上,也存在被恶意用户恶意调用的可能。
(2)数据的完整性无法保证
信息的完整性.要确保信息不会被未被授权用户修改,确保信息在存储、传输过程中不被修改、伪造和丢弃。而Web Service数据交换过程采用明文传输,该特性使得数据的完整性无法保证,能够被恶意用户修改,或伪造。
另外,在Web Service中没有提供相关的方法,对用户的身份进行必要的校验,也缺乏必要的权限控制,容易造成未授权操作,从而泄漏系统的信息,甚至危及系统的安全。
(3)缺乏必要的身份验证机制
Web Services并未定义相关的方法,对调用方以及服务提供方的身份进行必要的确认,从而无法保证Web服务的合法性,危及系统的安全。
(4)缺乏可扩展可灵活部署的加密方法
在日常的应用中.通常采用SSL协议,对Web Service数据传输过程进行加密和保护,但是利用SSL进行加密操作时,会频繁的进行加密解密操作,从而影响系统的通信性能,降低系统的性能。该问题在PDM系统中表现尤为突出。PDM系统中传输的多为体积庞大的工程设计文件,采用SSL的方法,会对系统的性能带来极大的影响。而在处理用户登录信息、密钥传输等问题时,SSL又是一个成熟的方法。因此在应用中需要更具实际情况,灵活的选择加密方法。
针对以上问题.在综合考虑了可使用性、性能、私密性等因素后,设计和实现了一套传输层加密方法,根据PDM系统的特点,针对不同的需要,采用不同的方法对数据进行加密操作,并应用在了实际的PDM系统中。
2 传输层加密方法
2.1 概述
在PDM(Product Data Management,产品数据管理)系统中,主要需要面对两种数据。一种是设计的文档、图纸等二进制数据信息,这些数据数据量大,变化较快,并且这些数据往往具有一定的时间效应.只需要保证一定的时效范围内不被破解.无法获取即可,因此,针对这部分数据,可以采用简单的加密方式,确保在可容忍的时间范围内,无法被破解即可。因此在传送大数量信息时,采用了RC2加密算法进行加密操作.其特点是加解密速度快,而且形成的加密文件体积并不会增大。在加密的过程中,如果传输的是比较大的图纸类文件,要先进行压缩。如果是数据库的表文件,则转换成XML文件,然后再进行加密。
除文档数据外,主要为系统内部的通信协作及信息交换,相比设计文档数据,这部分数据数据量小,但经常包含较为敏感的用户信息,如密钥信息、权限信息等,针对这部分数据,需要进行较为严格的加密,确保访问时经过授权,且无法被监听与破解。兼顾到身份验证的需要,这部分基于开源的CA中心,对用户证书进行发放和管理。在数据通信过程中,利用证书对交换的信息进行加密操作,从而保证数据的完整性。
传输层加密的体系结构如图1所示。
图1 传输层加解密体系结构
图中,业务逻辑为实际的应用逻辑,在传输过程中,会调用下层的安全服务,对传输数据进行处理,确保服务的安全性。
安全服务模块为系统提供加密解密服务及数字签名的校验,向应用的业务逻辑提供安全服务。安全模块具备RSA、RC2和M123三套数据加解密方法组。其中,M123加解密方法是一个自定义的对称密钥加密算法,该算法利用三个数字(m1,m2,m3)作为密钥,利用自定义的加密算法,根据(m1,m2,m3)生成相应的密文,同时在每次加密后,利用Feistel结构,对密钥进行混淆和轮替。M123加密方法主要用于对交换的密钥进行加密,增加密钥交换的安全性。
密钥及证书管理模块主要负责处理证书的请求,密钥交换。对称密钥管理模块主要用于对称密钥的生成及管理,证书文件主要用于获取本身私钥及向CA请求上层安全模块需要的证书信息。
2.2 服务器端密钥生成及交换
服务端在服务启动后,会随机生成RC2加密密钥和M123加密密钥。在密钥生成过程中,为了避免伪随机带来的问题,会利用随机数、机器码、机器时钟、加密算法的名称及当前时间综合生成源串,对该源串利用MD5算法生成摘要后,作为密钥。
在每个用户登录后,服务端向证书中心请求该用户的证书信息,利用证书对RC2加密密钥和M123加密密钥进行加密,并对加密后的数据进行签名,后发送给用户,用于用户的密钥交换。
服务器端的密钥生成及交换过程如图2所示。
图2 服务器端的密钥生成及交换过程
为了提高系统的安全性,对于服务器端的对称加密密钥均设置了超时时间,当超时后,服务器端会重新生成新的密钥。
2.3 客户端密钥请求及交换流程
客户端在登录后.会接收服务器端发送的RC2密钥和M123密钥,同时在每次请求是随机生成RC2密钥。客户端随机数生成的过程中的源码,除了与服务器端相同的因素外,还增加了用户名、用户密码的md5值及客户端ip等信息,以增大随机性及源码的复杂度。
客户端密钥交换的过程中,会利用服务端的RC2密钥和M123密钥对生成的RC2密钥进行加密,并做数字签名后,附加在请求中,发送给服务端。在此过程中,并未利用服务端证书对加密后的密钥信息进行再次加密,是为了避免频繁的密钥交换给服务器带来过大的压力。客户端的密钥生成及交换过程如图3所示。
图3 客户端的密钥生成及交换过程
同样,为了保证安全性,客户端的密钥也规定了一定的有效时间,会定时进行更新。客户端的密钥用于加密客户端与服务器间的每次请求。
2.4 整体流程分析
下面将对本方法的整体流程其进行详细描述。
(1)服务端生成加密密钥
服务端启动服务的时,会自动生成RC2密钥及M123密钥。
(2)客户登录并获取服务器端加密密钥
客户在登录时,会对登录密码进行摘要操作,并利用服务器端证书文件加密密钥信息,传输给服务端,服务端对解密并验证密码通过后,服务端将获取该用户的证书文件,加密密钥传递给客户方。
(3)客户端请求业务处理
当客户在一段时间内,第一次发起请求时,客户端生成随机的RC2密钥,利用该RC2密钥对请求进行加密,同时利用服务端的RC2密钥及M123密钥对客户端的RC2密钥进行加密,附加在请求信息中发送给服务方。此过程中,需要对信息整体添加数字签名。
(4)服务端响应请求
服务方收到请求后,利用自身保留的RC2密钥及M123密钥,解密报文巾的密钥信息,获取客户端的RC2密钥,利用客户湍的RC2密钥解密请求内容,并进行处理。完成处理逻辑后,服务端利用客户端的RC2密钥加密结果,并添加签名信息后,将数据返回客户端。
3 总结
利用该方案,减少了加密及解密过程中的数据交换,同时确保了关键信息的保密性、完整性,确保了web Service整个请求过程中的安全性。选取该方案的主要优势在于:
(1)性能好:在用户登录时,以及小数据量的交换时,使用RSA加密,整体速度不受影响,经测试能达到客户要求。
(2)安全性好:由于密钥具有一定的时效性,攻击者即使截获了一个文件并成功解密,也无法利用一直的密钥,解密以后数据。
(3)加密流程是自定义:如果不了解具体项目传输层加密的思想,即使截获了数据,也很难利用通常的思维进行解密,加大了解密的难度。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/