一种用于密文数据的前后向安全和可验证的布尔查询方法

文档序号:25061188发布日期:2021-05-14 14:43阅读:来源:国知局

技术特征:
1.一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述方法包括:s01,数据拥有者根据拥有的文档集提取关键字集合;s02,初始化系统,生成密钥、多个映射表和私有状态表;s03,对关键字集合进行预处理操作,将关键字集合转化成标准正交向量组,每一个关键字对应一个标准正交向量;s04,对文档进行加密后存放到密文映射表,生成对应索引结构并存放到索引映射表,然后发送给云服务器;s05,云服务器接收并保存数据拥有者发送的映射表;s06,数据使用者利用数据拥有者共享的密钥,映射表和私有状态表等私有信息,生成相应的检索请求,并发送给云服务器;s07,云服务器根据接收到的检索请求,在索引映射表,密文映射表和删除映射表上执行检索操作,并返回检索结果;s08,数据使用者接收到云服务器的检索结果,对结果进行解密并进行完整性验证;s09,数据使用者根据需求生成对应的添加或删除的请求,并发送给云服务器;s10,云服务器根据接收到的更新请求,执行相应的添加或删除操作。2.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s01包括以下步骤:11)利用文本关键字提取算法,提取对应文档集d={d1,

,d
d
}的关键字集合w={ω1,


m
},再引入一个通用关键字ω
m+1
,即假设每一个文档都含有该关键字;12)为每一个文档d
i
生成对应的文档标识符ind
i
,同时提取对应于该文档d
i
的关键字集合w
i
,满足13)保存数据集和关键字集合w。3.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s02包括以下步骤:21)随机生成二进制系统安全参数λ;22)根据系统安全参数λ生成密钥集合k=(k1,k2,k3,k4,k5,k6,k,k
tag
);23)生成索引结构映射表t
s
、密文映射表t
f
、删除映射表t
del
、主密钥映射表msk、穿刺密钥映射表psk和最大穿刺次数映射表del;24)生成私有添加状态表σ
add
和私有删除状态表σ
del
。4.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s03包括以下步骤:31)数据拥有者将关键字集合中的每一个关键字根据伪随机函数π:{0,1}
λ
×
{0,1}
*

{0,1}
l
转化为长度为l的向量,k6作为该伪随机函数的密钥,转化后的关键字集合是一个由m+1个长度为l的向量组成的集合w

={π(ω1),

,π(ω
m
),π(ω
m+1
)};32)将向量组成的集合w

={π(ω1),

,π(ω
m
),π(ω
m+1
)}转化为一组线性无关向量组s={v1,

,v
m
,v
m+1
};33)将线性无关向量组s={v1,

,v
m
,v
m+1
}进行施密特正交化处理,并将得到的正交矩
阵进行标准化后得到标准正交矩阵其中关键字集合w中的每一个关键字ω
i
唯一对应于标准正交矩阵中的标准正交向量o
i
,通用关键字ω
m+1
对应于标准正交矩阵中的标准正交向量j。5.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s04包括以下步骤:41)对每一对文档

关键字对(ind,ω),利用伪随机函数f:{0,1}
λ
×
{0,1}
*

{0,1}
t
和标签密钥k
tag
生成对应的标签tag

f(k
tag
,ω||ind),其中||表示字符串连接符号;42)取出对应关键字在主密钥映射表msk、穿刺密钥映射表psk和最大穿刺次数映射表del中的值;43)若在主密钥映射表msk中对应的值为空,则转到步骤44);否则转到步骤46);44)给关键字ω赋初值d,表示允许在该关键字ω对应的密钥上穿刺的最大次数为d,并将对应的值d存放到最大穿刺次数映射表del中,即del[ω]

d;45)利用对称可穿刺加密算法生成关键字ω对应的穿刺加密密钥msk,msk

spe.keygen(1
λ
,d),其中spe表示对称可穿刺加密算法,keygen()表示对称可穿刺加密算法中的密钥生成函数,并将得到的穿刺加密密钥存放到主密钥映射表msk和穿刺密钥映射表psk中,即msk[ω]

msk,psk[ω]

msk;46)利用对称可穿刺加密算法,根据关键字ω对应的穿刺加密密钥msk和文档

关键字对(ind,ω)对应的标签tag,对文档标识符ind进行加密,得到对应的密文cind

spe.enc(msk,ind,tag),其中enc()表示对称可穿刺加密算法中的加密函数;47)从私有添加状态表σ
add
中获取对应于关键字ω的记录中获取对应于关键字ω的记录若对应的记录为空,则转到步骤48),否则转到步骤410),其中st
c
表示含有关键字ω的第c个文档对应的存储地址,表示多集合哈希值;48)将空字符串赋给初始存储地址st0,st0←⊥
,并给计数器c赋初值0,其中

表示空字符串;49)k4作为多集合哈希函数的密钥,初始化生成一个空集合对应的哈希值,其中r
ω
是对应于关键字ω的随机数,r
ω

f(k1,ω),k1为用于生成r
ω
的密钥,为多集合哈希函数;410)生成对应于文档

关键字对(ind,ω)的第c+1个存储地址st
c+1

f(k2,ω||ind)以及多集合哈希函数的随机数r
ω

f(k1,ω);411)利用排序为2的哈希函数h2:{0,1}
λ
×
{0,1}
*

{0,1}
t
对第c+1个存储地址st
c+1
进行哈希,得到隐藏存储地址u

h2(k,st
c+1
),其中k是排序为2的哈希函数h2的密钥;412)将当前第c+1个存储地址st
c+1
,加密后的文档标识符cind和前一条含有相同关键字ω的文档

关键字对的第c个存储地址st
c
通过排序为1的哈希函数h1:{0,1}
λ
×
{0,1}
*

{0,1}
t+p
和异或操作组合在一起,得到存储记录和异或操作组合在一起,得到存储记录其中p表示密文文档标识符cind的长度,k3是排序为1的哈希函数h1的密钥;413)生成文档标识符对应文档的标签其中ω
s
表示文档中含有的关键
字,w表示对应文档中含有的关键字集合,o
s
是ω
s
对应的标准正交向量,将文档含有的所有关键字对应的标准正交向量相加,得到该文档的标签ξ;414)对文档进行安全的哈希摘要hash

sha(d),d表示文档标识符ind对应的文档,sha()表示安全的哈希摘要函数,并使用对称加密算法加密文档()表示安全的哈希摘要函数,并使用对称加密算法加密文档将计数器c自增1,即c

c+1;415)将结果(e,ξ,hash,tag)和密文文档分别存放到索引结构映射表t
s
和密文映射表t
f
,即t
s
[u]

(e,ξ,hash,tag)和416)将文档标识符ind通过多集合哈希函数添加到多集合哈希值中,416)将文档标识符ind通过多集合哈希函数添加到多集合哈希值中,417)将记录存放到私有添加状态表σ
add
中,418)若关键字ω为首次出现,则给删除计数器a和删除存储地址st
d
赋初值a

0,st
d

f(k2,ω||a),并将a和st
d
存放到私有删除状态表σ
del
中,σ
del
[ω]=(st
d
,a);否则不执行该步骤;419)若还有待添加的文档

关键字对,则返回步骤401),否则转到步骤420);420)将索引结构映射表t
s
、密文映射表t
f
和删除映射表t
del
发送给云服务器;421)将密钥集合k,私有添加状态表σ
add
和私有删除状态表σ
del
以及主密钥映射表msk、穿刺密钥映射表psk和最大穿刺次数映射表del共享给受信任用户。6.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s06包括以下步骤:61)数据使用者生成自己感兴趣的关键字布尔表达式,并将布尔表达式转化为对应的析取范式满足满足其中表示第i个合取范式,i
i
表示第i个合取范式中含有的所有关键字集合,j表示关键字对应的下标,

表示对表达式中的内容取非操作或不操作,表示不做任何操作,表示取非操作;62)对于析取范式中的第i个合取范式都将其转化为一个对应的向量具体步骤如下:621)将第i个合取范式中的关键字分为两部分{p
i
,n
i
},其中p
i
表示中

为的所有关键字,n
i
表示中

为的所有关键字;622)随机选取|p
i
|+1个正整数使得a
i,j
,随机选取|n
i
|个负整数使得其中|p
i
|,|n
i
|分别表示集合p
i
和n
i
的势;623)分别找出集合p
i
和n
i
中关键字ω
j
对应的标准正交向量o
j
,计算得到第i个合取范式对应的向量对应的向量
63)将析取范式中的每一个合取表达式对应的向量合并为合并为64)初始化搜索列表l
st
、验证列表l
ms
和未穿刺密钥列表l
msk
;65)对于析取范式中的第i个合取范式具体执行如下步骤:651)根据私有添加状态表σ
add
,找出关键字集合p
i
中含有最少文档数的关键字ω
pi
;652)取出对应关键字在私有添加状态表σ
add
和穿刺密钥映射表psk中的记录,msk
′←
psk[ω
pi
],其中msk

表示在穿刺密钥映射表psk中当前对应于ω
pi
的待穿刺密钥;653)更新最少文档数的关键字ω
pi
允许的穿刺次数del[ω
pi
]

d,并重新生成对应的穿刺加密密钥msk

spe.keygen(1
λ
,d),然后更新最少文档数的关键字ω
pi
在主密钥映射表msk和穿刺密钥映射表psk中的密钥,msk[ω
pi
]

msk,psk[ω
pi
]

msk;654)生成最少文档数的关键字ω
pi
对应的多集合哈希函数的随机数r
ω

f(k1,ω
pi
);655)从私有删除状态表σ
del
中取出最少文档数的关键字ω
pi
对应于删除映射表t
del
中的删除存储地址st
d
;656)将对应的记录添加到列表中,和l
msk

msk

;657)将删除计数器a自增1,a

a+1,并生成新的st
d

f(k2,ω||a)后更新私有删除状态表σ
del
[ω]=(st
d
,a);66)将查询请求(l
st
,l
msk
,k3,k4)发送给云服务器。7.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s07包括以下步骤:71)对于搜索列表l
st
中的每一条记录若搜索列表中记录都已经被遍历完或搜索列表为空,则转到步骤73),否则云服务器执行如下操作:711)初始化结果列表l
r
和多集合哈希值712)取出删除映射表t
del
中对应于删除存储地址st
d
上的记录穿刺密钥列表l
psk
后删除该列表;713)若第c个存储地址st
c
不是空字符串,即st
c


,则继续执行,否则转到步骤72);714)取出索引结构映射表t
s
中对应于隐藏存储地址u

h2(k,st
c
)上的记录(e
c

c
,hash
c
,tag
c
),其中e
c
表示对应于当前查询关键字的第c个存储记录,ξ
c
表示对应于当前查询关键字的第c个文档标签,hash
c
表示对应于当前查询关键字的第c个哈希摘要,tag
c
表示对应于当前查询关键字的第c个标签;715)对第c个存储记录e
c
进行解密得到上一条文档记录的存储地址st
c
‑1和当前查询关键字的第c个密文文档标识符cind
c
,,716)取出未穿刺密钥列表l
msk
中对应的密钥和穿刺密钥列表l
psk
,并对第c个密文文档标识符cind
c
进行解密,解密成功则执行步骤717),并将当前明文文档标识符ind
c
存回索引
结构映射表t
s
;否则执行c

c

1并返回步骤713);717)若查询向量与当前查询的文档标签的内积即计算查询的合取范式对应的向量与当前被查询的文档对应的标签的内积,若结果为1,则说明当前被查询的文档符合查询条件。获取密文映射表t
f
中对应当前查询的密文并将记录添加到结果列表l
r
中,同时将对应的明文文档标识符ind
c
添加到多集合哈希中执行c

c

1后返回步骤713);72)将记录添加到最终结果列表中,并转到步骤71);73)将最终结果列表返回给数据使用者。8.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s08包括以下步骤:81)遍历最终结果列表中的每一条记录和验证列表l
ms
中对应的记录执行如下步骤,直到遍历完所有记录,转到步骤82);811)比较最终结果列表中的多集合哈希值和本地保存的验证列表l
ms
中的多集合哈希值若两个值相等则继续执行下面的步骤,否则输出验证结果“false”,表明检索结果不满足完备性;812)对于结果列表l
r
中的每一条记录首先判断是否成立,若不成立,则输出验证结果“false”,表明此文档不满足查询条件;若等式成立,则继续下面步骤;813)然后对当前查询的第c个密文进行解密其中dec()为与之前加密算法对应的解密算法,并对解密后的当前查询的第c个文档d
c
进行安全哈希摘要hash

sha(d
c
),并比较用户根据接收到的文档计算出的哈希值hash与服务器返回的文档的哈希值hash
c
是否相等,若不等,则输出验证结果“false”,表明当前文档被篡改过;否则返回步骤812),直到遍历完结果列表l
r
后转到步骤81);82)输出验证结果“true”,表明检索结果的完备性、正确性和可靠性通过了验证。9.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s09包括以下步骤:91)对于输入的文档

关键字对(ind,ω),利用伪随机函数f:{0,1}
λ
×
{0,1}
*

{0,1}
t
和标签密钥k
tag
生成对应的标签tag

f(k
tag
,ω||ind);92)若要添加文档

关键字对(ind,ω),则转到步骤903);若要删除文档

关键字对(ind,ω),则转到步骤916);93)若主密钥映射表msk中含有关键字ω对应的记录,则取出穿刺加密密钥msk;否则给关键字赋最大穿刺次数d并存放到最大穿刺次数映射表del中,del[ω]

d,然后生成对应的穿刺加密密钥msk

spe.keygen(1
λ
,d),并将得到的穿刺加密密钥存放到主密钥映射表和穿刺密钥映射表中,即msk[ω]

msk,psk[ω]

msk;94)利用对称可穿刺加密算法,根据穿刺加密密钥msk和文档

关键字对(ind,ω)对应的标签tag,对文档标识符ind进行加密,得到对应的密文cind

spe.enc(msk,ind,tag);
95)从私有添加状态表σ
add
中获取对应于关键字ω的记录中获取对应于关键字ω的记录若对应的记录为空,则转到步骤906),否则转到步骤908);96)将空字符串赋给初始存储地址st0,st0←⊥
,并给c赋初值0;97)k4作为多集合哈希函数的密钥,初始化生成一个空集合对应的多集合哈希值,其中r
ω
是对应于关键字ω的随机数,r
ω

f(k1,ω);98)生成对应于文档

关键字对(ind,ω)的第c+1个存储地址st
c+1

f(k2,ω||ind)以及r
ω

f(k1,ω);99)利用排序为2的哈希函数h2:{0,1}
λ
×
{0,1}
*

{0,1}
t
对第c+1个存储地址st
c+1
进行哈希,得到隐藏存储地址u

h2(k,st
c+1
);910)将第c+1个存储地址st
c+1
,加密后的文档标识符cind和前一条含有相同关键字ω的文档

关键字对的第c个存储地址st
c
通过排序为1的哈希函数h1:{0,1}
λ
×
{0,1}
*

{0,1}
t+p
和异或操作组合在一起,得到存储记录和异或操作组合在一起,得到存储记录k3是排序为1的哈希函数h1的密钥,其中p表示密文文档标识符cind的长度;911)生成文档标识符对应文档的标签其中ω
s
表示文档中含有的关键字,w表示对应文档中含有的关键字集合,o
s
是ω
s
对应的标准正交向量,将文档含有的所有关键字对应标准正交向量相加,得到该文档的标签ξ;912)对文档进行安全的哈希摘要hash

sha(d),d表示文档标识符ind对应的文档,sha()表示安全的哈希摘要函数,并使用对称加密算法加密文档()表示安全的哈希摘要函数,并使用对称加密算法加密文档计数器c自增1,即c

c+1;913)将文档标识符ind通过多集合哈希函数添加到多集合哈希值中,913)将文档标识符ind通过多集合哈希函数添加到多集合哈希值中,914)将记录存放到私有添加状态表σ
add
中,915)发送添加操作请求给云服务器,其中op表示操作符,add表示添加操作;916)取出穿刺密钥映射表psk中对应关键字ω的待穿刺密钥msk

;917)对待穿刺密钥msk

进行穿刺(msk

,psk
t
)

spe.pun(msk

,tag),其中pun()表示对称可穿刺加密算法中的穿刺函数,psk
t
表示被穿刺后的密钥,并使用新的待穿刺密钥msk

对穿刺密钥映射表psk中对应关键字ω的待穿刺密钥msk

进行更新;918)获取其余被穿刺的密钥psk
i
在删除映射表t
del
中的存储位置(st
d
,a)

σ
del
[ω];919)计算删除文档ind后的多集合哈希值并更新私有添加状态表920)发送删除操作请求(op=del,st
d
,psk
t
)给云服务器,其中op表示操作符,del表示删除操作。10.根据权利要求1所述的一种用于密文数据的前后向安全和可验证的布尔查询方法,其特征在于,所述s10包括以下步骤:
101)云服务器接收到更新请求,若操作符op=add,其中add表示添加操作,转到步骤102);若操作符op=del,其中del表示删除操作,转到步骤103);102)在索引结构映射表中添加文档信息t
s
[u]

(e,ξ,hash,tag),并把密文添加到密文映射表中操作结束;103)将被穿刺的密钥psk
t
添加到删除映射表t
del
[st]中,操作结束。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1