云存储安全中基于通配符的可搜索加密方法与流程

文档序号:11514956阅读:244来源:国知局
云存储安全中基于通配符的可搜索加密方法与流程

本发明涉及一种云存储安全中基于通配符的可搜索加密方法



背景技术:

云存储为用户提供无处不在的、动态的、可扩展的和按需存储的服务。云存储在给用户带来更多便利的同时也给用户的数据带来了严重的安全威胁。为了保护公有云服务器中的外包数据的隐私性,数据加密是防止内部/外部攻击者访问敏感信息的有效方法。同时,为了便于数据的使用,我们有必要支持用户在密文上进行关键词查询(无需解密)。这种机制称为可搜索加密。

把电子健康记录(ehr)存储系统作为可搜索加密的应用示例。假设用户alice想把敏感的ehr数据存储在公共卫生云服务器中,她首先需要提取一组关键词集合来描述ehr,接着使用加密这些关键词来生成索引。接着将关键词加密索引和加密的ehr数据上传到云服务器。在数据检索阶段,用户bob(如:alice的医生或家属)生成陷门来进行关键词查询。云服务器使用陷门对加密的ehr数据进行搜索,最终返回匹配的文件给bob。在搜索过程中,与关键词和ehr有关的明文信息不能泄露给云服务器。

2004年,boneh等人提出公钥关键词可搜索加密(peks)的概念,来实现用户对加密数据进行关键词查询。之后,有人对不同应用场景中支持联结关键词和单关键词的peks进行了研究。为了实现多用户之间的查询权限共享,可搜索加密采用了不同的访问控制方法,例如代理重加密和基于属性的加密(abe)。有人提出模糊关键词可搜索加密方案来实现对拼写错误的校正。然而这些方案只能进行精确关键词搜索或基于编辑距离的相似性搜索。

为了实现灵活的搜索功能,有人提出通配符可搜索加密的概念来支持含有通配符的关键词安全搜索。在查询阶段,用户输入关键词,关键词中包含一个通配符(可能代表一个或多个字符)。例如alice的医生bob可能使用关键词“05/**/2016”来搜索2016年5月alice所有的ehr数据。他也可以使用关键词“ache”来搜索包含“headache”、“stomachache”或者“heartache”的ehr数据。然而,文献中大多数现有的通配符可搜索加密方案都是基于布隆过滤器(bf:bloomfilter)构建的。布隆过滤器的缺点是:假阳性概率(falsepositiveprobability)是不可忽略的。这些基于布隆过滤器的通配符可搜索加密方案将会以不可忽略的概率向用户返回错误结果。此外,这些方案都是基于对称密钥机制设计的,因此数据拥有者必须泄露其私钥才能授予其他用户搜索权限,并且该授权是不可撤销的。

jarecki等人研究了加密数据库的安全搜索,它支持任意的布尔查询。后来sepehri等人提出了数据库中基于安全多方计算的查询方法和具有安全等式查询功能的代理重加密方案。sun等人提出了数据库中支持布尔查询的多用户可搜索加密方案。除了面向数据库的可搜索加密方案,学者们也对非结构化加密数据的安全关键词查询进行了研究。

li等人提出了云计算中加密数据的模糊关键词搜索方案。他们利用编辑距离来衡量关键词的相似度,并设计了两种构造模糊关键词集的方法,并用符号树来加速搜索算法。2013年,li等人把方案推广到了基于abe的多用户场景。2014年,wang等人提出了多关键词模糊可搜索加密方案,方案构造基于布隆过滤器和局部敏感哈希函数。该方案可以校正较小的编辑距离错误,并支持多关键词搜索。随后,fu等人提出可以校正更多拼写错误的方案。

现有的模糊可搜索加密方案的局限性在于:只能校正较小的编辑距离误差,例如拼写错误。如果查询关键词与精确关键词之间的编辑距离较大,则现有方案无法校正相关的错误。2010年,sedghi等人在公钥密码架构中提出了带有通配符的可搜索加密方案,它的方案构造基于双线性对。隐藏向量加密(hve)是sedghi方案的构造核心,而hve源于基于身份的加密。sedghi的方案需要指定通配符的位置,每个通配符只能代表一个字符。在加密、生成陷门和测试算法中,sedghi的方案需要大量的幂指数运算;其测试算法还需要大量耗时的双线性对运算。

2011年,bosch等人在对称密码架构中引入了联结通配符可搜索加密方案,方案构造基于伪随机函数和布隆过滤器。与sedghi的方案相比,bosch的方案提高了效率。然而,它仅仅枚举了通配符关键词在词典中可以表示的常用关键词。然后,这些扩展的关键词都被插入到布隆过滤器中。由于bosch的方案无法从有限的词典定义中提取出世界上所有的关键词,所以该方案的实用性非常有限。

2012年,suga等人提出了基于布隆过滤器的通配符可搜索加密方案,其中每个关键词都配有单独的布隆过滤器。存储开销随着文档中提取的关键词数量的增加而增加。该方案的缺点是:一个通配符只能代表一个字符。例如,如果用户希望搜索所有以“acid”开头的关键词,他需要分别提交通配符关键词“acid**”、“acid***”和“acid********”才能够匹配关键词“acidic”、“acidity”和“acidification”。为了解决这个难题,hu等人提出了一种改进的方案,其中一个通配符可以代表任意数量的字符。hu的方案以suga的方案为基础,并使用不同的方法把关键词插入到布隆过滤器中。

基于布隆过滤器的可搜索加密方案的缺点是:假阳性概率是不可忽略的。布隆过滤器是一种数据结构,可用于检测一个指定元素是否存在于一个集合中。它由一个长度为m位的数组表示,数组中每个元素初始值设置为0。布隆过滤器需要r个独立的哈希函数(ht:{0,1}*→[1,m](1≤t≤r)),每个哈希函数把一个元素映射到m个位置中的其中一个,也就是把集合中s={s1,...sn}的每个元素映射到布隆过滤器bf中。为了验证一个元素a是否属于s,需要检验bf中所有位置ht(a)(1≤t≤r)的值是否被设为1。如果不是,元素a不属于s。否则,元素a可能属于s。因为哈希函数可能把一个或者多个元素映射到bf的同一位置上,因此布隆过滤器存在假阳性概率。假阳性概率fp=[1-(1-1/m)rn]r≈e-m/nln(p)ln(1-p),其中p=(1-1/m)rn≈e-rn/m,它随着n/m的增长而增长。



技术实现要素:

有鉴于此,本发明的目的在于提供一种云存储安全中基于通配符的可搜索加密方法支持至多两个通配符的关键词搜索,且通配符可以出现在关键词的任何位置。

为实现上述目的,本发明采用如下技术方案:

一种云存储安全中基于通配符的可搜索加密方法,其特征在于:包括上传过程和搜索过程;

所述上传过程包括以下步骤:

步骤a1:用户a设置待上传文档m的文档身份id∈zn,加密所述文档身份id为

步骤a2:提取关键词集合来描述所述待上传文档m;

步骤a3:使用k2c算法将所述关键词集合加密成

步骤a4:选择随机数k∈zn作为文档加密密钥,将所述文档加密密钥进行加密得到

步骤a5:加密所述待上传文档m得到密文c=senc(m,k'),其中,

步骤a6:将加密索引和密文c发送给云计算平台;

所述搜索过程包括以下步骤:

步骤b1:用户b输入查询关键词集合并将其加密成

步骤b2:将所述用户b的匿名身份aidb,签名和查询关系作为查询陷门发送给云计算平台;

步骤b3:所述云计算平台接收到查询陷门后,首先核实用户b是否有权访问数据,若有权限,则云计算平台使用公钥pkb验证的签名若签名被验证是假的,则拒绝该查询请求,否则,云计算平台执行搜索算法;

步骤b4:云计算平台以w中的中的qj为输入,将其传入到关键词匹配协议中,云计算平台和计算服务提供商交互运算得到加密的匹配结果如果果kwi与qwj匹配,则ui,j=1;否则ui,j=0;

步骤b5:用户b收到匹配结果后,解密得到搜索结果u*

步骤b6:云计算平台根据所述搜索结果u*返回对应的密文c;

步骤b7:用户b先恢复出文档加密密钥k,然后计算并利用k'恢复出文档。

本发明与现有技术相比具有以下有益效果:首先,本发明支持多关键词搜索,任何查询关键词可以包含零个、一个或者两个通配符,其中通配符可以出现在关键词的任何位置并且代表任何数量的符号;其次,本发明支持使用一个陷门来同时搜索多个数据拥有者的数据;第三,本发明提供灵活的用户授权和撤销来有效地管理搜索和解密权限;第四,本发明是基于同态加密而不是基于布隆过滤器构建的,因此完全消除了由布隆过滤器引起的错误概率;最后,返回的匹配结果对云服务器完全保密,实现了更好的隐私保护。

附图说明

图1是本发明一实施例的系统结构框图。

图2是本发明的云服务结构。

图3是本发明k2c算法的示例图。

图4是本发明scp协议的示例图。

图5是本发明fw协议的示例图。

图6是本发明mw协议的示例图。

图7是本发明bw协议的示例图。

图8是本发明fmw协议的示例图。

图9是本发明fbw协议的示例图。

图10是本发明mmw协议的示例图。

图11是本发明mbw协议的示例图。

图12是本发明八个协议的参数对比图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1所示为本发明一实施例的系统结构框图,其中:

密钥生成中心(kgc)是完全可信的,负责管理和分发系统中生成的公钥/私钥。kgc包括注册单元、密钥生成单元、证书单元和存储单元。注册单元为系统用户提供注册服务。密钥生成单元为系统和用户生成公钥/密钥。证书单元负责提供证书生成和吊销服务。存储单元负责存储证书和撤销列表。

云计算平台(cp)存储用户的加密文档并负责执行数据检索操作。cp包括存储单元、计算单元和元数据单元。存储单元提供存储服务,其中包括存储加密文档和安全关键词索引。计算单元提供计算服务,其中包括安全搜索操作。元数据单元提供元数据服务,其中元数据包括数据拥有者的信息、授权证书、文档位置以及文档上传和访问日期。元数据服务器还为系统用户提供通知服务,这项服务专门用于监测数据拥有者账户是否进行了更改。这些信息存储在数据库中,目的在于为用户提供更好的服务。

计算服务提供商(csp)拥有丰富的计算资源,包括计算单元和元数据单元。csp的计算单元与cp中的计算单元相互作用来执行安全计算。元数据单元负责存储csp的授权证书,并通过查询授权证书来进行授权计算。假设cp和csp不共谋。

数据拥有者加密关键词和文档,并将其发送到cp进行存储。用户生成关键词陷门,cp利用陷门来搜索加密数据。

安全套接层(ssl)或者传输层安全(tls)协议用于保护cp和csp、数据拥有者和cp、用户和cp以及kgc和其他实体之间的所有通信。ssl/tls协议的主要目的在于提供两个通信实体之间的隐私保护和并保证数据完整性。

请结合图2,云计算为用户提供各种服务。最著名的服务包括基础架构即服务(iaas),平台即服务(paas)和软件即服务(soos)。信息服务、计算服务和存储服务属于paas。为了向云服务器提供安全保护,安全服务是云计算中的一项重要服务。安全搜索是云服务器中的安全服务之一,被称为安全搜索即服务(securesearchasaservice),它为信息服务、计算服务和存储服务提供了安全性。本发明属于云计算中安全搜索即服务的范畴。

该系统包括以下基础部件:具有门限解密功能的paillier密码系统、关键词表示和加密、安全大于或等于协议和加密关键词等价测试协议,具体如下:

具有门限解密功能的paillier密码系统(pctd:pailliercryptosystemwiththresholddecryption)实现了同态性加密,可以在云平台中提供外包数据的隐私性性。利用同态性质,我们无需对密文进行解密,就可以直接进行各种计算,从而就能实现安全的外包计算。此外,它的计算开销低于全同态加密系统所需的计算开销。令表示x的比特长度。

密钥生成:κ是安全参数,p和q是两个大素数,计算n=pq,λ=lcm(p-1,q-1)/2(lcm表示两个数的最小公倍数)。定义函数选择生成元g并且g的阶为ord(g)=(p-1)(q-1)/2。系统公共参数pp=(g,n),主私钥sk=λ。系统为每位用户i分配私钥ski∈zn和公钥

加密:对于输入的明文m∈zn,用户随机选择r∈[1,n/4],使用其公钥pki将明文m加密成密文其中c2=grmodn2

利用用户私钥ski解密:对于输入的密文和私钥ski,我们通过计算能够得到明文

用主私钥sk进行解密:利用系统的主私钥sk=λ,通过计算就能对所有使用公钥加密生成的密文进行解密。若gcd(λ,n)=1(gcd表示两个数的最大公约数)成立,则有

主私钥分裂:主私钥sk=λ可以随机分裂成两个部分sk1=λ1和sk2=λ2,使得λ1+λ2=0modλ,λ1+λ2=1modn2

用sk1进行部分解密(pd1):对于输入的密文可以利用sk1=λ1来计算

用sk2进行部分解密(pd2):对于输入的密文可以利用sk2=λ2来计算通过计算可以恢复出明文

密文更新(cr):cr算法用于更新密文,将密文转化成新的密文且m=m'。随机选择r'∈zn,计算c2'=c2·gr'modn2

pctd具有同态性:对于随机的r∈zn,

具有门限解密功能的paillier密码系统使用到了下述协议,这些协议都需要cp和csp交互运算执行。pka和pkb是用户a和b的公钥。pkσ是为用户a和b定义的联合公钥。

sad跨域安全加法协议:对于给定的计算得到

smd跨域安全乘法协议:对于给定的计算得到

slt跨域安全小于比较协议:对于给定的计算如果x<y,则u=1。如果x≥y,则u=0。

关键词表示和加密:请参照图3,为了把一个关键词编码成集合zn中的一个元素,首先把关键词中的每个字母转换成其ascii码形式,接着把十六进制的ascii码转化成十进制。根据每个字母在关键词中的位置,每个元素乘以一定的权重,使用pctd算法对这些十进制数进行相加和加密。该算法称为k2c关键词转化密文算法。

sge安全大于或等于协议:给定两个密文(x,y≥0,sge协议输出来表示x和y之间的关系:如果u*=1,表示x≥y;如果u*=0,表示x<y。sge协议的描述如下。

(1)cp计算

cp随机选取r,使其满足接着cp随机掷硬币s∈{0,1}。cp和csp执行以下操作:

如果s=1,计算

如果s=0,计算

然后cp计算并把(l,l')发送给csp。

(2)csp解密如果l(l″)>l(n)/2,csp令u'=0,否则u'=1。接着csp利用pkσ来加密u',并把发送给cp。

(3)cp接收到后,如果s=1,cp令否则,cp令

ket加密关键词等价测试协议:

给定的两个加密关键词(x,y≥0,),该协议输出加密结果来判断两个关键词是否相等。cp和csp计算

如果u*=1,表示两个关键词相同。如果u*=0,表示两个关键词不相同。

本发明提供一种云存储安全中基于通配符的可搜索加密方法,包括上传过程和搜索过程;

所述上传过程包括以下步骤:

步骤a1:用户a设置待上传文档m的文档身份id∈zn,加密所述文档身份id为

步骤a2:提取关键词集合来描述所述待上传文档m;

步骤a3:使用k2c算法将所述关键词集合加密成

步骤a4:选择随机数k∈zn作为文档加密密钥,将所述文档加密密钥进行加密得到

步骤a5:加密所述待上传文档m得到密文c=senc(m,k'),其中,

步骤a6:将加密索引和密文c发送给云计算平台;

所述搜索过程包括以下步骤:

步骤b1:用户b输入查询关键词集合查询关键词可能包含零个,一个或者两个通配符。如果通配符出现在关键词的头部或者中部,b指定一个正整数来表示该通配符能代表的最大字符数。b根据关键词的类型把查询关键词qwi(1≤i≤n2)加密成qi,令用户b指定查询(即and或or)关系来进行联结(conjunctive)或分离(disjunctive)关键词查询。

步骤b2:将所述用户b的匿名身份aidb,签名和查询关系作为查询陷门发送给云计算平台;

步骤b3:所述云计算平台接收到查询陷门和查询关系(and或or)后,首先核实用户b是否有权访问数据,若有权限,则云计算平台使用公钥pkb验证的签名若签名被验证是假的,则拒绝该查询请求,否则,云计算平台执行搜索算法;

步骤b4:根据qj中的参数,云计算平台以w中的中的qj为输入,将其传入到关键词匹配协议中,所述关键词匹配协议包括ket,fw,mw,bw,fmw,fbw,mmw和mbw,云计算平台可根据图12选择相应的协议,云计算平台和计算服务提供商交互运算得到加密的匹配结果如果果kwi与qwj匹配,则ui,j=1;否则ui,j=0;

如果用户想要进行or查询,cp首先初始化计算如果u*>0,表示陷门与文档中的关键词匹配;否则u*=0。

如果用户想要进行and查询,cp首先初始化cp和csp交互运算得到如果u*=1,表示陷门与文档中的关键词匹配;否则u*=0。最后,cp把发送给用户。

步骤b5:用户b收到匹配结果后,解密得到搜索结果u*;如果b进行or查询,b会对u*进行排列并要求cp返回前k篇u*值(相关度分数)较高的文档。如果b进行and查询,b会要求cp返回所有或者部分u*=1的文档,b会把发送给cp来进行文档查询;

步骤b6:云计算平台根据所述搜索结果u*返回对应的密文c;

步骤b7:用户b先恢复出文档加密密钥k,然后计算并利用k'恢复出文档。

于本实施例,所述关键词匹配协议包括ket,fw,mw,bw,fmw,fbw,mmw和mbw,其中:

fw,mw,bw属于单通配符搜索,单通配符搜索是指搜索的关键词中只含有一个通配符,并且该通配符可以表示任意数量的字符。由于单通配符可能出现在字符串的头部、中部或尾部,我们设计了三个协议来处理这些情况。cp和csp负责执行这些协议,并且它们都不知道匹配结果的明文信息。

假设数据拥有者a的文档包含关键词x,a使用公钥pka将其加密成用户b生成具有通配符的关键词来进行查询。以下协议将测试提交的查询是否与匹配。我们用*表示通配符。当通配符出现在关键词的头部或者中部时,用户b指定正整数v1来表示通配符可以代表的最大字符数。当通配符出现在关键词的尾部时,通配符可以表示任意数量的字符。

fmw,fbw,mmw,mbw属于双通配符搜索,双通配符搜索是指搜索的关键词中只含有两个通配符,并且每个通配符都可以表示任意数量的字符。由于通配符可能出现在字符串的头部、中部或尾部,我们设计了四个协议来处理不同的情况。cp和csp负责执行这些协议,并且它们都不知道匹配结果的明文信息。当通配符出现在关键词的头部或中部时,用户b用一个正整数来表示该通配符可以替代的最大字符数。令v1,v2分别表示两个通配符所能替代的最大字符数。当通配符出现在关键词的尾部时,可以代表任意数量的字符。

通配符搜索中重要的工具包括:安全多比特提取协议和安全密文划分协议,

mbe安全多比特提取协议:

给定密文[x]和正整数该协议的输出是[x],其中,x是x的比特表示的最低比特有效位。mbe协议执行如下。

(1)cp随机选取r∈zn,计算y=[x]·[r]和并把(y,y')发送给csp。

(2)csp计算并把[y1]发送给cp。

(3)cp计算和[x']=[y1]·[r1]n-1

(4)cp和csp计算

(5)然后,cp计算

mbe协议的工作原理解释说明如下。

(1)为了保护x的隐私,cp首先选择随机数r∈zn,然后通过计算y=[x]·[r]=[x+r]来隐藏x的明文信息。

(2)csp解密后得到y=x+rmodn。由于x,r∈zn且r是随机数,因此csp不能从y推导出x的信息。接着csp计算来得到y的最低比特。加的目的是处理的进位。

(3)r1是r的最低比特位。cp计算

(4)如果

如果

(5)如果说明则有

如果说明则有

scp安全密文划分协议:

给定密文[x]和正整数scp协议输出[x1]和[x2],使得x1是x的最低比特有效位,并且scp协议执行如下。

(1)cp和csp计算

(2)cp计算z=[x]·[x1]n-1和[x2]=zamodn,其中

scp协议的示例如图4所示。如果[x]是关键词“privacy”的密文且scp协议输出[x1]和[x2],使得[x1]是“pri”的加密形式,[x2]是“vacy”的加密形式。scp协议把加密的关键词安全地划分成两个加密的字符串。

八个关键词匹配协议的具体内容如下:

ket为加密关键词等价测试协议,给定的两个加密关键词该协议输出加密结果来判断两个关键词是否相等,cp和csp计算如下:

如果u*=1,表示两个关键词相同;如果u*=0,表示两个关键词不相同;

fw为安全头部通配符匹配协议,用户b首先生成一个“*+y1”形式的通配符型关键词,其中y1是字符串;用户b利用k2c算法将y1加密成输入和v1,fw协议输出如果通配符关键词“*+y1”与x匹配,则u=1;否则,u=0;

首先,初始化协议包括v1+1轮。在第i轮,被划分成两个部分的明文包含i个字符。x1是通配符代表的字符串。如果x2=y1,有ui=1;否则ui=0。然后,计算在v1+1轮后,如果u>0,协议输出否则fw的示例如图5所示。

mw为安全中部通配符匹配协议,用户b首先生成一个“y1+*+y2”形式的通配符型关键词,其中y1,y2是字符串,y1中包含η1个符号,用户b利用k2c算法把y1,y2加密成输入v1和η1,mw协议输出密文如果通配符关键词“y1+*+y2”与x匹配,则有u=1;否则,u=0;

首先,初始化然后,被划分成两个部分的明文包含η1个符号。如果x1=y1,则有u1=1;否则,u1=0。通过fw协议检测“*+y2”是否与x2匹配。如果匹配,则有u2=1;否则,u2=0。然后,计算如果u1=1,u2=1,则有u=1,否则u=0。mw的示例如图6所示。

bw为安全尾部通配符匹配协议,用户b生成一个“y1+*”形式的通配符关键词,其中,y1是字符串并包含η1个符号;然后,用户b利用k2c算法将y1加密成输入和η1,bw协议输出密文如果通配符关键词“y1+*”与x匹配,则有u=1;否则,u=0;

首先,被划分成两个部分其中的明文包含η1个字符,x2是通配符代表的字符串。如果x1=y1,则有u=1;否则,u=0。bw的示例如图7所示。

fmw为安全头部和中部通配符匹配协议,用户b生成一个“*+y1+*+y2”形式的通配符关键词,其中y1,y2是字符串,y1包含η1个符号,用户b利用k2c算法将y1,y2加密成输入v1、v2和η1,fmw协议输出密文如果通配符关键词“*+y1+*+y2”与x匹配,则有u=1;否则,u=0;

首先初始化fmw协议使用两层循环来进行关键词测试:外层循环遍历第一个通配符所能代表的不同字符(或字符串);内层循环遍历第二个通配符所能代表的不同字符(或字符串)。被划分成两个部分其中x1包含i个符号(0≤i≤v1),并且x1是第一个通配符代表的字符串。然后,被划分成两个部分其中x3包含η1个符号。如果x3=y1,则有si=1;否则,si=0。接着,被划分成两个部分其中x5包含j个符号(0≤j≤v2),并且x5是第二个通配符代表的字符串。如果x6=y2,则有tj=1;否则,tj=0。计算如果si=1,tj=1,则有ui,j=1;否则,ui,j=0。然后,将ui,j与u相加。最后,如果u>0,协议输出否则,fmw的示例如图8所示。

fbw为安全头部和尾部通配符匹配协议,用户b生成一个“*+y1+*”形式的通配符关键词,其中y1是字符串并且包含η1个符号;用户b利用k2c算法将y1加密成输入v1和η1,fbw协议输出密文如果通配符关键词“*+y1+*”与x匹配,则有u=1;否则,u=0;

首先初始化fbw协议使用遍历算法来测试关键词,它遍历了第一个通配符所能代表的不同字符(或字符串)。分成两个部分其中x1包含i个符号(0≤i≤v1),x1是第一个通配符代表的字符串。然后,分成两个部分其中x3包含η1个符号。如果x3=y1,则有si=1;否则,si=0。然后,将si与u相加。如果u>0,则协议最终输出否则,输出fbw的示例如图9所示。

mmw为安全中部和中部通配符匹配协议,用户b生成一个“y1+*+y2+*+y3”形式的通配符关键词,其中y1,y2,y3是字符串,并且y1,y2分别包含η1,η2个符号,用户b利用k2c算法将y1,y2加密成输入v1、v2、η1和η2,mmw协议输出密文如果通配符关键词“y1+*+y2+*+y3”与x匹配,则有u=1;否则,u=0;

首先,初始化mmw协议使用两层循环来进行关键词测试:外层循环遍历第一个通配符所能代表的不同字符(或字符串);内层循环遍历第二个通配符所能代表的不同字符(或字符串)。被划分成两个部分其中x1包含η1个符号。如果x1=y1,有u1=1,否则u1=0。被划分成两个部分其中x3包含i个符号(0≤i≤v1),x3是第一个通配符代表的字符串。然后,被划分成两个部分其中x5包含η2个符号。如果x5=y2,则有si=1;否则,si=0。被划分成两个部分其中x7包含j个符号(0≤j≤v2),x7是第二个通配符代表的字符串。如果x8=y3,则有tj=1;否则,tj=0。计算如果si=1,tj=1,则有ui,j=1;否则,ui,j=0。计算如果ui,j=1,tj=1,则否则,然后,将相加。如果u>0,协议最终输出否则,输出mmw的示例如图10所示。

mbw为安全中部和尾部通配符匹配协议,用户b生成一个“y1+*+y2+*”形式的通配符关键词,其中y1,y2是字符串,y1,y2分别包含η1,η2个符号;b利用k2c算法将y1,y2加密成输入v1,η1和η2,mbw协议输出密文如果通配符关键词“y1+*+y2+*”与x匹配,则有u=1;否则,u=0。

首先初始化mbw协议使用循环遍历的方式来进行关键词测试:循环遍历第一个通配符所能代表的不同字符(或字符串)。被划分成两个部分其中x1包含η1个符号。如果x1=y1,则有u1=1;否则u1=0。被划分成两个部分其中x3包含i个符号(0≤i≤v1),x3是第一个通配符代表的字符串。被划分成两个部分其中x5包含η2个符号。如果x5=y2,则有si=1;否则,si=0。计算如果si=1,u1=1,输出否则然后,计算如果u>0,协议最终输出否则,mbw的示例如图11所示。

本发明还涉及密钥生成算法和用户撤销和授权算法。

密钥生成算法:

senc/sdec是密码上安全的对称加密/解密算法对(对称密钥空间为),sig/verify是一种密码上安全的签名/验证算法对。定义哈希函数h1:{0,1}*→zn和

通过运行pctd的keygen算法,kgc生成系统公共参数pp=(g,n)、主私钥msk=λ和用户ai的公钥/私钥对kgc计算主公钥mpk=gλ。kgc秘密保管msk,公开mpk。接着kgc执行pctd的主密钥分裂算法来生成部分主密钥sk1=λ1和sk2=λ2,并分别把它们秘密发送给cp和csp,把秘密发送给用户ai并公开为了保证用户ai身份的隐私性,kgc为用户生成匿名身份其中是正整数并且的值大于系统中的总用户数量。

用户撤销和授权算法:

如果用户a想要把搜索和加密权限授予用户b,a会设置授权有效期vp来表示授权的开始和结束时间(例如vp=“20170101-20180101”)。a为b生成带有证书号cn的授权证书。为了保证cn的唯一性,cn号是由aida开头,从而表明该该证书是由用户a生成的。生成的授权证书cera,b为:

<cer=(cn,aidb,vp,pkσ),sig(cer,ska)>,

其中skσ=h1(cn,ska)。为了简便表述,我们将zn的元素作为sig算法的私钥。在实际使用中,可以使用哈希函数从zn的元素中计算出签名密钥。产生的授权私钥skσ被秘密发送给b。授权证书cera,b被发送给kgc、cp、csp和b。当vp过期时,授权将自动失效。

如果a想要在vp时间段内撤销b的授权,需要生成撤销证书rvka,b:<rvk=(revoke,cn),sig(rvk,ska)>。接着,rvka,b被发送给kgc、cp、csp和b。

如果b想要同时对数据拥有者(a1,...,am)的文档进行查询,他必须向每一位数据拥有者(a1,...,am)申请授权证书然后向kgc申请授权证书。在验证证书的有效性后,kgc计算有效期vpσ=vp1∩...∩vpm,并生成证书cerσ,b:<cer=(cn,aidb,vpσ,pkσ),sig(cer,msk)>,其中skσ=h1(cn,msk)。证书的cn号应该由kgc的身份(idkgc可能设置为个0)开头,表明该证书是由kgc生成。skσ被秘密发送给用户b,pkσ对cp、csp和b公开。

如果要在有效期vpσ内撤销kgc生成撤销证书rvkσ,b:<rvk=(revoke,cn),sig(rvk,msk)>。然后,kgc把rvkσ,b发送给cp、csp和b。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1