邵梅芳,陈家琪,卢 菁
(上海理工大学光电学院,上海200093)
在云计算数据服务平台概念出现之前,业界使用“数据库服务”(Database as a Service)这个概念[1],或称“数据库外包”(Database Outsourcing),指的是企业把数据库任务委托给专门的可以提供这些功能的第3方管理,第3方(数据库服务者)将对委托的数据库进行创建、访问、维护、升级和管理等。而云计算是一种基于因特网的超级计算模式,云计算发展也面临了许多关键性问题,特别是在数据安全和隐私保护方面尤为突出[2]。
云计算数据服务平台的概念所能提供的服务对象不仅仅是数据库,还包括了半结构化、无结构的数据甚至是文本文件、语音流和视频流等多媒体数据等。由于在数据交换方面上缺少统一的标准,XML是当前处理结构化文档信息的有力工具。XML描述的是数据本身的意义和实体之间的结构化的数据,又能够表示半结构化的数据,如 Web数据。XML数据已经逐渐成为Internet上数据表示和交换的新的标准。随着XML信息交流的增多,如何快速地从大量的XML数据中进行安全的数据查询已经成为众多研究者所关注的问题。
因此,把XML数据迁移到云计算平台中,对云计算平台中的XML数据实现安全查询已成为必须解决的问题。
了解云计算平台中的数据服务有3个重要的角色,分别是云计算中的数据服务提供者(DSP)、数据拥有者(Do)和数据请求者(DReq)。图1是云计算数据服务架构框图。
数据服务提供者(DSP)是一个专业的提供云计算数据服务的企业,维护委托方的数据,并能正确地进行数据的复制、备份等数据管理任务。
数据拥有者是拥有用户数据的企业,产生用户数据并将数据以保护用户隐私的方式委托给云计算数据服务提供者。
图1 云计算平台中的数据框架
数据请求者(DReq)是指可以将用户的查询转换成数据服务器可识别的查询(如经过一定的查询转换),将云计算平台中数据服务器返回的保护隐私的查询结果经过处理,方便用户进行查询后处理的前端。图1中涉及的3个角色之间的关系以及传送数据的过程为:
①首先,为了使DReq能够验证DSP正确地返回Do想要返回的数据,数据拥有者以一定的方式把密钥和验证码一起发送给数据请求者;
②其次,为了保证数据的隐私,数据拥有者就以某种保护隐私数据的方式对数据加以处理,数据拥有者把数据委托给数据服务提供者;
③再次,数据请求者请求数据服务提供者查询数据,即Q1,…Qb,经过网络查询接口,DSP接收数据请求者发送来的需要查询的数据,并正确执行此数据查询,查询结束后给数据请求者返回正确的查询结果,即 ρ(Q1),…ρ(Qb) 。
在云服务平台中,保证数据隐私安全是十分必要的,因此,数据请求者请求数据服务提供者执行查询而且返回正确的查询结果,即必须保证数据服务提供者查询得到的数据满足数据完整性和完备性。
数据的完整性[3]确保数据服务提供者经查询得到的结果确实是来自真实的数据拥有者。而数据的完备性则是确保数据服务提供者在目标域上能够正确地执行查询并返回所有满足数据请求者提供的查询条件的数据。虽然数据的完整性和数据的完备性在概念上有所不同,但是它们都需要数据拥有者提供额外的机制来保证,而且有些机制既可以实现数据的完整性也可以实现数据的完备性。到目前为止,实现数据的完整性或完备性的机制主要有3种:基于数据签名的方法、基于挑战-响应的方法和基于概率的方法。基于3种方法采用不同的原理,本文采用挑战-响应协议实现XML数据完整性和完备性。
由于DSP在网络、非集中以及恶劣的环境中正确执行查询遭到质疑,因为云计算中的数据服务提供者有时为了避免因为执行查询支付CPU和存储费用,可能会因为懒惰或恶意而不去执行查询,或者选择返回一个不准确或完全不正确的查询结果。为了解决这个问题,文献[4]提出了挑战-响应协议上的运行时查询证明机制,是一种对任意查询、确保查询正确执行的解决方法。对于数据请求者发出的每一批查询,DSP被挑战需要提供查询执行证明,然后,在DReq端被检查接收到的实际查询结果是否正确,以确定是否接受DSP执行查询后返回的查询结果。如图2所示,在进行查询时,与Do端委托时的数据分组保持一致,在DReq端先把数据分成n份(di,… dn)。
图2 挑战-响应模型
在查询过程1中,提交一个查询Q时,首先要计算哈希值CT=H(Q(di)),因为哈希值具有不可逆性和单向性,从而发现查询结果匹配挑战令牌,i作为挑战值与查询一起发送给DSP。
在查询过程2中,DSP通过网络接口接收到DReq提交的信息,DSP响应查询并在返回查询结果的同时,要返回i的值作为挑战值的响应值。
在查询过程3中,DSP发送查询的结果。因此DReq就可以根据返回的响应值判断DSP是否正确执行查询并返回正确的查询结果。挑战-响应方法的目的是只有当返回所有的挑战值后才能返回正确的查询结果。而挑战值必须是在所有查询都已执行的情况下才能得到,因此挑战-响应方法保证了数据完整性,保障数据查询正确执行和返回正确的查询结果。
XML是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行,因此XML数据查询的安全性也越来越重要。XML数据在查询的过程中,也可以转换成关系数据库来查询,但是增加了查询过程。把数据库外包中的挑战-响应协议用于云计算平台中的XML数据进行安全查询,并保证了查询执行证明以及数据的完整性和和完备性,将使云计算平台中数据查询安全又前进了一步,省去了诸多的麻烦。下面要解决的是XML数据在查询过程中如何保证数据安全以及查询得到正确的结果。图3即是使用挑战-响应方法对XML查询建立模型。
图3 云计算平台中XML数据安全查询结构
XML文档属于半结构化的数据,不同于关系数据库是结构化数据。但同样适用于挑战-响应协议。在查询执行开始时,数据请求端先把XML文件分成n份(XML1,…XMLn),当提交一个查询W时,为了保证XML数据安全,需要对XML数据进行加密处理。由于加密哈希的不可逆性,采用计算哈希值 CT=H(W(XMLY)),Y∈(1,a),保证 Dreq 端的数据安全。Y是作为挑战值与查询一起通过网络查询接口发送给DSP端。此外,为了避免先前使用过的挑战令牌的重复或被DSP记住该查询,把随意猜测的可能不正确的查询结果发送给数据请求端。由于关系数据库属于结构化数据,而XML数据属于半结构化数据,他们的查询过程在DSP端有所不同。关系数据库使用的是SQL语言,而XML数据则使用的是XQuery语言。
DReq端发送完毕查询,DSP端同时通过网络接口接收到DReq端提交的查询以及随机数。此时DSP端响应查询并执行该查询,随机数的存在防止了在查询中会遇到恶意的攻击或懒惰行为,DSP端不执行令牌的哈希值,在第1次使用后将是没用的数据,这样在DSP端没有执行才是可能发生的。
DSP正确执行完查询后并查询得到正确的查询结果,在DSP端返回查询结果的同时,要返回Y的值作为挑战值的响应值。在此需要强调的是在DSP端执行查询XML数据并得到正确的查询结果后,传输给请求端的数据也是XML格式,文献[8]提出了一种方案可应用于要求身份隐藏和身份隐私保护的安全传输环境。查询后传输给数据请求端的数据和关系数据库是有所不同的,传输的数据是XML格式,这与关系数据库查询的有很大区别。因此DReq就可以根据返回的响应值Y,通过判断Y=Y'是否正确,判断DSP是否正确执行查询并返回正确的XML数据查询结果。下面将关注随机数存在的必要性以及理解一次性使用随机数的重要性。
在缺少随机数的情况下,DSP很明显可以记住以前看到过的查询批处理的挑战令牌。如果有足够的存储可用,当它执行查询和响应挑战时,可以记录相关的令牌,例如,通过构建哈希表标记(查询,段)对挑战令牌,最终DSP将会熟知更多的令牌。这些稍后将用于响应挑战(查找哈希表),就没有必要执行相关的工作。即如果DReq碰巧提交相同的令牌2次,DSP是直接返回结果,而没有对给定的批处理查询做实际的工作。为每一次挑战令牌使用特别的随机数,确保不被DSP记录。同时发送一个随机数到DSP端,因为如果DSP端记录挑战令牌,将会不执行查询,直接返回查询结果。
云计算平台中XML数据的安全查询,工作重要集中在面向查询服务的数据隐私保护算法[5]。文献[6]则研究了隐私保护数据发布中身份保持的匿名方法。但是,目前,对海量数据查询和更新的完整性和完备性问题的研究还很薄弱。文献[7]对数据查询和数据更新的完整性保证进行了一系列的研究。但是云计算数据服务平台具有与XML数据集成系统中的数据服务完全不同的特征,因此,云计算技术在蓬勃发展,在云计算平台中实现XML查询是大势所趋。在Hadoop平台上利用挑战-响应协议实现XML数据安全的查询,采用的是java编程语言,使用的是JDK1.5.0的开发环境。在hadoop平台中建立了XML数据安全查询的系统架构,分析了架构模型保证安全性的各个过程。实践证明,利用挑战-响应协议实现XML数据安全的查询具有可行性。
[1] HACIGÜMÜSH,MEHROTRA S,IYER B.Providing Database as a Service[C]∥ Proc.of the Int’l Conf.on Data Engineering.Washington:IEEE Computer Society Press,2002:29-38.
[2] 田秀霞,王晓玲,高明.数据库服务-安全与隐私[J].软件学报,2010,21(5):991-1006.
[3] MYKLETUN E, NARASIMHA M, TSUDIK G.Authentication and Integrity in Outsourced Databases[J].ACM Trans.on Storage,2006,2(2):107-138.
[4] SION R.Query Execution Assurance Foroutsourced Database[C]∥ Proc.of the 31st InConf.On Very Large Data Bases.New York:ACM Press,2005:601-602
[5] 朱青,赵桐,王珊.面向查询服务的数据据隐私保护算法[J].计算机科报,2010,33(8):1316-1323.
[6] 童云海,陶有东,唐世渭.隐私保护数据发布中身份保持的匿名方法[J].软件学报,2010,21(4):771-781.
[7] LU Jing,PENG Dun-lu,HUO Huan.Analyzing Triggers in XML Data Integration Systems[J].International Journal of Digital Content Technology and its Applications,2010,4(5):38-45.