一种实用型可搜索加密安全性检测方法
技术领域
本发明涉及属于信息安全
技术领域
,特别是一种实用型可搜索加密安全性检测方法。背景技术
加密云存储系统允许个人或组织将敏感数据的密文外包给第三方云存储提供商。为了保持外包加密数据的可检索性,可搜索加密(SE)方案被提出。在SE方案中,第三方云存储提供商从检索过程得不到查询的数据。
大多数现有的SE方案以牺牲可接受的信息泄漏为代价来构建工业上可用的、实用的解决方案。例如,ShadowCrypt采用了一种名为高效可部署、高效可搜索加密(EDESE)的加密方法来完成对外包加密数据的安全检索。EDESE加密方法在实现高效率的同时也泄露了加密的数据集和查询令牌。最近的攻击表明,在假设攻击者拥有一定背景知识的情况下,这种泄漏可以(部分)恢复查询令牌的底层关键字。根据恢复出关键字,可以猜测出外包加密数据的内容,这打破了外包加密数据的机密性。可见,在采用一种可搜索加密方法之前,为确保该加密方法不会泄露外包加密数据的内容,应该对其进行系统的安全性检测。
针对上述情况,本发明提出了一种实用型可搜索加密安全性检测方法。本发明能检测出一种新的针对EDESE方案的泄漏滥用攻击(LEAP)。这种新的泄露滥用攻击可以在基于部分已知数据和完全泄露发生模式下,准确恢复出查询令牌的底层关键字和外包加密数据内容。通过大量的实验证明,LEAP与PW16-U攻击和PW16-P攻击相比更具有破坏性。在访问数据集10%的情况下,LEAP从4991个关键字中准确地恢复了4904个(查询令牌、关键字)映射,而PW16-P攻击的映射为1638个,PW16-U攻击的映射为38个。在只有0.1%的数据集泄漏的情况下,LEAP准确地从1144个关键字中恢复了132个(查询令牌、关键字)映射,相比之下,PW16-P攻击中有2个,PW16-U攻击中有5个。因此,LEAP揭示了在已知数据集的先验知识的情况下使用EDESE加密方法的新风险。一个实用型可搜索加密安全性检测方法应当能检测出LEAP攻击。
发明内容
有鉴于此,本发明的目的是提供一种实用型可搜索加密安全性检测方法,检测高效可部署、高效可搜索加密(EDESE)的加密方法的安全性,预防查询关键字及外部加密数据内容的泄露。
本发明采用以下方案实现:一种实用型可搜索加密安全性检测方法,包括以下步骤:
步骤S1:初始化步骤S2至步骤S11所需要的变量;
步骤S2:扩展m′×n′的文件-关键词矩阵A′;
步骤S3:寻找加密文件ed与文件d的映射(ed,d);
步骤S4:利用矩阵M和矩阵M′寻找更多的(ed,d)映射;
其中,M表示一个n×n的ed-occurrence矩阵,其中Mi,j表示加密文件edi与edj的查询令牌的交集;M′表示一个n′×n′的d-occurrence矩阵,其中M′i,j表示文件di与dj的关键字的交集;
步骤S5:更新计数器并设置集合Cnew与Rnew为空;其中,Cnew表示记录新发现的(ed,d)映射的集合;Rnew表示记录新发现的(q,w)映射的集合。
步骤S6:寻找查询令牌q与关键字w的映射(q,w);
步骤S7:利用步骤S6中的(q,w)映射,寻找更多的(ed,d)映射;
步骤S8:寻找更多的(ed,d)映射。
步骤S9:利用矩阵M和矩阵M′寻找更多的(ed,d)映射;
步骤S10:如果或执行步骤S5;否则,执行步骤S11;
步骤S11:如果恢复的(q,w)映射集合R和(ed,d)映射集合C不为空,输出0;否则,输出1。
进一步地,所述步骤S1的具体内容为:
初始化一个计数器ct=1,四个集合Cnew,Rnew,C,R为以及两个矩阵Bmap和A″map;
其中,矩阵Bmap表示查询令牌与加密文件之间的映射矩阵,A″map为关键字与文件之间的映射矩阵。
进一步地,所述步骤S2中扩展m′×n′的文件-关键词矩阵A′具体内容如下:
将m′×n′的矩阵A′扩展为m×n′的矩阵A″,其中m′<m,且对于i∈[m′+1,m]和j∈[n′],A″i,j=0;
矩阵A′为
矩阵A″为
最后,设置其中,wi,i∈[1,m]表示一个特定的关键字;dj,j∈[1,n]表示一个特定的文件。
进一步地,所述步骤S3中寻找加密文件ed与文件d的映射(ed,d)具体内容为:
对每个j∈[n],执行如下操作:
1)对矩阵B中的第j列初始化一个向量VBj;
2)计算cj=columnj-sum,并设置VBj[1]=cj;
其中,columnj表示矩阵T的第j列;columnj-sum表示矩阵T第j列的汉明距离;
同理,对每个j′∈[n′],执行如下操作:
1)对矩阵A″中第j′列columnj′初始化一个向量VAj′;
2)计算c′j′=columnj′-sum,并设置VAj′[1]=c′j′;
最后,如果对于{VBj}j∈[n]中唯一的VBj,存在VAj′使得VAj′=VBj(j′∈[n′]),则将(edj,dj′)加入到集合C中。
进一步地,步骤S4中所述利用矩阵M和矩阵M′寻找更多的(ed,d)映射具体为:
计算n×n的ed-occurrence矩阵M为计算n′×n′的矩阵M′为而后,运行Occurrence(C,M,M′,A″map,Bmap)算法得到一个(ed,d)映射的集合S,并将S添加到C中;具体为:将已知的(ed,d)映射集合C,矩阵M,M′,m×n′矩阵A″和矩阵B作为输入;首先,将初始化S={1},然后,设置C′=C;最后,判断集合S是否为空,如果集合S为空,输出集合S并终止算法;如果集合S不为空,设置并对每个未映射的dj′(j′∈[n′]),设置ED为未映射的edj的集合,其中j∈[n],c′j′=cj;对ED中每个edj,如果Mj,k≠M′j′,k′,将edj从ED中移除;如果ED中只有一个edj,将(edj,dj′)添加到集合S并设置C′=C′∪S;然后,输出集合S;如果,ED中并非只有一个edj,则直接输出集合S。
进一步地,所述步骤S5中更新计数器并初始化集合Cnew与Rnew具体包括:
设置ct=ct+1,
所述步骤S6中寻找查询令牌q与关键字w的映射(q,w)并分别加入到集合Rnew和R具体为:
假设已经发现的(ed,d)的映射的集合为其中从(Bmap,A″map)中得到C列匹配的子矩阵对(Bc,A″c),其中Bc为A″c为如果对于Bc中唯一不同的行rowi,能够在A″c中找到相同的行rowi′,则将(qi,wi′)分别加入到集合Rnew和R,其中,rowi表示矩阵T的第i列。
进一步地,所述步骤S7中利用步骤S6中的(q,w)映射,寻找更多的(ed,d)映射具体为:
假设已经发现的(q,w)的集合为其中从(B,A″)计算得到矩阵对(Br,A″r);其中Br为
A″r为如果对于Br中唯一不同的列columnj,能够在A″r中找到相同的列columnj′,则将(edj,dj′)分别加入到集合Cnew和C中。
进一步地,步骤S8中所述寻找更多的(ed,d)映射具体为:
设置B和A″中所有的匹配行为0;对B中所有未匹配的列columnj重新计算cj=columnj-sum,并设置VBj[ct]=cj;同理,对矩阵A″中所有未匹配的列columnj′重新计算c′j′=columnj′-sum,并设置VAj′[ct]=c′j′;如果对于中每个VBj均存在一个VAj′使得VBj=VAj′(j′∈S′up),则将则将(edj,dj′)分别加入到集合Cnew和C中,其中Sup,S′up分别为矩阵B和A″中未匹配列的索引的集合。
进一步地,所述步骤S9中利用矩阵M和矩阵M′寻找更多的(ed,d)映射具体为:
运行Occurrence(C,M,M′,A″map,Bmap)算法得到一个(ed,d)映射的集合S′,并将S′分别添加到集合Cnew和C中;具体地为:将已知的(ed,d)映射集合C,矩阵M,M′,m×n′矩阵A″和矩阵B作为输入;首先,将初始化S={1},然后,设置C′=C;最后,判断集合S是否为空;如果集合S为空,输出集合S并终止算法;如果集合S不为空,设置并对每个未映射的dj′(j′∈[n′]),设置ED为未映射的edj的集合,其中j∈[n],c′j′=cj;对ED中每个edj,如果Mj,k≠M′j′,k′,将edj从ED中移除;如果ED中只有一个edj,将(edj,dj′)添加到集合S并设置C′=C′∪S;然后,输出集合S;如果,ED中并非只有一个edj,则直接输出集合S。
进一步地,如果或执行步骤S5;否则执行步骤S11;所述步骤S11输出检测结果具体为:
如果通过执行上述所有步骤的恢复的(q,w)映射的集合R和(ed,d)映射集合C至少有一个不为空,则说明该可搜索加密方法不能抵御LEAP攻击,输出0。否则,输出1。
与现有技术相比,本发明具有以下有益效果:
本发明检测高效可部署、高效可搜索加密(EDESE)的加密方法的安全性,预防查询关键字及外部加密数据内容的泄露。
本发明确保通过检测的可搜索加密方法都能够有效抵御泄漏滥用攻击,有效的促进了可搜索加密方法在实际中的应用。
附图说明
图1为本发明实施例的方法流程图。
图2为本发明实施例的Occurrence算法示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
如图1所示,本实施例提供一种实用型可搜索加密安全性检测方法,包括以下步骤:
步骤S1:初始化步骤S2至步骤S11所需要的变量;
步骤S2:扩展m′×n′的文件-关键词矩阵A′;
步骤S3:寻找加密文件ed与文件d的映射(ed,d);
步骤S4:利用矩阵M和矩阵M′寻找更多的(ed,d)映射;
其中,M表示一个n×n的ed-occurrence矩阵,其中Mi,j表示加密文件edi与edj的查询令牌的交集;M′表示一个n′×n′的d-occurrence矩阵,其中M′i,j表示文件di与dj的关键字的交集;
步骤S5:更新计数器并设置集合Cnew与Rnew为空;其中,Cnew表示记录新发现的(ed,d)映射的集合;Rnew表示记录新发现的(q,w)映射的集合。
步骤S6:寻找查询令牌q与关键字w的映射(q,w);
步骤S7:利用步骤S6中的(q,w)映射,寻找更多的(ed,d)映射;
步骤S8:寻找更多的(ed,d)映射。
步骤S9:利用矩阵M和矩阵M′寻找更多的(ed,d)映射;
步骤S10:如果或执行步骤S5;否则,执行步骤S11;
步骤S11:如果恢复的(q,w)映射集合R和(ed,d)映射集合C不为空,输出0;否则,输出1。
在本实施例中,所述步骤S1的具体内容为:
初始化一个计数器ct=1,四个集合Cnew,Rnew,C,R为以及两个矩阵Bmap和A″map;其中,矩阵Bmap表示查询令牌与加密文件之间的映射矩阵,A″map为关键字与文件之间的映射矩阵。
在本实施例中,所述步骤S2中扩展m′×n′的文件-关键词矩阵A′具体内容如下:
将m′×n′的矩阵A′扩展为m×n′的矩阵A″,其中m′<m,且对于i∈[m′+1,m]和j∈[n′],A″i,j=0;
矩阵A′为
矩阵A″为
最后,设置其中,wi,i∈[1,m]表示一个特定的关键字;dj,j∈[1,n]表示一个特定的文件。
在本实施例中,所述步骤S3中寻找加密文件ed与文件d的映射(ed,d)具体内容为:
对每个j∈[n],执行如下操作:
3)对矩阵B中的第j列初始化一个向量VBj;
4)计算cj=columnj-sum,并设置VBj[1]=cj;
其中,columnj表示矩阵T的第j列;columnj-sum表示矩阵T第j列的汉明距离;
同理,对每个j′∈[n′],执行如下操作:
3)对矩阵A″中第j′列columnj′初始化一个向量VAj′;
4)计算c′j′=columnj′-sum,并设置VAj′[1]=c′j′;
最后,如果对于{VBj}j∈[n]中唯一的VBj,存在VAj′使得VAj′=VBj(j′∈[n′]),则将(edj,dj′)加入到集合C中。
在本实施例中,步骤S4中所述利用矩阵M和矩阵M′寻找更多的(ed,d)映射具体为:
计算n×n的ed-occurrence矩阵M为
计算n′×n′的矩阵M′为而后,运行如图2所示的Occurrence(C,M,M′,A″map,Bmap)算法得到一个(ed,d)映射的集合S,并将S添加到C中;
具体为:将已知的(ed,d)映射集合C,矩阵M,M′,m×n′矩阵A″和矩阵B作为输入;首先,将初始化S={1},然后,设置C′=C;最后,判断集合S是否为空,如果集合S为空,输出集合S并终止算法;如果集合S不为空,设置并对每个未映射的dj′(j′∈[n′]),设置ED为未映射的edj的集合,其中j∈[n],c′j′=cj;对ED中每个edj,如果Mj,k≠M′j′,k′,将edj从ED中移除;如果ED中只有一个edj,将(edj,dj′)添加到集合S并设置C′=C′∪S;然后,输出集合S;如果,ED中并非只有一个edj,则直接输出集合S。
在本实施例中,所述步骤S5中更新计数器并初始化集合Cnew与Rnew具体包括:
设置ct=ct+1,
所述步骤S6中寻找查询令牌q与关键字w的映射(q,w)并分别加入到集合Rnew和R具体为:
假设已经发现的(ed,d)的映射的集合为其中从(Bmap,A″map)中得到C列匹配的子矩阵对(Bc,A″c),其中Bc为A″c为如果对于Bc中唯一不同的行rowi,能够在A″c中找到相同的行rowi′,则将(qi,wi′)分别加入到集合Rnew和R,其中,rowi表示矩阵T的第i列。
在本实施例中,所述步骤S7中利用步骤S6中的(q,w)映射,寻找更多的(ed,d)映射具体为:
假设已经发现的(q,w)的集合为其中从(B,A″)计算得到矩阵对(Br,A″r);其中Br为
A″r为如果对于Br中唯一不同的列columnj,能够在A″r中找到相同的列columnj′,则将(edj,dj′)分别加入到集合Cnew和C中。
在本实施例中,步骤S8中所述寻找更多的(ed,d)映射具体为:
设置B和A″中所有的匹配行为0;对B中所有未匹配的列columnj重新计算cj=columnj-sum,并设置VBj[ct]=cj;同理,对矩阵A″中所有未匹配的列columnj′重新计算c′j′=columnj′-sum,并设置VAj′[ct]=c′j′;如果对于中每个VBj均存在一个VAj′使得VBj=VAj′(j′∈S′up),则将则将(edj,dj′)分别加入到集合Cnew和C中,其中Sup,S′up分别为矩阵B和A″中未匹配列的索引的集合。
在本实施例中,所述步骤S9中利用矩阵M和矩阵M′寻找更多的(ed,d)映射具体为:
运行如图2所示的Occurrence(C,M,M′,A″map,Bmap)算法得到一个(ed,d)映射的集合S′,并将S′分别添加到集合Cnew和C中;具体地为:将已知的(ed,d)映射集合C,矩阵M,M′,m×n′矩阵A″和矩阵B作为输入;首先,将初始化S={1},然后,设置C′=C;最后,判断集合S是否为空;如果集合S为空,输出集合S并终止算法;如果集合S不为空,设置并对每个未映射的dj′(j′∈[n′]),设置ED为未映射的edj的集合,其中j∈[n],c′j′=cj;对ED中每个edj,如果Mj,k≠M′j′,k′,将edj从ED中移除;如果ED中只有一个edj,将(edj,dj′)添加到集合S并设置C′=C′∪S;然后,输出集合S;如果,ED中并非只有一个edj,则直接输出集合S。
在本实施例中,如果或执行步骤S5;否则执行步骤S11;所述步骤S11输出检测结果具体为:
如果通过执行上述所有步骤的恢复的(q,w)映射的集合R和(ed,d)映射集合C至少有一个不为空,则说明该可搜索加密方法不能抵御LEAP攻击,输出0。否则,输出1。
较佳的,在本实施例中,符号及定义如下:
d:一个文件。
w:一个关键字。
ed:一个加密后的文件。
di:一个特定的文件。
wi:一个特定的关键字。
edi:一个特定的加密后的文件。
qi:一个特定的查询令牌。
T:一个m×n的矩阵。
columnj:矩阵T的第j列。
rowi:矩阵T的第i列。
columnj-sum:矩阵T第j列的汉明距离。
rowi-sum:矩阵T第i列的汉明距离。
F={d1,...,dn}:文件集合。
W={w1,...,wn}:关键字集合。
F′={d1′,...,dn′}:暴露给攻击者的部分文件内容,n′<n。
W′={w1′,...,wm′}:攻击者从F′中提取的部分关键字内容,m′<m。
A′:一个m′×n′的文件-关键词矩阵。
M:一个n×n的ed-occurrence矩阵,其中Mi,j表示加密文件edi与edj的查询令牌的交集。
M′:一个n′×n′的d-occurrence矩阵,其中M′i,j表示文件di与dj的关键字的交集。
Cnew:记录新发现的(ed,d)映射的集合。
Rnew:记录新发现的(q,w)映射的集合。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。