轻量级的密文相似度测试方法与装置
文献发布时间:2024-04-18 20:00:50
技术领域
本发明涉及信息处理技术领域,尤其涉及一种轻量级的密文相似度测试方法与装置。
背景技术
随着计算机科学技术的快速发展,各种个人电脑以及智能终端的普及,使得人们更加容易的接触并使用互联网和各类信息技术。当本地设备的计算能力或存储空间无法满足用户需求时,云计算与云存储服务提供了一种解决方案,越来越多的企业机构及个人都倾向于将数据外包到云服务器,以减轻本地设备的计算压力或释放本地设备的存储空间。然而,用户在享受云服务器带来便捷的同时,也承担了个人隐私信息泄露的风险。由于云服务可能会遭受到网络攻击或者云服务器本身并非完全可信任,带来了用户数据隐私安全问题以及用户身份信息安全等问题。公钥密码学的发展为解决隐私泄露问题提供了一种新的解决思路。数据拥有者在将外包数据发送至云服务器前,需要将外包数据加密(保护外包数据的机密性)。而对数据的加密处理却降低了数据使用的灵活性,使得对加密数据的操作变得困难。加密后的数据,其隐私性得到了保障但丧失了可识别性(可用性)。例如:(1)、密文数据检索:在对需要的加密文件进行搜索时,需要将所有可能的文件下载到本地进行解密后再进行搜索,这就导致了大量的空间和时间浪费;(2)、密文数据去重:在跨用户场景的去重中,由于各个用户的加密密钥不同,因此底层相同的数据也会被加密成不同的密文。从而导致云服务提供商难以对相同数据执行去重操作。产生这些问题的根本原因是:不同用户所使用的加密密钥不同。
为了解决用户对密文实现可匹配搜索的问题,有学者提出了公钥可搜索加密方案。这种技术允许用户在不泄露明文的情况下,通过使用自己的私钥来生成查询陷门,以实现数据搜索的目的。用户不需要将密文解密,只需使用其私钥来操作查询陷门,从而安全地获取所需数据。这种方法保护了用户的隐私和数据安全,同时提供了便利的数据访问方式。公钥可搜索加密方案的提出后引起了研究人员的广泛关注,由此扩展出了多种有不同功能的可搜索加密方案,例如:相似可搜索加密等,该方案可以对与目标密文相似度较高的密文进行搜索,从而提高搜索的命中率与容错率。然而,公钥可搜索加密不支持在多用户环境下对不同公钥加密的数据进行匹配搜索,存在一定的局限性。为了解决多用户环境下对不同公钥加密的数据进行匹配搜索的问题,Yang等人首次提出多用户环境下公钥加密等值测试方案即密文等值测试,该方案可以在不对密文进行解密的前提下,通过利用双线性对的性质测试不同的公钥加密的两段密文是否是同一明文生成的。但是,该方案和由该方案扩展出来的传统PKEET方案都存在一定的局限性:只能判断生成这两个密文的底层明文是否相同(即只能判断相同或者不同),而不能判断这两个密文的底层明文间的相似度。使得PKEET方案在加密数据聚类(将相似度高的数据分类到同一个数据组中)等应用上存在一定的局限性。
公钥密文等值测试方案,可以在多用户的场景中在不对密文进行解密的前提下,通过利用双线性对的性质测试不同的公钥加密的两段密文是否是同一明文生成的。这解决了多用户场景下不同公钥加密数据无法进行匹配的问题。然而,传统的公钥密文等值测试方案只能判断生成这两个密文的底层明文是否相同,即只能判断相同或者不同,而不能判断这两个密文的底层明文间的相似度。这导致该方案在实际的应用中可能存在局限性。例如,当我们想通过密文间的相似度来将密文进行分组的时候,传统的公钥密文等值测试方案只能将测试结果完全相同的密文分到一组中,而不是将相似度高的密文分到一组,我们认为这种分组是没有太大的实际意义的。并且若出现相似密文多,但相同密文少的情况时,由于只能判断密文是否相同,因此分出的组别也会变得很多,这种情况并不利于对数据的分类管理。同时,若测试服务器被黑客攻破或测试服务器本身是诚实且好奇的,则他们都能通过陷门进行猜测攻击,从而猜测出明文消息。因为在传统的公钥密文等值测试方案中,由于测试服务器能够从密文中提取测试陷门进行等值测试,因此测试者能够获取到与明文有关的信息。
发明内容
本发明提供一种轻量级的密文相似度测试方法与装置,用以解决现有技术中在多用户环境下对不同公钥加密的数据无法进行相似度测试的缺陷。
本发明提供一种轻量级的密文相似度测试方法,包括:
获取用户1的加密密文CT1,用户2的加密密文CT2;
分别对所述加密密文CT1、加密密文CT2进行解密,对应得到针对用户1的布隆向量BV1和针对用户2的布隆向量BV2;
确定所述布隆向量BV1和布隆向量BV2的相似度,根据所述相似度确定所述用户1的明文与用户2的明文的相似度。
根据本发明提供的一种轻量级的密文相似度测试方法,所述用户1的加密密文CT
从用户1的明文M1中提取该明文的关键字w,得到关键字集合W={w1,w2,w3,w4,...,wn};
对所述关键字集合W={w1,w2,w3,w4,...,wn}利用布隆向量生成原理,生成针对用户1的布隆向量BV1;
选择随机数r1,对用户1的明文M1和布隆向量BV1分别进行加密,得到CT1={C11,C12,C13},其中C
其中,X为接收方的公钥,X=g
根据本发明提供的一种轻量级的密文相似度测试方法,所述所述用户1的布隆向量BV1采用以下解密方法获得:
利用测试服务器的私钥y对所述CT1中的的C
根据本发明提供的一种轻量级的密文相似度测试方法,所述所述确定所述布隆向量BV1和布隆向量BV2的相似度包括采用Jaccard相似度、余弦相似度或Dice相似度来确定所述布隆向量BV1和布隆向量BV2的相似度。
本发明还提供一种轻量级的密文相似度测试装置,包括:
获取单元,用于获取用户1的加密密文CT1,用户2的加密密文CT
解密单元,用于分别对所述加密密文CT
确定单元,用于确定所述布隆向量BV1和布隆向量BV2的相似度,根据所述相似度确定所述用户1的明文与用户2的明文的相似度。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述轻量级的密文相似度测试方法。
本发明提供的轻量级的密文相似度测试方法与装置,具有如下有益效果:
1、本发明满足在多用户的场景下,可以在不解密出明文(保护用户隐私)的同时对密文中所包含的明文进行相似度测试。指定的测试服务器通过解密出不同密文包中的BV向量,可以通过测试BV向量的Dice相似度来判断密文所包含的明文M的相似度。
2、本发明是轻量级,其计算效率相较于传统PKEET方案而言要更高。相较于大多数的PKEET方案需要进行对运算而言,本发明只需进行多次hash运算便能得到布隆向量用于相似度测试,所以本发明的计算效率更高,所需的算力更少,因此本发明是一个轻量级的方案。
3、通过调整布隆向量的生成参数来提高hash运算时的碰撞率,本发明可以通过损失少量的测试精确性从而提高抗测试服务器猜测攻击的能力。由于hash碰撞的存在,所以测试服务器无法准确的知道其已知的布隆向量中某一位置的0是没有关键字映射导致的还是由于多个关键字映射到该位置导致的,同理某一位置的1是一次映射导致的还是多次映射导致的,从而使得测试服务器不能准确的猜测出布隆向量所表示的关键字集合。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的轻量级的密文相似度测试方法流程图一;
图2为本发明提供的轻量级的密文相似度测试方法流程图二;
图3为布隆向量生成示例图;
图4为PKEST在加密数据分组上的应用示例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的轻量级的密文相似度测试方法流程图一,如图1所示,该方法包括如下步骤:
步骤101:获取用户1的加密密文CT1,用户2的加密密文CT2;
步骤102:分别对所述加密密文CT1、加密密文CT2进行解密,对应得到针对用户1的布隆向量BV1和针对用户2的布隆向量BV2;
步骤103:确定所述布隆向量BV1和布隆向量BV2的相似度,根据所述相似度确定所述用户1的明文与用户2的明文的相似度。
具体地,图2为本发明提供的轻量级的密文相似度测试方法流程图二,如图2所示,该方法包括如下步骤:
步骤1:获取用户1的明文M1、用户2的明文M2;
步骤2:对M1进行加密得到CT1,并将CT1上传到测试服务器,测试服务器接收CT1;对M2进行加密得到CT2并将CT2上传到测试服务器,测试服务器接收CT2;
步骤3:从CT1、CT2中提取BV1和BV2,并使用相似度测试算法测试BV1与BV2间的Dice相似度,该相似度即可代表M1与M2的相似度S。
下面在对本发明方案做详细介绍之前,首先对涉及的参数进行解释:
安全参数1
Z
G:表示p阶循环群。
g:循环群G的群元素。
密钥对:密钥对又被称为公私钥对即(pk,sk)。
M:想要传递的明文消息。
W:关键字集合,包含多个从消息M中提取的关键字w,有W={w
w:从明文消息M中提取的关键字。
r:Z
n:关键字的数量。
t:布隆向量的长度。
k:hash函数的个数。
hash函数(h):一种特殊的映射函数。在本方案中,将关键字w输入到hash函数后,hash函数会输出0到t-1之间的值(即h的阈值为[0,t-1])。
H:hash函数集合,其中包含k个相互独立的hash函数。有H={h
BV:布隆向量,这是一种由类似于布隆过滤器生成思路的方式产生的向量。图3为布隆向量生成示例图,如图3所示,首先设定布隆向量的参数n,t,k,H。将原始BV向量的每一位初始化为0,在进行H(W)后保存得到的所有值,将BV向量中这些值所对应位置的0改为1,若已经为1了的则将其改变为0。(例如有关键字w
CT:密文包,可以理解为整个完整的密文。在该方案中有CT={C
C
C
C
下面对本发明提供的方法做详细介绍:
密钥生成算法:用户将安全参数和自己选的随机数输入后,该算法输出用户的公私钥对,用户将公钥进行公开,自己保留私钥。
加密算法:用户将需要加密的消息M和接收方公钥pk、测试服务器公钥pk`以及用户选择的随机数r输入该算法,加密算法首先使用接收方公钥pk和随机数r对消息M进行加密得到C1、C2,再调用布隆向量生成算法生成BV,并使用随机数r和测试服务器公钥pk`对BV进行加密得到C3,最后加密算法输出密文包CT。
布隆向量生成算法:将可以等效替代明文消息M的关键字集W输入该算法后,布隆向量生成算法采用类似布隆过滤器产生的方式生成并输出布隆向量BV。
测试算法:测试服务器需要将待测试的两个密文包CT1和CT2输入该算法,测试算法首先使用测试服务器的私钥从两个密文包CT1和CT2中解密出BV1和BV2,再调用相似度测试算法测试两个布隆向量BV1和BV2间的相似度。
相似度测试算法:可以计算两个布隆向量BV1和BV2间的Dice相似度。首先统计出BV1向量中为1的位置并将这些位置的集合设为|A|,再统计出BV2向量中为1的位置并将这些位置的集合设为|B|,Dice相似度的计算方式为
解密算法:用户将需要解密的密文包CT和自己的私钥sk输入该算法,解密算法从CT中提取C1并配合私钥sk从C2中解密出明文消息M。
(一)密钥生成阶段:
接收方:接收方输入安全参数1
测试服务器:测试服务器输入安全参数1
(二)加密阶段
发送方:发送方在客户端输入明文M与公钥X、公钥Y并执行加密算法。加密算法首先从明文M中提取该明文的关键字w,得到关键字集合W={w
(三)测试阶段
测试服务器:当测试服务器收到两个需要进行相似度测试的密文CT
(四)解密阶段
接收方:接收方将自己的私钥sk=x与密文CT输入解密算法对CT进行解密,有C2/C1x=(Xr·M)/grx=(gxr·M)/grx=M。由此得到明文M完成解密。
测试服务器从密文包CT中提取出BV向量,并通过BV向量测试密文中所包含的明文M的相似度,将相似度高的密文包分为一组。
图4为PKEST在加密数据分组上的应用示例图,如图4所示,采用发明提供的方法,可以对相似度较大的明文分为一组,从而便于对加密数据的管理(例如在传统的可搜索加密中,需要对所有密文进行匹配测试后才能返回准确的搜索结果,但是我们通过有效的对数据进行分组后,便可以在特定的数据组中进行搜索,从而更加快速高效的返回搜索结果)。
本发明通过理论及实验证明布隆向量间的Dice相似度与明文消息间的Dice相似度误差在参数预设合理的情况下的是极小的甚至可以忽略不计。采用布隆向量的方法可以使得测试服务器在不知道明文消息只知道密文的情况下就能进行相似度测试,从而得到两个密文间的相似度。相较于传统的加密数据的相似性搜索而言,本发明适用于多用户的场景,可以对不同公钥加密的密文进行相似性测试;而相较于传统的公钥等值测试方案只能比较两个密文是否相同而言,本发明可以通过测试给出两个密文间的相似程度,从而更好的去对密文进行分组。同时,相较于大多数的等值测试方案需要对运算而言,本发明只需进行多次hash运算便能得到布隆向量,所以本发明的计算效率更高,所需的算力更少,因此本发明是一个轻量级的方案。并且,本发明可以通过调整布隆向量的生成参数来提高hash运算时的碰撞率,此时本发明可以通过损失少量的测试精确性从而提高抗测试服务器猜测攻击的能力。在本发明方案中,测试服务器拥有布隆向量,则测试服务器可能会通过穷举所有关键字的所有hash结果来猜测布隆向量所表示的关键字集合,但是由于hash碰撞的存在,所以测试服务器无法准确的知道其已知的布隆向量中某一位置的0是没有关键字映射导致的还是由于多个关键字映射到该位置导致的,同理某一位置的1是一次映射导致的还是多次映射导致的,从而使得测试服务器不能准确的猜测出布隆向量所表示的关键字集合。
下面对本发明提供的轻量级的密文相似度测试装置进行描述,下文描述的轻量级的密文相似度测试装置与上文描述的轻量级的密文相似度测试方法可相互对应参照。
一种轻量级的密文相似度测试装置,包括:
获取单元,用于获取用户1的加密密文CT1,用户2的加密密文CT
解密单元,用于分别对所述加密密文CT
确定单元,用于确定所述布隆向量BV1和布隆向量BV2的相似度,根据所述相似度确定所述用户1的明文与用户2的明文的相似度。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 交通工具到一切(V2X)用户设备(UE)间协调
- 用于用户设备(UE)间协调的车对万物(V2X)目的地标识共享