一种支持动态更新的通配符可搜索加密方法及系统

文档序号:35962615发布日期:2023-11-09 01:28阅读:46来源:国知局
一种支持动态更新的通配符可搜索加密方法及系统

本发明涉及通配符可搜索加密方案,具体涉及一种支持动态更新的通配符可搜索加密方法及系统。


背景技术:

1、为保护用户数据隐私,明文通常加密后再外包给云服务器,而这会引起加密数据搜索困难的问题。针对此问题,可搜索加密(searchable encryption,se)被提出。se是一种支持用户在密文上进行关键词检索的密码学原语,用户使用se技术加密明文数据,其他用户可以实现对密文的关键词检索。

2、传统的se方案需要用户输入完整的关键词,然而在实际应用中,用户可能无法输入完整的关键词。进一步提出的通配符可搜索加密方案,用户可以使用通配符代替关键词中无法具体表达的字符,从而实现关键词的部分匹配。

3、zhao等人于2022年提出一种无假阳性的可验证通配符可搜索加密方案,该方案通过对关键词编码并利用保序加密以保证明文文本字典顺序和密文数值顺序的一致性。对于含任意单字符通配符的关键词包含的明文文本字典区间都有着确定的密文数值范围,数据使用者可以更高效地搜索任意的关键词。然而,该方案不支持对关键词和密文进行动态更新。


技术实现思路

1、发明目的:本发明的第一目的是提供一种支持数据使用者以通配符方式进行关键词搜索,同时支持数据拥有者对关键词、用户属性以及密文进行动态更新的通配符可搜索加密方法;本发明的第二目的是提供一种支持动态更新的通配符可搜索加密系统。

2、技术方案:本发明所述的支持动态更新的通配符可搜索加密方法,包括:

3、(1)配置安全参数λ,生成公开密钥集sk、公共参数pp以及数据使用者的属性列表attributelist;

4、(2)根据公开密钥集sk、公共参数pp、所有文件构成的数据库db、数据拥有者的私钥kdo以及数据使用者的属性列表attributelist,生成可验证数据库vdb、主公钥mpk以及附加信息s;

5、(3)从文档集d中提取关键词字典wd={kw1,kw2,…kwn},关键词字典wd中具有带通配符的搜索关键词;利用关键词字典wd构建obbt;通过公开密钥集sk对构建的obbt进行加密,生成加密的obbt索引i;

6、(4)根据公开密钥集sk和文件集d,生成密文文件集ct;

7、(5)根据公开密钥集sk、数据使用者的属性ua以及询问关键词q,生成搜索陷门tp;

8、(6)验证数据使用者的属性ua,若具有搜索权限,则根据搜索陷门tp,在与数据使用者相匹配属性下的obbt执行搜索,根据逐层匹配算法,返回叶子节点所有的验证标签;

9、(7)根据验证标签集、数据使用者的属性ua以及公开密钥集sk,数据使用者与css进行交互,验证属性的正确性、搜索结果的完整性和正确性;

10、(8)关键词更新、属性更新以及文件更新;根据更新类别,相应地更新索引、主公钥mpk或者数据库。

11、进一步地,步骤(1)包括:

12、(1.1)选取大素数p,p阶乘法循环群和双线性映射

13、(1.2)选择群的生成元g,随机选取p个元素计算其中1≤i≠j≤p;表示中所有对模乘可逆元构成的集合,表示以p为模的剩余类环z/pz,z表示所有整数组成的集合;

14、选择四个哈希函数{0,1}*表示任意长度的比特字符串;{0,1}λ表示λ长度的比特字符串,λ为安全参数;t表示后续搜索匹配到的密文数量;{0,1}1表示长度为1的比特字符串;

15、(1.3)公开密钥集sk={skd,skop,sklab,skf,skua},其中skd∈{0,1}λ是文件加密密钥,skop∈{0,1}λ是保序加密密钥,sklab∈{0,1}λ是加密标签密钥,skf∈{0,1}λ是伪随机置换密钥,skua∈{0,1}λ是加密属性密钥;

16、公开参数

17、(1.4)假设给定关键词个数为n,属性个数为a;对数据使用者根据属性进行划分,得到属性集合uattribute={ua1,ua2,…,uaa},属性uai在关键词kwj条件下可搜索的文件列表di,j={d1,d2,…,dξ},其中ξ表示属性uai在关键词kwj条件下可搜索到文件的数量;

18、属性uai可搜索到的关键词和关键词所对应的文件构成数据使用者的属性列表attributelist={[uai,(kw1,di,1),…(kwn,di,n)|1≤i≤a]};wd={kw1,kw2,…kwn},为关键词字典。

19、进一步地,步骤(2)包括:

20、(2.1)随机选取数据拥有者的私钥kdo=y,计算y=gy;

21、更新计数器初始t=0,原始数据库向量为

22、vx表示索引为x的密文;表示关键词为kw的文档标识符中属性为ua可以搜索的所有文档标识符;

23、构建根承诺

24、经过t次更新,得到当前的数据库向量承诺c(t),定义c(0)=cr,c-1=cr;

25、计算hash0=h1(c-1,c(0),0)y并发送给css,css在第一次验证hash0的有效性后,生成c0=hash0c(0),并将(hash0,c-1,c(0),0)插入到验证承诺的辅助信息aux中;

26、(2.2)主公钥mpk=(pp,y,cr,c0,bfua,attributelist),bfua表示用来存储所有的属性标记的布隆过滤器;附加信息s=(pp,aux,db);

27、数据库db包括用户属性、文档标识符和密文的对应关系,vdb包括密文文件和文件索引。

28、进一步地,步骤(3)包括:

29、(3.1)明文obbt索引的构建;根节点为空节点,不存储数据,仅作为搜索入口;深度为1的节点存储属性,用于在搜索时匹配用户属性,下一层连接着每个属性相对应的obbt;对于给定的关键词字典wd={kw1,kw2…kwn},首先使用二十六进制对每个关键词kw进行编码,将英文字符a-z与0-25分别一一对应,并将所有数字级联为一个整数;关键词按照该规则得到的编码值顺序与关键词按照字典顺序是一致的;将所有的关键词编码值存储在一个数组中,对于任意的带“?”通配符的搜索关键词q,将关键词中的“?”分别替换为a和z,对应的编码值分别记为valuemin和valuemax;

30、(3.2)给定的关键词字典wd={kw1,kw2…kwn},假设关键词长度都为l,则二叉树的高度为l,二叉树根节点为26位的位图bm,其余节点结构为13位的位图,叶子结点级联一个数组;初始化阶段,将所有的bm全置为0,得到二叉位图数;

31、(3.3)建立字符与数字之间一个1-1映射关系,将英文字母a-z分别映射到1-26,通配符“?”映射到“?”;利用1-1映射规则,将关键词kwi转化为对应的特征数组

32、(3.4)通过步骤(3.3)将关键词字典wd转化为对应的特征数组集并按照规则将特征数组集t中各元素逐个填充到obbt中;对于特征数组集t中的任意数组首先填充根节点,将根节点位图的位置设置为1,接下来填充其他层节点,判断数组的第j位值βj,若βj≤13,则将第j层的左节点βj位置设置为1;若βj>13,则将第j层的βj-13右节点位置设置为1;逐层填充直到完成最后一层,将关键词kwi填充到叶子节点的数组中;将特征数组集t全部填充到obbt中;

33、(3.5)按照上述规则将所有的关键词填充到obbt中,每个叶子节点级联所有可能的关键词;其次,将叶子节点所有关键词进行编码和排序,利用步骤(3.1)编码规则,将叶子节点级联的所有关键词按照规则得到编码值-关键词对组,将其级联在obbt叶子节点;最后,将每个组的元素按照编码值大小进行排序,得到有序二叉排序树;

34、(3.6)利用公开密钥集sk对构建好的明文obbt进行加密,首先对每层节点进行加密,若节点位于第i层,bm′=h3(ski,bm),其中;其次加密叶子层级联的数组中每个元素的编码-关键词,将其加密为lab={labfirst,labsecond},其中labfirst=openc(skop,valuekw)为保序密文值,openc为对称保序加密算法,valuekw表示关键词kw的编码值;其中labenc为对称加密算法,ua为用户属性,kw为关键词,表示关键词为kw的文档标识符中属性为ua可以搜索的所有文档标识符,h2(ct1,ct2,…,ctt)表示密文hash值,t表示匹配到的密文的数量;

35、(3.7)输入公开密钥集sk、文件集d以及密文文件对应的id={id1,id2,…,idm},其中m表示文件集d中含有文件的数量;从文档集d中提取关键词字典wd={kw1,kw2,…kwn},按照步骤(3.1)-(3.5)的方法构建obbt,利用步骤(3.6)的方法对构建的obbt进行加密,输出加密的obbt索引i。

36、进一步地,步骤(4)包括:

37、利用文件加密密钥skd,加密文件集d={d1,d2,…,dm}中的每个文档di,得到密文文件集ct={ct1,ct2,…,ctm}(m≥t)。

38、进一步地,步骤(5)包括:

39、(5.1)数据使用者输入一个询问关键词q和公开密钥集sk;首先按照步骤(3.3)将关键词kwi映射转化为对应的特征数组tq=[β1,…,?,…,βl],并对数组中每个数字进行置换βi′=h4(ski,βi),其中;得到数组tq′=[β1′,…,?,…,βl′],其中“?”代表单字符通配符;其次,将通配符“?”替换为a和z,利用编码算法分别计算出编码值valuemin和valuemax,并对编码值进行加密trvalue=enc(value,skop),其中enc为语义安全的对称加密算法,value=(valuemin,valuemax);

40、(5.2)数据使用者输入自己的属性ua,生成属性陷门stagua=uaenc(ua,skua);

41、(5.3)将搜索陷门tp=(tq′,trvalue,stagua)发送至css。

42、进一步地,步骤(6)包括:

43、(6.1)css首先根据搜索陷门tp验证数据使用者的属性ua是否在搜索的权限范围内,即检查stagua是否在bfua内,如果结果存在,则执行步骤(6.2),否则输出终止符号⊥,结束此次搜索请求;

44、(6.2)css根据搜索陷门tp中关键词的trvalue,通过索引i执行搜索,返回对应属性下的叶子节点所有的验证标签labsecond;

45、(6.3)css接收到查询结果的承诺索引为x,并计算将证明发送给数据使用者,其中vx表示索引为x的密文,表示πx索引x搜索结果的承诺,t表示第t次更新。

46、进一步地,步骤(7)包括:

47、(7.1)输入公开密钥集sk和验证标签集labsecond,用sklab解密验证标签得到对应属性ua,关键词kw,属性为ua包含关键词kw的文档标识符密文hash值h2(ct1,ct2,…,ctt);

48、(7.2)数据使用者首先将得到的属性标识符与自身属性标识符进行对比,检验属性的正确性;

49、(7.3)数据使用者判断kw与关键词q是否匹配;如果匹配,将所有的id发送给css;如果不匹配,结束此次验证;

50、(7.4)数据使用者对证明ψ进行解析,查看当前的数据库是否为最新更新的数据库,e(hasht,g)=e(h1(ct-1,c(t),t),y),通过验证,则继续步骤(7.5),否则输出终止符号⊥;

51、(7.5)css返回所有的id-密文对把返回的密文进行hash值校验,验证h2(ct1,ct2,…,ctt)与两者是否相等,如果相等表示由css返回的密文的正确性和完整性,否则输出终止符号⊥。

52、进一步地,步骤(8)包括:

53、(8.1)对关键词进行更新时包括添加和删除两项操作;数据拥有者首先使用步骤(3)的方法将待添加的关键词的特征数组填充到对应属性下的明文obbt中,再对新关键词编码和排序,更新加密的obbt的索引i;删除关键词时需将(i,utype,trvalue)发送到css,其中utype设定为对应的操作标识,css在数据拥有者通过身份验证后,删除对应的编码值-关键词对,更新索引结构i,并更新数据库中的属性列表attributelist;

54、(8.2)将数据使用者属性存储于索引结构中,对属性的添加、删除操作与关键词的更新方法基本相似,区别在于使用新属性的stagua更新或重新生成bfua,将(i,utype,bfua)发送到css,由css完成更新,并更新数据库中信息;

55、(8.3)对于要更新的索引密文vx,数据拥有者首先获取相应的索引x,css将最新的数据记录vx和相应的证明ψ发送给数据拥有者;当verify(mpk,x,ψ)=vx≠⊥时,数据拥有者在t上加一,并计算出t′x=hasht=h1(ct-1,c(t),t)y;最后将(t′x,v′x)发送给css;如果t′x有效,css生成ct=hashtc(t),更新主公钥mpk=(pp,y,cr,c0,bfua,attributelist);最后css在x位置将vx替换为v′x,并在aux中插入t′x=(hasht,ct-1,c(t),t)。

56、本发明所述的支持动态更新的通配符可搜索加密系统,包括:

57、系统参数生成模块,用于配置安全参数λ,生成公开密钥集sk、公共参数pp以及数据使用者的属性列表attributelist;将公开密钥集sk发送给索引生成模块、文件加密模块、陷门生成模块、验证模块以及初始化模块;

58、初始化模块,用于根据公开密钥集sk、公共参数pp、所有文件构成的数据库db、数据拥有者的私钥kdo以及数据使用者的属性列表attributelist,生成可验证数据库vdb、主公钥mpk以及附加信息s;

59、索引生成模块,用于从文档集d中提取关键词字典wd={kw1,kw2,…kwn},关键词字典wd中具有带通配符的搜索关键词;利用关键词字典wd构建obbt;通过公开密钥集sk对构建的obbt进行加密,生成加密的obbt索引i;

60、文件加密模块,用于根据公开密钥集sk和文件集d,生成密文文件集ct;

61、陷门生成模块,用于根据公开密钥集sk、数据使用者的属性ua以及询问关键词q,生成搜索陷门tp;生成过程中,调用索引生成模块;将生成的搜索陷门tp发送给搜索模块;

62、搜索模块,用于验证数据使用者的属性ua,若具有搜索权限,则根据搜索陷门tp,在与数据使用者相匹配属性下的obbt执行搜索,根据逐层匹配算法,返回叶子节点所有的验证标签;将验证标签发送给验证模块;

63、验证模块,用于根据验证标签集、数据使用者的属性ua以及公开密钥集sk,数据使用者与css进行交互,验证属性的正确性、搜索结果的完整性和正确性;

64、以及,更新模块,用于关键词更新、属性更新以及文件更新;根据更新类别,相应地更新索引、主公钥mpk或者数据库。

65、有益效果:本发明与现有技术相比,具有如下显著优点:

66、(1)通过对关键词进行编码并保序加密,将通配符搜索转化为范围搜索和模糊搜索;

67、(2)将属性与一个有序二叉位图树相关联,实现了细粒度数据分享与访问控制;

68、(3)构建了一个可验证数据库(verifiable database,vdb),能够支持关键词、用户属性以及密文的动态更新。

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