APP下载

支持多用户操作的外包数据库可验证方案

2018-08-22玄鹏开周福才陈春雨吴淇毓

郑州大学学报(理学版) 2018年3期
关键词:多用户外包代理

玄鹏开, 周福才, 王 强, 陈春雨, 吴淇毓

(东北大学 软件学院 辽宁 沈阳 110169)

0 引言

随着云计算的不断发展,外包数据库[1]为用户和企业提供了灵活的数据管理服务.然而外包数据库服务器是不可信的,数据拥有者将数据存储在外包数据库服务器上无法保证数据的安全性[2],即数据修改和查询结果的安全性.因此支持多用户操作数据的外包数据库可验证问题值得被关注.

目前大多数外包数据库可验证方案[3-6]只针对数据拥有者能够修改数据的场景,而不能满足多个用户操作数据库.原因有两个:第一,现有的方案使用认证数据结构[7-8](ADS)支持可验证计算服务,多用户场景会带来昂贵的计算代价;第二,现有的方案如果被拓展到支持多用户的安全性保证上,会给数据拥有者带来过重的负载.为了支持多用户操作的外包数据库的可验证计算,文献[9-10]提出了基于MHT (Merkle hash tree)的B树,但MHT结构主要的问题在于昂贵的维护代价.文献[11-12]给出了MR 树(MR-tree)和XB树(XOR-B tree)的概念,实现了快速查询的完整性验证.文献[13-14]提出利用基于环签名的同态认证方式,当数据很大时成本很高,其扩展性受到了限制.文献[15-16]提出利用第三方审计实现多用户操作数据,但效率不高.文献[17]提出的方案则不能有效地对多用户进行管理.因此,目前仍然没有一个非常有效的方案来解决支持多用户操作的外包数据库可验证问题.

为解决目前外包数据库可验证方案不能满足多用户操作数据的问题,提出了一个支持多用户操作的外包数据库可验证方案.利用代理者集中处理所有用户的请求,实现对多用户的访问控制.利用基于身份标识的数据结构实现对数据进行修改,提高计算效率,解决认证数据结构带来的昂贵开销.利用数字签名算法和挑战应答的方式对查询结果进行验证,保证查询结果的完整性.

1 预备知识

1.1 双线性映射

定义双线性映射生成算法[18]BilinearMapGen(1λ)→(e,g,G1,G2,p)生成一个双线性映射[17]e:G1×G1→G2,其中G1和G2是阶为p的乘法循环群,g是群G1的一个生成元,并且e满足3个属性:

1) 双线性.对于任意的P,P1,P2,Q,Q1,Q2∈G1,a,b∈Zp,满足

e(aP,bQ)=e(P,Q)ab,e(P1+P2,Q)=e(P1,Q)∘e(P2,Q),e(P,Q1+Q2)=e(P,Q1)∘e(P,Q2).

2) 非退化性.g1,g2为G1的生成元,即e不会将G1×G1中的所有元素都映射到G2的单位元上.

3) 可计算性.存在有效算法计算任意的e(P,Q).

双线性映射可根据超奇异椭圆曲线上的Weil和Tate配对来进行构造.

1.2 离散对数问题

2 问题描述

方案场景模型如图1所示,系统包括四方实体:数据拥有者、普通合法用户、代理者和外包数据库服务器.

图1 方案场景模型Fig.1 Model of scheme

1) 数据拥有者拥有原始数据,将数据上传至外包数据库服务器.

2) 普通合法用户通过代理进行数据的查询和修改.

3) 代理者对用户的权限进行验证,保证为合法的用户返回正确的查询结果.同时与外包数据库服务器进行交互,发送查询和修改请求,对数据进行数字签名,并利用数字签名对服务器返回的查询结果进行挑战应答,从而验证查询结果的正确性和完整性.

4) 外包数据库服务器为代理者返回查询数据并执行数据修改操作.

3 方案构造

3.1 模型定义

本方案的模型由一个六元组算法{Setup,VerifyUser,Sign,GenChal,GenProof,VerifyProof}组成,各算法的具体描述为:

1)Setup(1λ)→(AK,u,q,H)初始化算法,由代理者执行.输入一个安全参数λ,输出算法所需要的全局参数(AK,u,q,H).

2)VerifyUser(name,SKname)→{0,1}验证用户算法,代理者执行.将用户名name和私钥SKname作为输入,输出为0或1,0代表用户不合法,1代表用户合法.

3)Sign(v,tid,SK)→σv签名算法,由代理者执行.将数据v、数据的唯一标识tid和私钥SKname作为输入,输出为签名σv.

4)GenChal(I)→chal挑战算法,由代理者执行.将查询结果I作为输入,输出为挑战信息chal.

5)GenProof(chal,I)→φ生成证据算法,由服务器执行.将挑战信息chal和查询结果I作为输入,输出为证据φ.

6)VerifyProof(φ,δv,I)→{0,1}验证算法,由代理者执行.将证据φ、签名σv和查询结果I作为输入,输出为0或1,0代表验证未通过,1代表验证通过.

3.2 安全性定义

在这一节中,给出了方案的正确性和安全性定义.

3.2.1正确性 设λ为初始化选定的安全参数,D为数据库,定义checkUser算法为多项式时间算法,以用户名name、私钥SKname为输入,当用户合法时返回accept,否则返回reject,即checkUser(name,SKname)→{accept,reject};定义checkProof算法为多项式时间算法,以查询结果I、数据的签名δv、证据φ为输入,当查询结果确实为I时,返回accept,否则返回reject.定义支持多用户操作的外包数据库可验证方案是正确的,则要求各算法正确执行后,算法结果满足

其中neg(λ)为可忽略函数.

3.2.2安全性 通过敌手A和挑战者β的挑战实验给出安全性定义.

挑战实验:定义敌手A试图通过以下步骤来伪造一个结果通过验证.

1) 挑战者β执行算法Setup,将密钥AK发送给A.

2)A向β进行查询,β向A返回查询结果I.

3)A对于特定的查询输出一个伪造的查询结果I*以及伪造的证据φ*.

4) 若VerifyProof(φ*,δv,I*)输出为1,且有I*≠I,则A伪造成功,否则伪造失败.

支持多用户操作的外包数据库可验证方案如果使得任意敌手A不能以不可忽略的概率赢得安全性实验:

则称方案满足安全性.

3.3 方案详细描述

3.3.1算法详细描述 在多用户操作外包数据库场景下,考虑多个用户通过代理与外包数据库服务器交互的方式.方案具体算法描述如下.

1)Setup(1λ)→(AK,u,q,H)初始化算法.代理者首先调用BilinearMapGen算法生成安全参数AK=(e,g,G1,G2,p),随机选取G1中的两元素u和q,定义单向哈希函数H:{0,1}*→Zp.

2)VerifyUser(name,SKname)→{0,1}验证用户算法.代理者计算mk=gSKname,验证式(1)是否成立,

mk=pkname.

表1存储了合法用户的用户名及公钥,若式(1)成立,则代理者接受用户请求并输出1,反之,代理者拒绝用户请求并输出0.

3)Sign(v,tid,SK)→σv签名算法.代理者计算插入或更新的数据v的签名σv=(H(tid)·uv)SK.

4)GenChal(I)→chal挑战算法.设服务器返回查询结果为I={S1,…,Sc},代理者为每一个查询结果生成随机数mi,并输出挑战信息chal={(i,mi)}i∈I.

6)VerifyProof(φ,δv,I)→{0,1}验证算法.代理者利用证据φ={R,μ,l}、生成的签名σv、查询结果I以及双线性映射e来验证式(2)是否成立,

(2)

若式(2)成立,则该算法接受查询结果I,输出1;反之拒绝查询结果I,并且输出0.

3.3.2外包数据操作 现存的外包数据库可验证方案中大多采用认证数据结构,在多用户场景会带来昂贵的计算代价,尤其是插入或删除数据时需要重新生成所有数据的签名,带来昂贵的维护代价,因此本方案构建了基于身份标识的数据结构机制(如图2所示).使用此机制的好处在于插入一个新的数据时,不需要重新计算其他数据的标识,而且数据是有序存储的,如果vi>vj,则tidi>tidj.代理者被允许修改元组但无须改变其他元组的标识.这样就能够提高多用户场景下的计算效率,解决认证数据结构带来的昂贵开销.

图2 数据修改操作Fig.2 Operation of data update

下面给出数据修改的几种形式.

1) 插入操作

如图2所示,当代理者在v1和v2之间插入v′时,代理者向服务器发送插入请求,服务器插入数据并返回插入数据的前一个元组和后一个元组的唯一标识tid1=p和tid2=2p,代理者计算tid′=(tid1+tid2)/2作为v′的tid并通过Sign(v,tid,SK)→σv算法生成v′的签名,代理者将签名发送给服务器,服务器完成更新签名操作即完成了插入操作.

2) 删除操作

3) 更新操作

4 安全性证明

4.1 正确性证明

本方案是正确的,表示如果方案步骤都是正确执行,产生的结果都是按步骤执行得到的,没有被恶意篡改的,则代理者以极大概率接受结果,即代理者执行验证算法VerifyProof(φ,δ,I)→1.验证过程如下.

4.2 安全性证明

本方案满足不可伪造性,即敌手试图伪造正确信息,使得代理者通过验证是不可行的.

在认证授权即验证公钥阶段,假设敌手能够伪造私钥SK*,且使得代理者通过验证,即gSK*≠gSK且VerifyUser(name,SK)→1,说明敌手通过公钥pk=gSK能够计算出私钥SK,与离散对数问题矛盾,说明敌手伪造私钥不成立.

保证授权阶段和查询完整性验证阶段的数据无法被伪造证明了本方案具有良好的安全性.

表2 密码学操作定义

5 效率分析

5.1 理论分析

(3)

另一方面,代理者接收到证据φ=(μ,l,R)之后,对应的计算代价为

(4)

5.2 实验分析

基于理论分析对本方案进行实验,运行实验程序的计算机配有3.40 GHz主频的处理器和8 GB内存,利用了Java pairing-based cryptography library实现双线性配对.将安全参数设置为160 Bit,查询数据块数量从c=0逐渐增加到c=800.

实验结果(如图3所示)表明,代理者和服务器计算的成本基本相同,代理者执行验证算法,服务器执行计算算法,因此代理者的计算成本应该小于等于服务器的计算成本,因此实验数据表明该算法适合应用于多用户操作的外包数据库可验证方案中.

通过将本方案与文献[15]进行对比(如图4所示),结果表明,随着查询结果数量的增加,本方案具有较高的效率.

图3 代理者和服务器的计算时间Fig.3 Computation time of delegator and server

图4 本方案和文献[15]的计算时间Fig.4 Computation time of our scheme and reference [15]

6 结束语

本文针对外包数据库的可验证方案中只能满足数据拥有者能够操作数据的问题,提出了支持多用户操作的外包数据库可验证方案,利用代理支持多用户管理,基于身份标识的数据结构动态修改数据,并利用数字签名保证了能够验证查询结果的完整性.效率分析和实验结果表明该方案能有效地满足需求,且具有很高的效率.

猜你喜欢

多用户外包代理
安泰科多用户报告订阅单
安泰科多用户报告订阅单
安泰科多用户报告订阅单
安泰科多用户报告订阅单
企业竞争中供应链管理的作用
中小企业内部审计外包风险及应对措施分析
复仇代理乌龟君
108名特困生有了“代理妈妈”
胜似妈妈的代理家长
一个村有二十六位代理家长