一种抵抗在线和离线关键字猜测攻击的数据传输方法

文档序号:30515200发布日期:2022-06-25 03:06阅读:361来源:国知局
一种抵抗在线和离线关键字猜测攻击的数据传输方法

1.本发明涉及云存储安全领域的一种具有关键字搜索功能的加密方法,尤其涉及一种抵抗在线和离线关键字猜测攻击的数据传输方法。


背景技术:

2.由于云存储的空间扩展能力和低廉的运营成本,越来越多的用户将自己的私有数据转移到云服务器端。安全加密是实现数据安全的一种有效手段,为了保护敏感信息的隐私,用户通常会将私人数据进行加密。遗憾的是,加密的数据阻碍了数据操作和共享效率。公钥可搜索加密技术(peks,public key encryption with keyword search)的提出为上述问题提供了解决方案。该技术使得云服务器在无需解密的前提下为用户提供关键字搜索服务。在公钥可搜索加密机制中,用户通常会使用有限的关键字来产生搜索令牌,这很容易导致关键字猜测攻击的问题。根据攻击方式,关键词猜测攻击可分为离线关键词猜测攻击和在线关键词猜测攻击两种类型。近年来,抵抗离线关键词猜测攻击和在线关键词猜测攻击的方案被相继提出,然而,缺少同时抵抗两种攻击的安全数据传输方法。


技术实现要素:

3.为了解决背景技术中存在的问题,本发明的目的是提供一种同时抵抗离线关键词猜测攻击和在线关键词猜测攻击的安全数据传输方法。该系统有效解决了可搜索加密方案中的离线关键词猜测攻击和在线关键词猜测攻击问题。
4.本发明的具体技术方案如下:
5.步骤s1:可信第三方运行初始化算法,输入全局安全参数,输出系统公开参数;
6.步骤s2:数据发送方运行密钥生成算法,输入系统公开参数,输出数据发送方的私钥和公钥;
7.步骤s3:数据接收方运行密钥生成算法,输入系统公开参数,输出数据接收方的私钥和公钥;
8.步骤s4:云服务器运行密钥生成算法,输入系统公开参数,输出云服务器的私钥和公钥;
9.步骤s5:数据发送方对上传的明文数据提取关键字,运行关键字加密算法加密提取出的关键字获得关键字密文,并将关键字密文上传至云服务器;
10.步骤s6:数据发送方运行数据加密算法,对上传的明文数据进行加密获得密文数据,并将密文数据上传至云服务器;
11.步骤s7:数据接收方运行搜索令牌生成算法,构建查询关键字的搜索令牌,并将搜索令牌发送给云服务器;
12.步骤s8:云服务器运行搜索算法,通过对s5中的关键字密文和s7中的搜索令牌进行匹配:
13.若两者匹配,云服务器将关键字密文对应的密文数据进行重加密,并将重加密的
密文数据发送给数据接收方;
14.步骤s9:数据接收方对云服务器返回的密文数据进行解密得到明文数据。
15.进一步地,所述步骤s1具体包括:
16.根据给定的全局安全参数k选取系统公开参数g,g
t
,p,g和e,其中g为第一乘法循环群,g
t
为第二乘法循环群,g,g
t
均为阶为素数p的乘法循环群,p表示素数,g表示乘法循环群g的生成元,乘法循环群g中的元素均可以用生成元g表示,e为双线性映射,双线性映射e满足双线性、非退化性和可计算性。
17.进一步地,所述步骤s2具体包括:从整数群z
p*
中随机选择x作为数据发送方的私钥,根据系统公开参数中的生成元g计算g
x
作为数据发送方的公钥。
18.进一步地,所述步骤s3具体包括:从整数群z
p*
中随机选择y作为数据接收方的私钥,根据系统公开参数中的生成元g计算gy作为数据接收方的公钥。
19.进一步地,所述步骤s4具体包括:从整数群z
p*
中随机选择z作为云服务器的私钥,根据系统公开参数中的生成元g计算gz作为云服务器的公钥。
20.进一步地,所述步骤s5具体包括以下步骤:
21.步骤s51:数据发送方从明文数据f中抽取关键词w;
22.步骤s52:数据发送方从整数群z
p*
中选择第一随机数r,运行关键词加密算法,输入数据发送方的私钥x、数据接收方的公钥gy、云服务器的公钥gz和抽取出的关键词w,根据关键词加密算法计算得到第一关键字密文h(w)
x
·
(gz)r和第二关键字密文(gy)r,其中h()表示hash函数;
23.步骤s53:数据发送方将第一关键字密文和第二关键字密文上传至云服务器。
24.所述的hash函数能够实现:{0,1}
*-》g,{0,1}
*
表示是由0和1生成的任意长度的字符串,即表示hash函数能够将由0和1生成的任意长度的字符串处理获得第一乘法循环群g中的一个元素。
25.进一步地,所述步骤s6具体包括以下步骤:
26.步骤s61:数据发送方从整数群z
p*
中选择第二随机数r

运行数据加密算法,输入明文数据m、数据接收方的公钥gy,根据数据加密算法计算得到第一数据密文m
·
(gy)r′
和第二数据密文gr′

27.步骤s62:数据发送方将第一数据密文和第二数据密文上传至云服务器。
28.进一步地,所述步骤s7具体包括以下步骤:
29.步骤s71:数据接收方从整数群z
p*
中选择第三随机数s运行搜索令牌生成算法,输入数据接收方搜索的查询关键词w

、数据接收方的私钥y和云服务器的公钥gz,根据搜索令牌生成算法计算关键词w

的第一搜索令牌h(w

)y·
h(gz)s和第二搜索令牌gs,其中h()表示hash函数。
30.步骤s72:数据接收方将第一搜索令牌和第二搜索令牌上传至云服务器。
31.进一步地,所述步骤s8具体包括以下步骤:
32.步骤s81:云服务器使用自己的私钥z,输入第一搜索令牌h(w

)y·
h(gz)s和第二搜索令牌gs,通过以下公式计算得到第三搜索令牌k;
33.k=(h(w

)y·
h(gz)s)/((gs)z)
34.步骤s82:云服务器运行搜索算法,输入第一关键字密文h(w)
x
(gz)r、第二关键字密
文(gy)r、第三搜索令牌k、数据发送方的公钥g
x
、数据接收方的公钥gy和云服务器的公钥gz,根据搜索算法具体进行以下判断:
35.若等式e((h(w

)y),g
x
)
·
e(((gy)r),gz)=e((h(w)
x
·
(gz)r),gy)成立,其中e表示双线性映射则第一关键字密文中包含的关键词w和第三搜索令牌k中包含的关键词w

相等,即w=w

,视为两者匹配;否则两者不匹配;
36.步骤s83:云服务器从整数群z
p*
中选择第四随机数r

,随后找到第一关键字密文和第二关键字密文对应的第一数据密文m
·
(gy)r′
和第二数据密文gr′
,并进行重加密构建第三数据密文m
·
(gy)r′
·
(gy)r″
和第四数据密文gr′
·gr


37.步骤s84:云服务器返回第三数据密文和第四数据密文给数据接收方。
38.进一步地,所述步骤s9具体包括:
39.数据接收方运行解密算法,输入数据接收方私钥y、第三数据密文m
·
(gy)r′
·
(gy)r″
和第四数据密文gr′
·gr

,通过计算以下公式得到明文数据p:
40.p=(m
·
(gy)r′
·
(gy)r″
)/(gr′
·gr

)y。
41.本发明中,数据发送方首先用数据接收方的公钥加密数据文件,并用数据发送方的私钥、数据接收方的公钥和云服务器的公钥加密该文件抽取出的关键字,同时发送到云服务器。数据接收方根据搜索需求生成关键字搜索令牌发送到云服务器。服务器收到搜索请求后,先检查原密文中是否包含搜索令牌中的关键字。若包含,则服务器将原密文重加密并将其做为搜索结果发送给数据接收方。数据接收方用自己的私钥解密收到的密文并得到搜索结果。
42.本发明的有益效果是:
43.本发明方法中的数据发送方在关键字密文中嵌入数据发送方私钥,使得关键字密文无法伪造,进而使得攻击者无法实施离线关键字猜测攻击。同时,云服务器通过将满足搜索请求的密文重加密,使得原密文无法识别,进而使得攻击者无法实施在线关键字猜测攻击。
44.本发明实现了关键字密文搜索,并有效解决了关键字猜测攻击(在线和离线)的问题,保护了数据隐私。
附图说明
45.图1是本发明中服务器、数据发送方、数据接收方之间的逻辑关系图;
46.图2是本发明方法处理的逻辑图。
具体实施方式
47.下面结合附图及具体实施例对本发明作进一步详细说明。
48.本发明的实施例及其实施过程具体如下:
49.步骤s1:可信第三方运行初始化算法,输入全局安全参数,输出系统公开参数;
50.根据给定的全局安全参数k选取系统公开参数params,params=(g,g
t
,p,g,e),其中g和g
t
为第一乘法循环群、第二乘法循环群,均为阶为素数p的乘法循环群,p表示素数,g表示乘法循环群g的生成元,e为双线性映射。
51.预先选择一个hash函数,hash函数能够实现:{0,1}
*-》g,{0,1}
*
表示是由0和1生成
的任意长度的字符串,即表示hash函数能够将由0和1生成的任意长度的字符串处理获得第一乘法循环群g中的一个元素。
52.步骤s2:数据发送方运行密钥生成算法,输入系统公开参数,输出数据发送方的私钥和公钥;
53.输入系统公开参数params,数据发送方随机选择x∈z
p*
,建立数据发送方的公私钥对(g
x
,x),其中,x表示数据发送方的私钥,z
p*
表示整数群,g
x
表示数据发送方的公钥。
54.步骤s3:数据接收方运行密钥生成算法,输入系统公开参数,输出数据接收方的私钥和公钥;
55.输入系统公开参数params,数据接收方随机选择y∈z
p*
,建立数据接收方的公私钥对(gy,y),其中,y表示数据接收方的私钥,z
p*
表示整数群,gy表示数据接收方的公钥。
56.步骤s4:云服务器运行密钥生成算法,输入系统公开参数,输出云服务器的私钥和公钥;
57.输入系统公开参数params,云服务器随机选择z∈z
p*
,建立云服务器的公私钥对(gz,z),其中,z表示云服务器的私钥,z
p*
表示整数群,gz表示云服务器的公钥。
58.步骤s5:数据发送方对上传的明文数据提取关键字,运行关键字加密算法加密提取出的关键字,获得关键字密文,并上传至云服务器;
59.步骤s51:数据发送方从明文数据f中抽取关键词w;
60.步骤s52:数据发送方运行关键词加密算法,输入参数包括数据发送方的私钥x、数据接收方的公钥gy、云服务器的公钥gz和抽取出的相关关键词w,数据发送方选择随机数r∈z
p*
,构建关键字密文(c1,c2):
61.c1=h(w)
x
·
(gz)r,c2=(gy)r62.步骤s53:数据发送方将关键字密文(c1,c2)上传至云服务器。
63.步骤s6:数据发送方运行数据加密算法,对上传的明文数据进行加密,并将数据密文上传至云服务器;
64.步骤s61:数据发送方运行数据加密算法,输入参数包括明文数据m、数据接收方公钥gy,数据发送方选择随机数r

∈z
p*
,构建数据密文(c3,c4):
65.c3=m
·
(gy)r′
,c4=gr′
66.步骤s62:数据发送方将数据密文(c3,c4)上传至云服务器。
67.步骤s7:数据接收方运行搜索令牌生成算法,构建查询关键字的搜索令牌,并将搜索令牌发送给云服务器;
68.步骤s71:数据接收方运行搜索令牌生成算法,输入参数包括数据接收方搜索的查询关键词w

、数据接收方的私钥y和云服务器公钥gz,数据接收方选择随机数s∈z
p*
,构建关键词的搜索令牌(t1,t2):
69.t1=h(w

)y·
h(gz)s,t2=gs70.步骤s72:数据接收方将关键词的搜索令牌(t1,t2)上传至云服务器。
71.步骤s8:云服务器运行搜索算法,通过对s5中的关键字密文和s7中的搜索令牌进行匹配,若两者匹配,云服务器将关键字密文对应的密文数据进行重加密,并重加密密文数据发送给数据接收方。
72.步骤s81:云服务器使用自己的私钥z,简化处理搜索令牌(t1,t2),具体是通过下列
式子计算得到化简后的关键词搜索令牌τ:
73.τ=(t1)/h(t2)z74.步骤s82:云服务器运行搜索算法,输入参数包括s5中的关键字密文(c1,c2)和化简后的关键词搜索令牌τ、数据发送方的公钥g
x
,数据接收方的公钥gy和云服务器的公钥gz,具体进行以下判断:
75.若等式e(τ,g
x
)
·
e(c2,gz)=e(c1,gy)成立,则c1中包含的关键词w和关键词搜索令牌τ中包含的关键词w

相等,即w=w

,两者匹配;否则两者不匹配;
76.步骤s83:云服务器找到关键字密文(c1,c2)对应的数据密文(c3,c4),云服务器选择随机数r

∈z
p*
,对数据密文(c3,c4)进行重加密构建数据密文(c5,c6):
77.c5=c3·gr

,c6=c4·gr

78.步骤s84:云服务器返回数据密文(c5,c6)给数据接收方。
79.步骤s9:数据接收方对云服务器返回的密文数据进行解密得到明文数据。
80.数据接收方运行解密算法,输入参数包括数据接收方私钥y和数据密文(c5,c6),通过计算下列公式得到明文数据p:p=c6/(c5)y。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1