美章网 资料文库 浅谈分布式日志系统安全接口设计范文

浅谈分布式日志系统安全接口设计范文

本站小编为你精心准备了浅谈分布式日志系统安全接口设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

浅谈分布式日志系统安全接口设计

0引言

在复杂的多系统应用中,日志系统的建立对于日志的分析、查询有重要作用,多应用系统组成平台中,一般采用分布式日志系统用于日志的存储、分析与查询[1]。采用易于识别和理解的REST日志服务接口是分布式日志系统建立的关键[2],基于REST的日志服务能提供统一接口和资源定位,简化日志服务接口的设计和实现,降低日志服务接口的复杂性[3]。但是REST本身缺少安全特性,存在着接口易被破解的危险,如果破坏者通过日志服务资源地址进行猜解,获取了操作某一日志资源的接口并对该日志服务接口进行攻击,那么很容易造成日志系统数据的破坏。本文针对REST中易于破解的危险性问题,根据复杂的多系统应用平台在分布式日志系统中需求,探索日志服务的安全接口方法,设计一种基于REST接口安全认证方法。

1REST安全接口设计

一个安全的REST日志服务接口是需要对请求账户的认证与授权的鉴定,同时避免日志服务接口被大规模非法调用,出现系统资源的消耗,影响系统的正常访问,甚至导致系统瘫痪、数据泄露、伪造(篡改)数据、制造垃圾数据等严重后果。

1.1安全接口模型

客户端为第三方应用系统,请求对分布式日志系统增删查服务。服务端为安全接口认证服务端,第三方应用系统在调用分布式日志REST服务接口之前,需要根据签名机制为其HTTP请求计算一个签名(sign),并使用签名机制后的URL请求分布式日志REST服务接口。REST日志接口服务器在接收到请求时会获取请求账户、请求时间戳、请求的URI,然后根据请求账户去数据库查找对应的密钥,然后REST日志接口服务端根据签名机制为请求的参数重新计算签名,并判断其签名值是否与第三方应用传递过来的签名值参数值一致,以此判定客户端HTTP请求是否被第三者伪造或篡改。

1.2安全接口认证方法

安全接口认证方法是服务端对客户端做认证授权,包含请求签名值的生成、防止接口重放攻击、认证方法三个部分。

1.2.1请求签名值的生成

教育电子身份号(EducationElectronicIdentity,EEID)已广泛应用于网络实名制管理[5]。采用教育电子身份证号作为第三方应用标识(请求账户),但是仅仅依靠教育电子身份证号(EEID)作为第三方应用标识做身份认证的凭证还是存在一定的安全隐患,所以采用MD5(信息-摘要算法5)算法根据EEID生成一个安全密钥(secretKey)。将EEID与安全密钥作为服务端对客户端做身份认证。分布式日志系统提供日志服务的过程中,身份凭证是连接客户端与服务端之间的纽带,客户端通过携带身份凭证、时间戳、签名值访问分布式日志系统资源,为防止身份凭证篡改而防范攻击,凭证传递、时间戳、签名值传递的安全性至关重要。所以为了身份凭证传递的安全性,为每一次请求计算一个签名值,签名值作为传递过程中是否数据的篡改的校验。请求签名值的生成方法为:将请求账户(appkey)、请求账户相对应的密钥、请求的时间戳(timestrap)、请求的URI(rest_uri)采用一定的规则组成一个字符串,对该字符串采用HMAC-SHA1加密算法得到一个hash值的二进制数组,然后将该二进制数据转换为十六进制的字符串,该字符串为此次请求的签名值。

1.2.2防止接口重放攻击

重放攻击也成为新鲜性攻击,即攻击者通过重放消息或消息片段达到对主体进行欺骗的攻击行为,在一个开放的空间中,攻击者利用窃听到消息进行重放,从而到达破坏消耗系统资源的目的。基于REST日志接口服务端校验时间戳用来防止重放攻击,首先服务端获取客户端传递过来的时间戳和生成服务端的时间戳,比较客户端传入的时间戳与服务端生成的时间戳是否在指定超时范围内,通过校验后再校验客户端签名值在服务端是否使用,保证签名值在服务端只能使用一次。只有通过以上校验过程,日志资源提供服务器才会响应请求资源。

1.2.3认证方法

安全接口认证方法是服务器校验客户端是否正常请求的过程。客户端在调用分布式日志REST服务接口时携带签名值,基于REST日志接口服务端校验时,获取请求参数和数据库中请求账户对应的密钥,重新计算签名,并判定服务端计算的签名值与客户端传递过来的签名值参数值是否一致,以此对传输过来的身份凭证是否有效性进行验证。

2REST安全接口实现

分布式日志系统REST安全接口认证方法实现分为客户端与服务端的实现。客户端为分布式日志系统接口调用方,即日志的生产者方。服务端为分布式日志系统接口提供方,即日志的储存和分析平台方。

2.1请求账户申请

在客户端与服务端实现前,需要进行请求账户申请。请求账户申请首先在账户管理平台上申请请求账户,管理员对请求账户申请进行审核与资源授权,账户管理平台自动根据EEID生成应请求账户是根据教育电子身份证号(EEID)生成第三方应用标识码作为请求账户,而EEID生成第三方应用标识码可以保证请求账户的唯一性。密钥生成采用MD5(信息-摘要算法5)生成做为密钥的基础算法,从申请账户计算MD5值做为密钥较容易,同时任意长度申请账户计算出密钥的值长度是固定的,同时申请账户的数据任意改动,得到密钥的值有很大区别,有很大的抗修改性。简单的MD5生成做为密钥是不安全的,在MD5散列的过程中,加入足够长的salt(即干扰字符串)生成MD5,而加干扰字符串后的MD5生成出密钥是无法看到MD5具体的处理过程,即实现了申请账户对应唯一的密钥,同时根据申请账户是不能伪造出密钥的。

2.2客户端实现

客户端根据签名机制算法计算签名值,并使用签名机制后的URL请求资源。初始时,在请求账户管理平台上得到请求账户和请求账户相对应的密钥;然后将请求账户、请求账户相对应的密钥、请求的时间戳、请求的URI通过签名机制算法得到签名机制后的URL;最后通过HTTP方法请求签名机制后的URL。

2.3服务端实现

基于分布式日志系统中REST的安全接口设计中服务端考虑所有的客户端HTTP请求,都需要经过身份认证后才能进入后端业务逻辑,固采用MVC拦截器注入的方式,这样业务逻辑和身份认证逻辑可以解耦。在拦截器中preHandle预处理回调方法中,实现服务端身份认证逻辑。服务端身份认证得到客户端HTTP的请求中获取请求账户、时间戳、签名值和请求的URI,进行传入参数的校验、时间戳的检验、重放攻击的防止、请求账户状态的校验、签名的校验、请求资源的鉴权等一系列身份认证通过后,然后进入请求对应的资源并返回。

3测试

目前国内外有效可行的Web服务安全性测试技术研究甚少,更加缺少对于Web服务安全性全面系统性的测试方法。本文采用httpclient和apache-jmeter-2.12作为模拟应用系统端对分布式日志系统REST安全接口进行性能测试,并对比分布式日志系统不采取安全接口与采取分布式日志系统设计REST安全接口的安全性与性能。性能测试中以不采取计安全接口中系统能承受最大并发线程数800,间隔时间1秒,循环次数为10。

4结束语

本文研究了基于教育电子身份号的REST接口安全认证方法,设计了分布式日志系统中日志服务安全接口,并对该安全接口进行测试。测试结果表明,该安全接口既能够有效地对请求做身份认证,又能实现请求过程中数据的防止篡改、防止重放攻击和能够对请求资源进行鉴别的功能,对于复杂的多系统中接口的安全设计有一定的推广作用。