一种支持多用户的动态可搜索加密方法及系统

文档序号:33701406发布日期:2023-03-31 19:23阅读:74来源:国知局
一种支持多用户的动态可搜索加密方法及系统

1.本发明属于信息安全领域,涉及一种基于前向安全和后向安全的动态可搜索加密技术,具体地说是一种支持多用户的动态可搜索加密方法及系统。


背景技术:

2.随着计算机技术和互联网应用的快速发展,人们对数据访问和信息存储容量的需求不断增加。云计算的日益普及,使得对云存储的需求也呈指数级增长。根据用户需求,可以使用云计算开发应用于工业、医疗保健、交通等不同领域的云服务。云计算使用户能够按需享受高质量的服务和无处不在的网络访问。但是在享受云存储带来的灵活性和便利性的同时,数据外包到云服务器将导致数据隐私泄露问题。为了保护用户数据隐私,明文通常在外包给云服务器之前进行加密。然而,加密过程将破坏数据的自然结构,且无法在加密数据上进行查询操作。
3.为了解决加密数据可搜索问题,curtmola等人在2006年提出了可搜索对称加密(searchable symmetric encryption,sse)的定义,给出了非自适应和自适应场景下安全性证明,并且扩展到多用户场景下可搜索对称加密。可搜索对称加密允许一方以私人方式加密数据,将其存储外包给另一方(服务器),同时保持在加密数据上选择性搜索的能力,消除了数据在处理之前需要解密的障碍。早期的可搜索对称加密都是静态场景的设计,只能实现客户端查询数据库,而不能实现客户端更新外包数据库(添加和删除数据)。
4.为了解决用户查询和更新外包数据库的问题,kamara等人在2012年提出了动态可搜索对称加密(dynamic searchable symmetric encryption,dsse)的定义,并提出了第一个动态可搜索对称加密的方案。动态可搜索对称加密允许一方将存储在另一方的加密数据添加或删除。这就导致敌手可以在更新(添加和删除数据)期间观察数据库的行为,可能会泄露数据库内容以及所涉及的搜索查询和关键字的信息。
5.针对上述泄露,stefanov等人在2014年提出了两个新的安全概念,分别称为前向隐私和后向隐私。简单地说,对于任何可能持续观察服务器和客户端之间交互的攻击者,如果添加新文件不会泄露先前查询的关键字的任何信息,则满足前向隐私;如果先前添加和后来删除的文件在同一关键字的两次搜索查询发生的任何时间段内不泄漏“太多”信息,则满足后向隐私。针对两个安全概念,bost等人在2017年提出了前向安全和三种不同类型的后向安全,并且分别提出了解决方案。虽然基于前向安全和后向安全的动态可搜索加密技术的研究有所进展,但目前的基于前向安全和后向安全的动态可搜索加密方法只考虑单用户场景,在多用户场景下的应用很少。


技术实现要素:

6.发明目的:针对背景技术中指出的基于前向安全和后向安全的动态可搜索加密方法的缺陷,提供一种支持多用户的动态可搜索加密方法及系统,在保证动态可搜索安全性的前提下,增加了用户身份验证机制,使其能够适用于多用户场景。
7.技术方案:本发明公开了一种支持多用户的动态可搜索加密方法,包括如下步骤:
8.步骤1:设定系统公开参数params和状态σ,所述系统公开参数params为σ为《n,k,ct》,p为大素数,p阶乘法循环群和双线性映射从中选择生成元g,h,选取四个抗碰撞的哈希函数h
*
、h0、h1、h2;选取密钥k,用于存储当前搜索令牌的空映射ct和整数n,n=2
l
,其中l是文件最大数;
9.步骤2:根据想要更新或搜索的信息建立文件索引bs;
10.步骤3:根据所述系统公开参数params和用户id,生成用户的私钥
11.步骤4:根据所述系统公开参数params,用户的私钥和关键字搜索令牌索引ct,得到搜索令牌stc和计数器c;
12.步骤5:根据关键字密钥生成的一次性私钥sk
c+1
,对文件索引bs进行加密得到e
c+1

13.步骤6:对于状态σ,根据加密数据库edb,文件索引bs,更新关键字w,得到更新状态σ

和更新的加密数据库edb


14.步骤7:对于状态σ,根据加密数据库edb,搜索用户想要搜索的关键字w,搜索得到加密文件索引e;
15.步骤8:根据步骤7搜索得到的加密文件索引e,通过同态相加获得最终结果sume;
16.步骤9:根据同态相加结果sume和一次性私钥的总和sum
sk
,解密后得到文件索引bs。
17.进一步地,所述哈希函数h
*
、h0、h1、h2选用哈希函数md-5、sha-1、sha-2或sha-3,且h
*
只有代理服务器和身份权威机构可知。
18.进一步地,所述步骤3获取用户的私钥具体包括:
19.步骤3.1:生成元h=h0+h1;
20.步骤3.2:身份权威机构计算作为用户的私钥,身份权威机构颁发给用户的私钥为
21.进一步地,所述步骤4中获取搜索令牌stc和计数器c具体包括:
22.步骤4.1:授权者的代理服务器计算hu=h0(1-u)+h1u发送hu给身份权威机构进行身份验证;
23.步骤4.2:身份权威机构接收后计算步骤4.2:身份权威机构接收后计算
24.步骤4.3:身份权威机构根据关键字搜索令牌索引ct,返回当前关键字搜索令牌stc和计数器c给用户。
25.进一步地,所述步骤5对文件索引bs进行加密得到e
c+1
具体包括:
26.步骤5.1:加密者通过具有密钥k的键控伪随机函数fk生成k
′w;
27.步骤5.2:计算一次性私钥sk
c+1
=h2(k
′w,c+1);
28.步骤5.3:计算加密文件索引e
c+1
=sk
c+1
+bs
c+1
mod n,bs
c+1
为第c+1个文件索引。
29.进一步地,所述步骤6中包括:
30.步骤6.1:授权者的代理服务器通过具有密钥k的键控伪随机函数fk生成kw;
31.步骤6.2:根据步骤4中当前关键字搜索令牌stc和计数器c判断是否为空,如果为
空,则c
←‑
1,stc←
{0,1}
λ
;如果不为空,则继续执行以下步骤;
32.步骤6.3:代理服务器执行st
c+1

{0,1}
λ
,将(st
c+1
,c+1)存储到ct;
33.步骤6.4:计算更新令牌ut
c+1
=h0(kw,st
c+1
),屏蔽之前的搜索令牌
34.步骤6.5:代理服务器将发送到数据库服务器;
35.步骤6.6:数据库服务器根据代理服务器发送的信息更新状态和加密数据库。
36.进一步地,所述步骤7中具体包括:
37.步骤7.1:授权者的代理服务器通过具有密钥k的键控伪随机函数fk生成kw;
38.步骤7.2:根据当前关键字搜索令牌stc和计数器c判断是否为空,如果为空,返回如果不为空,则继续执行以下步骤;
39.步骤7.3:发送(kw,stc,c)到数据库服务器;
40.步骤7.4:数据库服务器从计数器位置c直到位置0往前循环执行以下步骤;
41.步骤7.5:计算uti=h0(kw,sti),检索与用户想要搜索关键字w对应的所有加密位字符串ei。
42.进一步地,所述步骤8具体包括:数据库服务器根据所有加密位字符串ei,从计数器位置c直到位置0往前循环执行以下步骤:计算sume=e
i-1
+eimod n。
43.进一步地,所述步骤9包括:
44.步骤9.1:解密者从计数器位置c直到位置0往前循环执行以下步骤;
45.步骤9.2:计算ski=h2(k
′w,i),将计算得到的每个sk进行模加运算,得到一次性私钥的总和sum
sk
,其中,k
′w为加密者通过具有密钥k的键控伪随机函数fk生成的;
46.步骤9.3:结束循环后,用户计算bs=sum
e-sum
sk
mod n得到想要搜索的文件索引。
47.本发明还公开一种支持多用户的动态可搜索加密系统,包括:
48.系统参数设置模块:输入安全参数λ,返回系统公开参数params和状态σ;
49.索引建立模块:输入数据库db,建立文件索引bs;
50.注册模块:根据系统公开参数params和用户id,生成用户的私钥其中k=1,2,

,n。系统中共有n个授权者;
51.认证模块:根据系统公开参数params,输入授权者私钥和当前关键字搜索令牌索引ct,返回搜索令牌stc和计数器c;
52.加密模块:加密者输入一次性私钥sk
c+1
对文件索引bs进行加密,得到加密文件索引e
c+1

53.更新模块:数据库服务器根据状态σ和授权者需要更新的关键字w,对加密数据库edb进行更新,得到更新的状态σ

和加密数据库edb


54.搜索模块:数据库服务器根据状态σ和授权者想要查询的关键字w,对加密数据库edb进行搜索,得到加密文件索引e;
55.同态加法模块:数据库服务器应用同态加法算法,将与授权者想要查询的关键字w对应的所有加密文件索引e进行同态相加,得到加密文件索引的总和sume;
56.解密模块:解密者根据一次性私钥的总和sum
sk
对加密文件索引的总和sume进行解密,得到文件索引bs。
57.有益效果:
58.本发明所提供的支持多用户的动态可搜索加密方法与普通的动态可搜索加密方法相比,增加了用户身份注册和验证的模块,可应用于多用户场景下验证用户的合法性。另外,该动态可搜索加密方法具有前向安全性和后向安全性,即使敌手知道当前搜索的关键字,也无法获取之前搜索的结果和之前更新的内容,保证了更新期间的数据安全性。
附图说明
59.图1为本发明加密系统的工作示意图;
60.图2为本发明加密方法的流程图;
61.图3为本发明加密系统的结构示意图。
具体实施方式
62.下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
63.本发明应用的数学理论说明:
64.零知识证明(zero-knowledge proof)指证明者能够在不向验证者提供任何有用信息的情况下使验证者相信某个论断是正确的。本发明应用的零知识证明方案是camenisch和stadler引入的零知识证明方案,具体描述如下:
65.定义整数α,β和γ的零知识证明为其中g,h是循环群的生成元,是群的生成元。整数α,β和γ是要证明的知识,其他值为验证者用于验证等式是否成立。
66.如图1所示,本发明公开的支持多用户的动态可搜索加密系统包括如下九个模块:
67.系统参数设置模块(setup):输入安全参数λ,返回系统公开参数params和状态σ。
68.索引建立模块(buildindex):输入数据库db,建立文件索引bs。
69.注册模块(register):根据系统公开参数params和用户id,生成用户的私钥其中k=1,2,

,n。系统中共有n个授权者。
70.认证模块(authorize):根据系统公开参数params,输入授权者私钥和当前关键字搜索令牌索引ct,返回搜索令牌stc和计数器c。
71.加密模块(enc):加密者输入一次性私钥sk
c+1
对文件索引bs进行加密,得到加密文件索引e
c+1

72.更新模块(update):数据库服务器根据状态σ和授权者需要更新的关键字w,对加密数据库edb进行更新,得到更新的状态σ

和加密数据库edb


73.搜索模块(search):数据库服务器根据状态σ和授权者想要查询的关键字w,对加密数据库edb进行搜索,得到加密文件索引e。
74.同态加法模块(add):数据库服务器应用同态加法算法,将与授权者想要查询的关键字w对应的所有加密文件索引e进行同态相加,得到加密文件索引的总和sume。
75.解密模块(dec):解密者根据一次性私钥的总和sum
sk
对加密文件索引的总和sume进行解密,得到文件索引bs。
76.下面将结合支持多用户的动态可搜索加密方法的流程图对该加密系统的各个模块进行具体的说明。
77.如图2所示,本发明提供的支持多用户的动态可搜索加密方法执行流程具体如下:
78.步骤1:设定系统公开参数params和状态σ,所述系统公开参数params为σ为《n,k,ct》,p为大素数,p阶乘法循环群和双线性映射从中选择生成元g,h,选取四个抗碰撞的哈希函数h
*
、h0、h1、h2;选取密钥k,用于存储当前搜索令牌的空映射ct和整数n,n=2
l
,其中l是文件最大数。哈希函数h
*
、h0、h1、h2选用哈希函数md-5、sha-1、sha-2或sha-3,且h
*
只有代理服务器和身份权威机构可知。
79.步骤2:根据想要更新或搜索的信息建立文件索引bs。
80.步骤3:根据所述系统公开参数params和用户id,生成用户的私钥
81.步骤3.1:生成元h=h0+h1;
82.步骤3.2:身份权威机构计算作为用户的私钥,身份权威机构颁发给用户的私钥为
83.步骤4:根据所述系统公开参数params,用户的私钥和关键字搜索令牌索引ct,得到搜索令牌stc和计数器c。
84.步骤4.1:授权者的代理服务器计算hu=h0(1-u)+h1u发送hu给身份权威机构进行身份验证;
85.步骤4.2:身份权威机构接收后计算步骤4.2:身份权威机构接收后计算
86.步骤4.3:身份权威机构根据关键字搜索令牌索引ct,返回当前关键字搜索令牌stc和计数器c给用户。
87.步骤5:根据关键字密钥生成的一次性私钥sk
c+1
,对文件索引bs进行加密得到e
c+1

88.步骤5.1:加密者通过具有密钥k的键控伪随机函数fk生成k
′w;
89.步骤5.2:计算一次性私钥sk
c+1
=h2(k
′w,c+1);
90.步骤5.3:计算加密文件索引e
c+1
=sk
c+1
+bs
c+1
mod n,bs
c+1
为第c+1个文件索引。
91.步骤6:对于状态σ,根据加密数据库edb,文件索引bs,更新关键字w,得到更新状态σ

和更新的加密数据库edb


92.步骤6.1:授权者的代理服务器通过具有密钥k的键控伪随机函数fk生成kw;
93.步骤6.2:根据步骤4中当前关键字搜索令牌stc和计数器c判断是否为空,如果为空,则c
←‑
1,stc←
{0,1}
λ
;如果不为空,则继续执行以下步骤;
94.步骤6.3:代理服务器执行st
c+1

{0,1}
λ
,将(st
c+1
,c+1)存储到ct;
95.步骤6.4:计算更新令牌ut
c+1
=h0(kw,st
c+1
),屏蔽之前的搜索令牌
96.步骤6.5:代理服务器将发送到数据库服务器;
97.步骤6.6:数据库服务器根据代理服务器发送的信息更新状态和加密数据库。
98.步骤7:对于状态σ,根据加密数据库edb,搜索用户想要搜索的关键字w,搜索得到
加密文件索引e。
99.步骤7.1:授权者的代理服务器通过具有密钥k的键控伪随机函数fk生成kw;
100.步骤7.2:根据当前关键字搜索令牌stc和计数器c判断是否为空,如果为空,返回如果不为空,则继续执行以下步骤;
101.步骤7.3:发送(kw,stc,c)到数据库服务器;
102.步骤7.4:数据库服务器从计数器位置c直到位置0往前循环执行以下步骤;
103.步骤7.5:计算uti=h0(kw,sti),检索与用户想要搜索关键字w对应的所有加密位字符串ei。
104.步骤8:根据步骤7搜索得到的加密文件索引e,通过同态相加获得最终结果sume。数据库服务器根据所有加密位字符串ei,从计数器位置c直到位置0往前循环执行以下步骤:计算sume=e
i-1
+eimod n。
105.步骤9:根据同态相加结果sume和一次性私钥的总和sum
sk
,解密后得到文件索引bs。
106.步骤9.1:解密者从计数器位置c直到位置0往前循环执行以下步骤;
107.步骤9.2:计算ski=h2(k
′w,i),将计算得到的每个sk进行模加运算,得到一次性私钥的总和sum
sk
,其中,k
′w为加密者通过具有密钥k的键控伪随机函数fk生成的;
108.步骤9.3:结束循环后,用户计算bs=sum
e-sum
sk
mod n得到想要搜索的文件索引。
109.下面将对如上所述的支持多用户的动态可搜索加密方法及系统应用于云计算中的实例场景进行说明。
110.依照本发明的步骤,当用户a要更新公共云端数据的时候,身份权威机构运行得到公共参数params,授权者产生用户a的私钥和搜索令牌,分别用三个抗碰撞的哈希函数生成更新令牌、屏蔽先前令牌的密文和一次性私钥,利用一次性私钥对文件索引进行加密,将更新令牌、屏蔽先前令牌的密文和加密文件索引更新到云端数据库。当用户b要查询公共云端数据的时候,身份权威机构运行得到公共参数params,授权者产生用户b的私钥和搜索令牌,将想要查询的关键字密钥和搜索令牌发送给云端数据库。云端将检索到的所有结果同态相加,得到加密文件索引的总和,并返回给用户。用户将所有一次性私钥同态相加,得到一次性私钥的总和,解密加密文件索引的总和。由于本方案能够保护用户隐私,运用零知识证明验证用户身份,因此恶意的授权者和恶意的用户均不能得到将数据存储到云端的用户的身份信息。此外,由于采用抗碰撞的哈希函数生成更新令牌、屏蔽先前令牌的密文和一次性私钥,本方案满足动态可搜索的前向和后向安全性。
111.上述实例的描述仅为说明本发明的基本原理与特点,在上述实例的基础上可以很容易地联想到其他优点和变形。在不背离本发明宗旨的范围内,本领域普通技术人员可以根据上述具体实例通过各种等同替换得到其他技术方案,但是这些技术方案均应该包含在本发明的权利要求的范围及其等同的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1