本发明涉及一种云存储安全中基于通配符的可搜索加密方法
背景技术:
云存储为用户提供无处不在的、动态的、可扩展的和按需存储的服务。云存储在给用户带来更多便利的同时也给用户的数据带来了严重的安全威胁。为了保护公有云服务器中的外包数据的隐私性,数据加密是防止内部/外部攻击者访问敏感信息的有效方法。同时,为了便于数据的使用,我们有必要支持用户在密文上进行关键词查询(无需解密)。这种机制称为可搜索加密。
把电子健康记录(ehr)存储系统作为可搜索加密的应用示例。假设用户alice想把敏感的ehr数据存储在公共卫生云服务器中,她首先需要提取一组关键词集合来描述ehr,接着使用加密这些关键词来生成索引。接着将关键词加密索引和加密的ehr数据上传到云服务器。在数据检索阶段,用户bob(如:alice的医生或家属)生成陷门来进行关键词查询。云服务器使用陷门对加密的ehr数据进行搜索,最终返回匹配的文件给bob。在搜索过程中,与关键词和ehr有关的明文信息不能泄露给云服务器。
2004年,boneh等人提出公钥关键词可搜索加密(peks)的概念,来实现用户对加密数据进行关键词查询。之后,有人对不同应用场景中支持联结关键词和单关键词的peks进行了研究。为了实现多用户之间的查询权限共享,可搜索加密采用了不同的访问控制方法,例如代理重加密和基于属性的加密(abe)。有人提出模糊关键词可搜索加密方案来实现对拼写错误的校正。然而这些方案只能进行精确关键词搜索或基于编辑距离的相似性搜索。
为了实现灵活的搜索功能,有人提出通配符可搜索加密的概念来支持含有通配符的关键词安全搜索。在查询阶段,用户输入关键词,关键词中包含一个通配符(可能代表一个或多个字符)。例如alice的医生bob可能使用关键词“05/**/2016”来搜索2016年5月alice所有的ehr数据。他也可以使用关键词“ache”来搜索包含“headache”、“stomachache”或者“heartache”的ehr数据。然而,文献中大多数现有的通配符可搜索加密方案都是基于布隆过滤器(bf:bloomfilter)构建的。布隆过滤器的缺点是:假阳性概率(falsepositiveprobability)是不可忽略的。这些基于布隆过滤器的通配符可搜索加密方案将会以不可忽略的概率向用户返回错误结果。此外,这些方案都是基于对称密钥机制设计的,因此数据拥有者必须泄露其私钥才能授予其他用户搜索权限,并且该授权是不可撤销的。
jarecki等人研究了加密数据库的安全搜索,它支持任意的布尔查询。后来sepehri等人提出了数据库中基于安全多方计算的查询方法和具有安全等式查询功能的代理重加密方案。sun等人提出了数据库中支持布尔查询的多用户可搜索加密方案。除了面向数据库的可搜索加密方案,学者们也对非结构化加密数据的安全关键词查询进行了研究。
li等人提出了云计算中加密数据的模糊关键词搜索方案。他们利用编辑距离来衡量关键词的相似度,并设计了两种构造模糊关键词集的方法,并用符号树来加速搜索算法。2013年,li等人把方案推广到了基于abe的多用户场景。2014年,wang等人提出了多关键词模糊可搜索加密方案,方案构造基于布隆过滤器和局部敏感哈希函数。该方案可以校正较小的编辑距离错误,并支持多关键词搜索。随后,fu等人提出可以校正更多拼写错误的方案。
现有的模糊可搜索加密方案的局限性在于:只能校正较小的编辑距离误差,例如拼写错误。如果查询关键词与精确关键词之间的编辑距离较大,则现有方案无法校正相关的错误。2010年,sedghi等人在公钥密码架构中提出了带有通配符的可搜索加密方案,它的方案构造基于双线性对。隐藏向量加密(hve)是sedghi方案的构造核心,而hve源于基于身份的加密。sedghi的方案需要指定通配符的位置,每个通配符只能代表一个字符。在加密、生成陷门和测试算法中,sedghi的方案需要大量的幂指数运算;其测试算法还需要大量耗时的双线性对运算。
2011年,bosch等人在对称密码架构中引入了联结通配符可搜索加密方案,方案构造基于伪随机函数和布隆过滤器。与sedghi的方案相比,bosch的方案提高了效率。然而,它仅仅枚举了通配符关键词在词典中可以表示的常用关键词。然后,这些扩展的关键词都被插入到布隆过滤器中。由于bosch的方案无法从有限的词典定义中提取出世界上所有的关键词,所以该方案的实用性非常有限。
2012年,suga等人提出了基于布隆过滤器的通配符可搜索加密方案,其中每个关键词都配有单独的布隆过滤器。存储开销随着文档中提取的关键词数量的增加而增加。该方案的缺点是:一个通配符只能代表一个字符。例如,如果用户希望搜索所有以“acid”开头的关键词,他需要分别提交通配符关键词“acid**”、“acid***”和“acid********”才能够匹配关键词“acidic”、“acidity”和“acidification”。为了解决这个难题,hu等人提出了一种改进的方案,其中一个通配符可以代表任意数量的字符。hu的方案以suga的方案为基础,并使用不同的方法把关键词插入到布隆过滤器中。
基于布隆过滤器的可搜索加密方案的缺点是:假阳性概率是不可忽略的。布隆过滤器是一种数据结构,可用于检测一个指定元素是否存在于一个集合中。它由一个长度为m位的数组表示,数组中每个元素初始值设置为0。布隆过滤器需要r个独立的哈希函数(ht:{0,1}*→[1,m](1≤t≤r)),每个哈希函数把一个元素映射到m个位置中的其中一个,也就是把集合中s={s1,...sn}的每个元素映射到布隆过滤器bf中。为了验证一个元素a是否属于s,需要检验bf中所有位置ht(a)(1≤t≤r)的值是否被设为1。如果不是,元素a不属于s。否则,元素a可能属于s。因为哈希函数可能把一个或者多个元素映射到bf的同一位置上,因此布隆过滤器存在假阳性概率。假阳性概率fp=[1-(1-1/m)rn]r≈e-m/nln(p)ln(1-p),其中p=(1-1/m)rn≈e-rn/m,它随着n/m的增长而增长。
技术实现要素:
有鉴于此,本发明的目的在于提供一种云存储安全中基于通配符的可搜索加密方法支持至多两个通配符的关键词搜索,且通配符可以出现在关键词的任何位置。
为实现上述目的,本发明采用如下技术方案:
一种云存储安全中基于通配符的可搜索加密方法,其特征在于:包括上传过程和搜索过程;
所述上传过程包括以下步骤:
步骤a1:用户a设置待上传文档m的文档身份id∈zn,加密所述文档身份id为
步骤a2:提取关键词集合
步骤a3:使用k2c算法将所述关键词集合
步骤a4:选择随机数k∈zn作为文档加密密钥,将所述文档加密密钥进行加密得到
步骤a5:加密所述待上传文档m得到密文c=senc(m,k'),其中,
步骤a6:将加密索引
所述搜索过程包括以下步骤:
步骤b1:用户b输入查询关键词集合
步骤b2:将所述
步骤b3:所述云计算平台接收到查询陷门后,首先核实用户b是否有权访问数据,若有权限,则云计算平台使用公钥pkb验证
步骤b4:云计算平台以w中的
步骤b5:用户b收到匹配结果后,解密
步骤b6:云计算平台根据所述搜索结果u*返回对应的密文c;
步骤b7:用户b先恢复出文档加密密钥k,然后计算
本发明与现有技术相比具有以下有益效果:首先,本发明支持多关键词搜索,任何查询关键词可以包含零个、一个或者两个通配符,其中通配符可以出现在关键词的任何位置并且代表任何数量的符号;其次,本发明支持使用一个陷门来同时搜索多个数据拥有者的数据;第三,本发明提供灵活的用户授权和撤销来有效地管理搜索和解密权限;第四,本发明是基于同态加密而不是基于布隆过滤器构建的,因此完全消除了由布隆过滤器引起的错误概率;最后,返回的匹配结果对云服务器完全保密,实现了更好的隐私保护。
附图说明
图1是本发明一实施例的系统结构框图。
图2是本发明的云服务结构。
图3是本发明k2c算法的示例图。
图4是本发明scp协议的示例图。
图5是本发明fw协议的示例图。
图6是本发明mw协议的示例图。
图7是本发明bw协议的示例图。
图8是本发明fmw协议的示例图。
图9是本发明fbw协议的示例图。
图10是本发明mmw协议的示例图。
图11是本发明mbw协议的示例图。
图12是本发明八个协议的参数对比图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
如图1所示为本发明一实施例的系统结构框图,其中:
密钥生成中心(kgc)是完全可信的,负责管理和分发系统中生成的公钥/私钥。kgc包括注册单元、密钥生成单元、证书单元和存储单元。注册单元为系统用户提供注册服务。密钥生成单元为系统和用户生成公钥/密钥。证书单元负责提供证书生成和吊销服务。存储单元负责存储证书和撤销列表。
云计算平台(cp)存储用户的加密文档并负责执行数据检索操作。cp包括存储单元、计算单元和元数据单元。存储单元提供存储服务,其中包括存储加密文档和安全关键词索引。计算单元提供计算服务,其中包括安全搜索操作。元数据单元提供元数据服务,其中元数据包括数据拥有者的信息、授权证书、文档位置以及文档上传和访问日期。元数据服务器还为系统用户提供通知服务,这项服务专门用于监测数据拥有者账户是否进行了更改。这些信息存储在数据库中,目的在于为用户提供更好的服务。
计算服务提供商(csp)拥有丰富的计算资源,包括计算单元和元数据单元。csp的计算单元与cp中的计算单元相互作用来执行安全计算。元数据单元负责存储csp的授权证书,并通过查询授权证书来进行授权计算。假设cp和csp不共谋。
数据拥有者加密关键词和文档,并将其发送到cp进行存储。用户生成关键词陷门,cp利用陷门来搜索加密数据。
安全套接层(ssl)或者传输层安全(tls)协议用于保护cp和csp、数据拥有者和cp、用户和cp以及kgc和其他实体之间的所有通信。ssl/tls协议的主要目的在于提供两个通信实体之间的隐私保护和并保证数据完整性。
请结合图2,云计算为用户提供各种服务。最著名的服务包括基础架构即服务(iaas),平台即服务(paas)和软件即服务(soos)。信息服务、计算服务和存储服务属于paas。为了向云服务器提供安全保护,安全服务是云计算中的一项重要服务。安全搜索是云服务器中的安全服务之一,被称为安全搜索即服务(securesearchasaservice),它为信息服务、计算服务和存储服务提供了安全性。本发明属于云计算中安全搜索即服务的范畴。
该系统包括以下基础部件:具有门限解密功能的paillier密码系统、关键词表示和加密、安全大于或等于协议和加密关键词等价测试协议,具体如下:
具有门限解密功能的paillier密码系统(pctd:pailliercryptosystemwiththresholddecryption)实现了同态性加密,可以在云平台中提供外包数据的隐私性性。利用同态性质,我们无需对密文进行解密,就可以直接进行各种计算,从而就能实现安全的外包计算。此外,它的计算开销低于全同态加密系统所需的计算开销。令
密钥生成:κ是安全参数,p和q是两个大素数,
加密:对于输入的明文m∈zn,用户随机选择r∈[1,n/4],使用其公钥pki将明文m加密成密文
利用用户私钥ski解密:对于输入的密文
用主私钥sk进行解密:利用系统的主私钥sk=λ,通过
主私钥分裂:主私钥sk=λ可以随机分裂成两个部分sk1=λ1和sk2=λ2,使得λ1+λ2=0modλ,λ1+λ2=1modn2。
用sk1进行部分解密(pd1):对于输入的密文
用sk2进行部分解密(pd2):对于输入的密文
密文更新(cr):cr算法用于更新密文,将密文
pctd具有同态性:对于随机的r∈zn,
具有门限解密功能的paillier密码系统使用到了下述协议,这些协议都需要cp和csp交互运算执行。pka和pkb是用户a和b的公钥。pkσ是为用户a和b定义的联合公钥。
sad跨域安全加法协议:对于给定的
smd跨域安全乘法协议:对于给定的
slt跨域安全小于比较协议:对于给定的
关键词表示和加密:请参照图3,为了把一个关键词编码成集合zn中的一个元素,首先把关键词中的每个字母转换成其ascii码形式,接着把十六进制的ascii码转化成十进制。根据每个字母在关键词中的位置,每个元素乘以一定的权重,使用pctd算法对这些十进制数进行相加和加密。该算法称为k2c关键词转化密文算法。
sge安全大于或等于协议:给定两个密文
(1)cp计算
cp随机选取r,使其满足
如果s=1,计算
如果s=0,计算
然后cp计算
(2)csp解密
(3)cp接收到
ket加密关键词等价测试协议:
给定的两个加密关键词
如果u*=1,表示两个关键词相同。如果u*=0,表示两个关键词不相同。
本发明提供一种云存储安全中基于通配符的可搜索加密方法,包括上传过程和搜索过程;
所述上传过程包括以下步骤:
步骤a1:用户a设置待上传文档m的文档身份id∈zn,加密所述文档身份id为
步骤a2:提取关键词集合
步骤a3:使用k2c算法将所述关键词集合
步骤a4:选择随机数k∈zn作为文档加密密钥,将所述文档加密密钥进行加密得到
步骤a5:加密所述待上传文档m得到密文c=senc(m,k'),其中,
步骤a6:将加密索引
所述搜索过程包括以下步骤:
步骤b1:用户b输入查询关键词集合
步骤b2:将所述
步骤b3:所述云计算平台接收到查询陷门
步骤b4:根据qj中的参数,云计算平台以w中的
如果用户想要进行or查询,cp首先初始化
如果用户想要进行and查询,cp首先初始化
步骤b5:用户b收到匹配结果后,解密
步骤b6:云计算平台根据所述搜索结果u*返回对应的密文c;
步骤b7:用户b先恢复出文档加密密钥k,然后计算
于本实施例,所述关键词匹配协议包括ket,fw,mw,bw,fmw,fbw,mmw和mbw,其中:
fw,mw,bw属于单通配符搜索,单通配符搜索是指搜索的关键词中只含有一个通配符,并且该通配符可以表示任意数量的字符。由于单通配符可能出现在字符串的头部、中部或尾部,我们设计了三个协议来处理这些情况。cp和csp负责执行这些协议,并且它们都不知道匹配结果的明文信息。
假设数据拥有者a的文档包含关键词x,a使用公钥pka将其加密成
fmw,fbw,mmw,mbw属于双通配符搜索,双通配符搜索是指搜索的关键词中只含有两个通配符,并且每个通配符都可以表示任意数量的字符。由于通配符可能出现在字符串的头部、中部或尾部,我们设计了四个协议来处理不同的情况。cp和csp负责执行这些协议,并且它们都不知道匹配结果的明文信息。当通配符出现在关键词的头部或中部时,用户b用一个正整数来表示该通配符可以替代的最大字符数。令v1,v2分别表示两个通配符所能替代的最大字符数。当通配符出现在关键词的尾部时,可以代表任意数量的字符。
通配符搜索中重要的工具包括:安全多比特提取协议和安全密文划分协议,
mbe安全多比特提取协议:
给定密文[x]和正整数
(1)cp随机选取r∈zn,计算y=[x]·[r]和
(2)csp计算
(3)cp计算
(4)cp和csp计算
(5)然后,cp计算
mbe协议的工作原理解释说明如下。
(1)为了保护x的隐私,cp首先选择随机数r∈zn,然后通过计算y=[x]·[r]=[x+r]来隐藏x的明文信息。
(2)csp解密后得到y=x+rmodn。由于x,r∈zn且r是随机数,因此csp不能从y推导出x的信息。接着csp计算
(3)r1是r的最低
(4)如果
如果
(5)如果
如果
scp安全密文划分协议:
给定密文[x]和正整数
(1)cp和csp计算
(2)cp计算z=[x]·[x1]n-1和[x2]=zamodn,其中
scp协议的示例如图4所示。如果[x]是关键词“privacy”的密文且
八个关键词匹配协议的具体内容如下:
ket为加密关键词等价测试协议,给定的两个加密关键词
如果u*=1,表示两个关键词相同;如果u*=0,表示两个关键词不相同;
fw为安全头部通配符匹配协议,用户b首先生成一个“*+y1”形式的通配符型关键词,其中y1是字符串;用户b利用k2c算法将y1加密成
首先,初始化
mw为安全中部通配符匹配协议,用户b首先生成一个“y1+*+y2”形式的通配符型关键词,其中y1,y2是字符串,y1中包含η1个符号,用户b利用k2c算法把y1,y2加密成
首先,初始化
bw为安全尾部通配符匹配协议,用户b生成一个“y1+*”形式的通配符关键词,其中,y1是字符串并包含η1个符号;然后,用户b利用k2c算法将y1加密成
首先,
fmw为安全头部和中部通配符匹配协议,用户b生成一个“*+y1+*+y2”形式的通配符关键词,其中y1,y2是字符串,y1包含η1个符号,用户b利用k2c算法将y1,y2加密成
首先初始化
fbw为安全头部和尾部通配符匹配协议,用户b生成一个“*+y1+*”形式的通配符关键词,其中y1是字符串并且包含η1个符号;用户b利用k2c算法将y1加密成
首先初始化
mmw为安全中部和中部通配符匹配协议,用户b生成一个“y1+*+y2+*+y3”形式的通配符关键词,其中y1,y2,y3是字符串,并且y1,y2分别包含η1,η2个符号,用户b利用k2c算法将y1,y2加密成
首先,初始化
mbw为安全中部和尾部通配符匹配协议,用户b生成一个“y1+*+y2+*”形式的通配符关键词,其中y1,y2是字符串,y1,y2分别包含η1,η2个符号;b利用k2c算法将y1,y2加密成
首先初始化
本发明还涉及密钥生成算法和用户撤销和授权算法。
密钥生成算法:
senc/sdec是密码上安全的对称加密/解密算法对(对称密钥空间为
通过运行pctd的keygen算法,kgc生成系统公共参数pp=(g,n)、主私钥msk=λ和用户ai的公钥/私钥对
用户撤销和授权算法:
如果用户a想要把搜索和加密权限授予用户b,a会设置授权有效期vp来表示授权的开始和结束时间(例如vp=“20170101-20180101”)。a为b生成带有证书号cn的授权证书。为了保证cn的唯一性,cn号是由aida开头,从而表明该该证书是由用户a生成的。生成的授权证书cera,b为:
<cer=(cn,aidb,vp,pkσ),sig(cer,ska)>,
其中
如果a想要在vp时间段内撤销b的授权,需要生成撤销证书rvka,b:<rvk=(revoke,cn),sig(rvk,ska)>。接着,rvka,b被发送给kgc、cp、csp和b。
如果b想要同时对数据拥有者(a1,...,am)的文档进行查询,他必须向每一位数据拥有者(a1,...,am)申请授权证书
如果要在有效期vpσ内撤销
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。