APP下载

基于HTTP平台的网络安全性研究

2013-11-19李彦广

商洛学院学报 2013年4期
关键词:服务端公钥服务器端

李彦广

(商洛学院 计算机科学系,陕西商洛 726000)

HTTP平台是网络安全性的热点同时也是难点问题,现在好多研究只是关注对常规攻击的防范,比如文献[1]提出XSS注入式攻击的防范加转义输入尖括号;文献[2]提出CRSF注入式攻击的防范设置 Cookie,为 HttpOnly以及增加Session相关的Hash Token码;文献[3]提出SQL注入攻击的防范将分号转义等。虽然这些做起来简单,但不足以解决现阶段的网络攻击模式,需要了解基于HTTP平台传递信息的原理,更深层次的解读现有的防范措施的原理,找出其漏洞,以便对现有的防范措施升级。HTTP平台的防御策略探析从平台的安全性着手,探讨HTTP平台搭建所涉及的技术细节。根据需要传递信息,找出最佳的选择。

1 HTTP协议的安全性分析

HTTP是一种无状态的应用层协议,所涵盖的信息都是未经加密的明文,包括请求参数、返回值、Cookie、Head 等[2]。因此,外界通过对通信的监听,可以轻而易举地模拟出请求和响应双方的格式,从而伪造请求与响应、修改和窃取各种信息。相对于TCP协议层的Socket传输方式,针对HTTP协议的攻击门槛低。因此,基于HTTP协议的Web及SOA架构,在应用的安全性方面,需要更加重视。因此,在实际传递信息过程中,常采用摘要签名法、公私钥签名法、HTTPS法、应用授权法,为进一步做好信息传递的安全性,有必要对这些方法作进一步分析研究。

2 摘要签名法分析

2.1 客户端请求

对于重要的数据,关心它的真实性和准确性,因此要保证在通信的过程中,数据不被第三方篡改。在图1中,请求的参数经过排序,将参数名称和值经过一定的策略组织起来,加上一个密钥,然后通过摘要算法生成签名[4]。通常的算法包括MD5、SHA等,根据算法的不可逆性和参数的多变性,在一定程度上保证了通信的安全性。

图1 签名构造

2.2 服务端校验

在图2中,服务器端接收到请求后,以相同的顺序将参数进行排序并且链接起来,加上相同的密钥,以相同的密钥算法生成签名,然后与请求的信息签名进行比较,若相同,信息合法,否则,非法。

服务器校验完成后,生成响应,同样的,响应的内容也进行同样的签名,客户端收到响应后,根据接收的sign来验证签名的合法性。

图2 签名的校验

2.3 实验证明

有一个请求:www.xxx.com/api.do?userid=123456789&page=1&pagesize=108&signtype=MD5&charset=gbk&method=com.chenkangxian.getname&sign=aef503e0ae7c27b04c2fe1cc95ce1d,在这个请求中,userid、page、pagesize是常规参数,signtype为加密类型,charset表示编码,method表示接口类型,sign表示生成的字符串,为了方便传输,采用BASE64编码,服务器端将接收来的参数拼接成userid=123456789&page=1&pagesize=108&signtype=MD5&charset=gbk&method=com.chenkangxian.getname,采用md5算法生成签名串为aef503e0ae7c27b04c2fe1cc95ce1d,与传递过来的sign=aef503e0ae7c27b04c2fe1cc95ce1d相同,这个请求合法。

3 公私钥签名法分析

在摘要签名中解决了合法性校验问题,但密钥相对固定,若多客户端调用,容易造成密钥泄露,为了解决这一缺陷,可以给每一客户配一对公私钥。

3.1 客户端签名

客户端在请求时,客户端将参数按一定的策略组合起来,形成一定的顺序,拼成一个字符串,MD5后,通过私钥加密生成签名,整个过程如图3。

3.2 服务器端验证

在服务器端,采用图3相同的操作,采取相同的参数顺序,促成字符串MD5,通过客户端的公钥解密签名,与其MD5生成的值进行比较,以此来推断数据的合法性。

图3 客户端私钥签名

3.3 客户端验证

采用相同的方法,使用服务器端的公钥,对服务器端校验(如图4)。

图4 服务器端公钥校验

4 HTTPS法分析

摘要签名及公私钥签名很好的解决了数据的合法性问题,但对一些重要的信息采取明文传输,风险很大,主要存在两个方面,一是服务器端的公钥与密钥相对稳定,容易泄露;二是服务器的身份难以保证,第三方可以通过域名欺骗来伪造身份,欺骗客户端向伪服务器发送信息[5],这样一来,所有的信息就暴露无疑,造成损失将不可估量,因此,采用 SSL(Secure Socket Layer),这种协议的加密手段更加严格,从而保证信息的安全性。

4.1 SSL(Secure Socket Layer 安全套接层)安全优势

SSL(Secure Socket Layer安全套接层)是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术[6]。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。通过SSL协议,能够完成对服务器端的认证、加密数据,防止在传输过程中信息的泄露和篡改,在很大程度上保证了通信的安全性。

4.2 SSL(Secure Socket Layer 安全套接层)安全的实现

依据SSL协议,HTTPS能够确保整个通讯过程的加密,密钥的产生是随机的,整个通讯过程通过数字验明证书验证通讯双方的身份,从而保障了通讯的安全性[7]。

图5 HTTPS通信时序图

图5给出了SSL协议的握手过程,首先,客户端向服务端发送SSL协议的版本号、支持的加密算法类型、产生的随机数,以及其他客户端与服务端通信所需的重要信息;随后,服务端收到客户端的信息,将它自己的SSL协议版本、支持的加密算法类型,以及产生的随机数等内容,加上它的数字证书,一起回复给客户端。

4.3 校验过程

证书以证书链的形式组织,客户端逐级校验证书的合法性,其中包括服务器域名是否与证书中的域名一致、证书是否在有效期内、办法证书的机构是否合法,这整个过程对用户来说是透明的[8]。

4.4 握手完成

校验完证书后,客户端将产生一个预主密码,并用服务器所给的公钥加密后传送给服务器端,服务端会根据预主密码来生成通信密码,在此同时,客户端也以相同的方式生成通信密码,这样,一次通信握手基本完成。

5 应用授权法分析

摘要签名法、公私钥签名法、HTTPS法都是在通信双方信任的基础上完成的,客户端直接与服务端链接并完成数据传输。现在还有一种用法是平台商将数据有限的开放给ISV(第三方软件厂商),ISV利用这些数据来给用户提供服务,它的前提是ISV必须得到用户的授权,因此,在应用授权法中使用了OAuth协议,使用OAuth协议为用户资源的授权提供了一个安全、开放的标准。

5.1 OAuth协议的安全优势

OAuth协议的出现,使得用户在不泄露自己的用户名和密码的情况下,能够完成对第三方应用的授权[9]。从图6可看见,第三方应用得到用户授权后,便可以在一定时间内访问到用户授权的数据。

图6 服务端用公钥签名

5.2 OAuth协议授权的实现

在图6的数据访问流程中,用户先对ISV(第三方软件厂商)发起请求,ISV向平台商请求Request Token,带上其申请的App ID,平台返回Request页面,带上自己的App ID、Request Token以及回调地址,用户在平台的页面上完成授权。然后平台通过ISV提供的回调链接,返回给ISV应用Access Token,ISV应用Access Token取到用户授权的数据,进行加工后返回给用户,授权完成。

5.3 OAuth协议授权的安全实现

为了确保通信的安全,一般会让ISV使用期私钥对参数进行签名,平台使用ISV的公钥进行签名验证,以此来验证ISV的资质,具体实现过程在前几种方法中已论述。

OAuth协议授权是一个相对复杂的过程,包含了系统的方方面面,比如,通信的加密解密,以及权限划分、Token生成和校验、公私钥管理以及分布式Session机制等,相对过去来说,由于开源社区的发展,为其实现降低了不少门槛,目前已出现了很多开源的解决方案[10]。

6 结语

网络安全一直是全世界关注的焦点,如何有效实现网络安全,查找漏洞、消除隐患,也是人们最头痛的问题。本文结合HTTP平台安全隐患常用的防御方法,在分析HTTP平台传递信息的原理的基础上,给出了HTTP平台搭建过程中所面临的问题以及解决的方法,分析了每种方法的工作原理及存在的缺陷。通过对比分析,应用授权法的安全级别相对较高,OAuth授权是一个相对复杂的体系,涵盖了系统的方方面面,包括通信的加密解密,权限的划分、Token生成和校验、公私钥的管理,相对前几年来说,由于开源社区的发展,为其实现降低了不少门槛,目前已有很多开源解决方案,平时应用时,可以根据用户的需要,选择最佳的防御策略。

[1]李馥娟.基于Cookies的Web应用分析及其安全研究[J].网络安全技术与应用,2009(6):88-93.

[2]冯 挺,王 慧.WEB服务认证[J].计算机系统应用,2009(8):209-216.

[3]赵 娜.浅谈WEB应用漏洞的防御解决方案[J].计算机与网络,2011(8)236-237.

[4]张卫全,胡志远.浅析作用于WEB2.0安全防范的OpenId和Oauth机制[J].通讯管理与技术,2011(2):15-20.

[5]王宇飞,范明钰,王光卫.一种基于HTTP摘要认证的SIP安全机制[J].重庆邮电学院学报:自然科学版,2005,17(6):769-774.

[6]古治钢.基于验证码破解的HTTP攻击原理与防范[J].计算机工程,2006,32(7):170-174.

[7]袁 志.一种抵御HTTP洪水攻击的方法[J].计算机工程,2012,39(7):271-276.

[8]孙长华,刘 斌.分布式拒绝服务攻击研究新进展综述[J].电子学报,2009,37(7):1562-1569.

[9]Gsvrilis D,Chatis I,Dermatas E.Flash crowd detection using decoy Hyperlinks[C]//Sensing and control.IEEE International Conference on Networking,2007:466-470.

[10]苟 宁.网络安全性能测试平台-HTTP、FTP、POP3模块设计与实现[D].四川大学,2004.

猜你喜欢

服务端公钥服务器端
Linux环境下基于Socket的数据传输软件设计
一种基于混沌的公钥加密方案
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
浅析异步通信层的架构在ASP.NET 程序中的应用
在Windows Server 2008上创建应用
基于Qt的安全即时通讯软件服务器端设计
HES:一种更小公钥的同态加密算法
SM2椭圆曲线公钥密码算法综述
基于格的公钥加密与证书基加密