本发明涉及云存储技术,尤其涉及云存储系统中的密文搜索。
背景技术:
随着互联网的发展,云存储与云计算凭借远程存取服务、低成本、数据的高可靠性、存储空间易于扩展等优点备受用户青睐,在日常生活中变得越来越重要,个人和企业也越来越多的将自己的数据存储在了云端。然而,由于云端的数据管理脱离了用户的监管,很多敏感信息容易被泄露,云存储中数据的安全性也越来越受到云服务供应商和用户的关注。为了防止自己的隐私数据泄露,数据拥有者通常会先将隐私数据加密,然后再存储在云端,但是这会带来另一个问题,那就是当用户需要检索一个密文文件时,由于云服务器没有用户的密钥,只能对用户密文的文件名进行检索,这种方法缺乏对密文的关键字进行保护,在一定程度上也泄露了用户数据的一些信息。因此,云存储中密文的可搜索性和安全性问题已经成为一个急需解决的问题。
对国内外现有的云存储系统进行调研分析可知,百度云使用明文存储,没有相关的加密模式,但支持用户使用第三方软件加密数据再上传到云端。百度云是使用明文进行存储,用户的明文数据在存储过程中容易受到攻击,因此,这种存储模式的安全性一般。而如果用户想保护自己的数据,则需要用户自己使用第三方软件进行加密然后再上传到云,这种加密模型的安全性是比较高的,但是云服务器检索用户的密文时却只能检索密文的文件名,并且用户密文的文件名也在一定程度上泄露了密文的相关信息。另外,如果用户想和别的用户共享密文时,必须告诉对方密文的解密密钥。这个过程中隐含着两个问题,第一个问题就是如果数据拥有者对不同的密文使用不同的密钥进行加密,那么数据拥有者需要记住大量的密钥,因此,这种方式很不方便,也不是用户期望的。而如果数据拥有者使用某一个密钥加密很多数据,则又可能会导致告诉别人某个密文的解密密钥之后,使用同一个密钥加密的数据可能会遭到泄漏。因此该方法还不是一个既能满足安全性又能满足用户功能需求的云存储加密方法。
亚马逊云存储服务(amazons3)使用https来加密传输数据,并在云端对数据进行加密存储,安全性比百度云要好一些,可以防止外部攻击者的攻击。但由于它使用的sse-s3、sse-kms和sse-c三种加密方法中,数据加密和解密的密钥总会被云服务器获取,因此,这样的加密方式只能防止外部攻击者的攻击,不能防止云内部的攻击。另外,在密文搜索方面,总是先解密再搜索,在效率上也有一定的影响,尤其是在大量的数据和大文件的情况下,解密需要花费一定的时间,所以这种方式在安全性和效率上还有一定的提升空间。
综上所述,百度云使用明文存储,安全性一般,如果要对数据进行加密再上传到云端,则只能支持对密文的文件名进行检索,而且这种方式也会泄漏密文的一些信息。亚马逊云存储服务虽然使用密文存储,支持对密文进行关键字检索,但加密和解密的密钥总会被云端获取,因此,仍然不能抵抗云内部的攻击。也就是说,这两种云存储方法均存在数据的安全性问题。
针对密文的可搜索性问题和安全性问题,song等人提出了第一个实用的对称式可搜索加密方法(symmetricsearchableencryption,sse),但该类方法却只能适用于单用户环境,不适合云存储环境。之后,boneh等人提出了第一个可搜索公钥加密方法(publickeyencryptionwithkeywordsearch,peks),该方法可以用于多用户环境中,因此可以用于云存储环境中。peks方法可以让用户快速的检索出自己想要的密文,增强了公钥加密的实用性,创立了一个新的研究方向。peks方法虽然解决了密文的可搜索性问题,但byun等人对peks方法进行了攻击,指出peks方法会遭受离线关键字猜测攻击(off-linekeywordguessingattack,kg攻击),关键字信息仍然会遭到泄漏。之后,rhee等人提出了指定服务器的可搜索公钥加密方案(searchablepublic-keyencryptionschemewithadesignatedtester,dpeks),该方案可以抵抗外部攻击者的kg攻击,但仍然不能抵抗服务器的kg攻击。尽管后来很多学者对dpeks进行了改进,但到目前为止,没有发现可以抵抗kg攻击的dpeks方法。
技术实现要素:
本发明提供一种云存储的密文搜索方法,包括:
接收并存储数据拥有者发送的关键字的密文;
接收数据使用者发送的检索关键字用的陷门;以及
对所述陷门和密文进行匹配,获得搜索结果;
其中,所述密文基于所述数据拥有者的私钥生成,所述陷门基于所述数据使用者的私钥生成。
对所述陷门和密文进行匹配的过程中需要利用云服务器私钥。
需要使用数据拥有者私钥、数据使用者公钥及云服务器公钥生成所述关键字的密文。
需要使用数据拥有者公钥、数据使用者私钥及云服务器公钥生成所述关键字的陷门。
所述数据拥有者的私钥和公钥、数据使用者的私钥和公钥、以及云服务器的私钥和公钥基于预先生成的公开的参数和分别于对应数据拥有者、数据使用者及云服务器的随机数生成。
利用以下公式生成数据拥有者的私钥sko和公钥pko、数据使用者的私钥sku和公钥pku、以及云服务器的私钥sks和公钥pks:
sks=α,pks=αp1;
sko=xo,pko=xop2;
sku=xu,pku=xup2;
其中α、xo、xu为随机数,p1和p2为生成元,p1,p2∈g1。
较佳的,利用以下公式生成关键字w的密文cw={c1,c2,c3}:
c1=rp1
c2=rp2
其中,r为随机数,p1和p2为生成元,p1,p2∈g1,pks为云服务器公钥,pku为数据使用者公钥,sko为数据拥有者私钥。
较佳的,利用以下公式生成检索关键字w用的陷门tw={t1,t2}:
t1=skuh(w)pko+r1p2,
t2=r1pks.
其中,r1为随机数,sku为数据使用者私钥,pko为数据拥有者公钥,pks为云服务器公钥,p2为生成元。
较佳的,利用如下公式对所述陷门tw={t1,t2}和密文cw={c1,c2,c3}进行匹配:
若等式成立,表示陷门中的关键字w与密文中的关键字w相同,匹配成功,否则,匹配失败。
本发明实施例的方法既满足云存储中密文可搜索的功能,又能够抵抗外部攻击者和服务器的kg攻击,从而可以解决云存储系统中密文的可搜索性问题和关键字的安全性问题。除此之外,该方法在同类方法中具有较强的实用性和高性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出本发明一实施例的云存储系统中的密文搜索方法的主要步骤;以及
图2示出本发明另一实施例的云存储系统中的密文搜索方法的详细步骤。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的组件或具有相同或类似功能的组件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
图1示出本发明一实施例的云存储系统中的密文搜索方法的主要步骤,该方法可以由云服务器执行,包括:
st1、接收并存储数据拥有者发送的关键字的密文;
st2、接收数据使用者发送的检索关键字用的陷门;以及
st3、对所述陷门和密文进行匹配,获得搜索结果;
其中,所述密文基于所述数据拥有者的私钥生成,所述陷门基于所述数据使用者的私钥生成。
需要使用数据拥有者私钥、数据使用者公钥及云服务器公钥生成所述关键字的密文。
需要使用数据拥有者公钥、数据使用者私钥及云服务器公钥生成所述关键字的陷门。
对所述陷门和密文进行匹配的过程中需要使用云服务器私钥。
所述数据拥有者的私钥和公钥、数据使用者的私钥和公钥、以及云服务器的私钥和公钥基于预先生成的公开的参数和分别于对应数据拥有者、数据使用者及云服务器的随机数生成。
图2示出本发明另一实施例的云存储系统中的密文搜索方法的详细步骤,包括:
s1、密钥生成中心(keygenerationcenter,简称kgc)生成公开的系统参数;可包括以下步骤s11~s13。
s11、输入一个k作为安全参数,生成素数q≥2k阶的群g1,g2。并选择一个双线性映射e:g1×g1→g2。
s12、随机选择两个生成元p1,p2∈g1。
s13、输出公开的参数param:{q,g1,g2,p1,p2,e,h},其中h是一个哈希函数
s2、云服务器生成服务器私钥sks和服务器公钥pks。较佳的,可通过以下步骤s21和s22生成sks和pks。
s21、云服务器选择一个数α作为服务器私钥sks=α;
s22、云服务器利用服务器私钥sks和生成元p1计算出服务器公钥pks=αp1。
s3、生成数据拥有者公钥pko、数据拥有者私钥sko、数据使用者公钥pku及数据使用者私钥sku。可通过以下步骤s31和s22生成pko、sko、pku及sku。
s31、数据拥有者和数据使用者分别选择随机数xo和随机数xu作为自己的私钥sko和sku,其中,随机数
sko=xo,sku=xu
s32、数据拥有者利用随机数xo和生成元p2计算出数据拥有者公钥pko,数据使用者利用随机数xu和生成元p2计算出数据使用者公钥pku。具体过程如下:
pko=xop2,pku=xup2
s4、数据拥有者对关键字w进行加密,生成关键字密文cw,发送到云服务器进行存储。具体过程可包括步骤s41~s43:
s41、选择随机数
s42、利用随机数r、生成元p1和p2、云服务器公钥pks、数据拥有者公钥pku生成关键字w对应的密文cw={c1,c2,c3}。较佳的,具体过程如下:
c1=rp1
c2=rp2
s43、发送密文cw到云服务器进行存储。
s5、数据使用者想要检索带有关键字w的密文时,生成检索用的陷门tw,发送到云服务器进行检索。较佳的,可包括步骤s51~s53:
s52、利用随机数r1、数据使用者私钥sku、数据拥有者公钥pko、服务器公钥pks和生成元p1计算检索用的陷门tw={t1,t2},具体如下:
t1=skuh(w)pko+r1p2,
t2=r1pks.
s53、发送陷门tw到云服务器进行检索。
s6、云服务器对数据使用者发送的陷门tw和已存储的关键字密文cw进行匹配,根据匹配结果进行后续处理。
云服务器接收到数据使用者发送的陷门tw之后,把陷门tw和已存储的数据拥有者的密文cw进行匹配,可采用匹配公式如下:
如果密文中的关键字w和陷门中的关键字w相同的话,等式成立,表示匹配成功,否则,匹配失败。
其中,上述匹配公式的计算过程如下:
本发明实施例既满足云存储中密文可搜索的功能,又能够抵抗外部攻击者和云服务器的kg攻击,解决了云存储系统中密文的可搜索性问题和关键字的安全性问题。除此之外,本发明的密文检索速度较快,实用性较强。公司或个人可以根据该发明,开发相关的系统,保护自己的数据安全。现有的云存储平台也可以根据该发明,增加相应的功能,从而实现对用户数据更大程度的保护。
在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。