CN115098649B - 基于双密钥不经意伪随机函数的关键词搜索方法和系统 - Google Patents
基于双密钥不经意伪随机函数的关键词搜索方法和系统 Download PDFInfo
- Publication number
- CN115098649B CN115098649B CN202211022951.XA CN202211022951A CN115098649B CN 115098649 B CN115098649 B CN 115098649B CN 202211022951 A CN202211022951 A CN 202211022951A CN 115098649 B CN115098649 B CN 115098649B
- Authority
- CN
- China
- Prior art keywords
- key
- ciphertext
- matrix
- keyword
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供基于双密钥不经意伪随机函数的关键词搜索方法和系统,该方法包括:持有方生成比特串B;查询方生成第一密钥k1、第二密钥k2和第一密钥矩阵R,根据k1、k2和第一密钥矩阵R对第一关键词集合加密,得到密文矩阵A;持有方根据比特串B、第一密钥矩阵R和密文矩阵A,得到第二密钥矩阵C;查询方将k1和k2发送给持有方;持有方根据k1、数据库中的第二关键词集合和第二密钥矩阵C获得键密文向量Mx,并且根据k2、第二关键词集合和第二密钥矩阵C获得值密文向量Mv;持有方将键密文向量和值密文向量发送给查询方;查询方根据第一关键词集合、k1、k2、R、Mx和Mv,获得多个查询目标值y。其可实现计算轻量化。
Description
技术领域
本发明涉及隐私计算技术领域,特别涉及基于双密钥不经意伪随机函数的关键词搜索方法和系统。
背景技术
隐私计算是解决数据流通与隐私保护之间矛盾的主要手段,其允许多方在隐藏各自敏感信息的前提下执行协同计算,实现“数据可用不可见”。相比与传统的数据使用方式,隐私计算能够在数据应用过程中提供额外的数据保护从而降低数据泄漏的风险。传统的数据安全手段,如隐私脱敏、匿名化技术等,是以牺牲部分数据信息维度为代价的数据保护,属于有损的数据利用方式,而隐私计算不会造成数据效用的损失,能够在保证安全的前提下实现数据价值的最大化利用。
隐私保护的关键词搜索算法,也被称为不经意关键词搜索(Oblivious KeywordSearch, OKS) 算法,是面向关键词搜索这一特定任务的在满足隐私保护要求下实现信息检索的重要技术,是隐私计算的基础任务之一。同时该任务作为隐私保护的协同计算的关键步骤,为数据处理全流程的隐私保护提供了重要保障。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有方案无法减轻数据持有方的计算压力,无法实现计算轻量化。
发明内容
有鉴于此,本发明实施例的目的在于提供基于双密钥不经意伪随机函数的关键词搜索方法和系统,以解决上述技术问题。
为达上述目的,第一方面,本发明实施例提供了基于双密钥不经意伪随机函数的关键词搜索方法,其包括:
数据持有方预先随机生成比特串,以作为后续不经意传输中的选择向量;
数据查询方随机生成第一密钥、第二密钥和第一密钥矩阵,根据所述第一密钥、所述第二密钥和所述第一密钥矩阵对待查询的第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵;
所述数据持有方与所述数据查询方执行不经意传输协议,所述数据持有方根据所述比特串、所述第一密钥矩阵和所述密文矩阵,得到第二密钥矩阵;
所述数据查询方将所述第一密钥和所述第二密钥发送给所述数据持有方;
所述数据持有方根据所述第一密钥、数据持有方的数据库中的第二关键词集合和所述第二密钥矩阵获得键密文向量,并且根据所述第二密钥、所述第二关键词集合和所述第二密钥矩阵获得值密文向量;
所述数据持有方将所述键密文向量和所述值密文向量发送给所述数据查询方;
所述数据查询方根据所述第一关键词集合、所述第一密钥、所述第二密钥、所述第一密钥矩阵、所述键密文向量和所述值密文向量,获得对应于所述第一关键词集合的多个查询目标值。
第二方面,提供基于双密钥不经意伪随机函数的关键词搜索系统,其包括数据持有方和数据查询方;
所述数据持有方包括:
预处理模块,用于预先随机生成比特串,以作为后续不经意传输中的选择向量;
第一不经意传输模块,用于与所述数据查询方执行不经意传输协议,根据所述比特串、第一密钥矩阵和密文矩阵,从所述数据查询方处选择得到第二密钥矩阵;
第一接收模块,用于接收由所述数据查询方发送的第一密钥和第二密钥;
键值密文向量生成模块,用于根据所述第一密钥、数据库中的第二关键词集合和所述第二密钥矩阵获得键密文向量,并且根据所述第二密钥、第二关键词集合和所述第二密钥矩阵获得值密文向量;
第一发送模块,用于将所述键密文向量和所述值密文向量发送给所述数据查询方;
所述数据查询方包括:
密文矩阵生成模块,用于随机生成所述第一密钥、所述第二密钥和第一密钥矩阵,根据所述第一密钥、所述第二密钥和所述第一密钥矩阵对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵;
第二不经意传输模块,用于与所述数据持有方执行不经意传输协议,将所述第一密钥矩阵和所述密文矩阵作为不经意传输的输入;
第二发送模块,用于将所述第一密钥和所述第二密钥发送给所述数据持有方;
第二接收模块,用于接收所述数据持有方发送的所述键密文向量和所述值密文向量;
解密处理模块,用于根据所述第一关键词集合、所述第一密钥、所述第二密钥、所述第一密钥矩阵、所述键密文向量和所述值密文向量,获得对应于所述第一关键词集合的多个查询目标值。
第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的基于双密钥不经意伪随机函数的关键词搜索方法。
第四方面,提供一种计算机设备,其包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现:
随机生成第一密钥、第二密钥和第一密钥矩阵,根据所述第一密钥、所述第二密钥和所述第一密钥矩阵完成对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵;
与数据持有方执行不经意传输协议,将所述第一密钥矩阵和所述密文矩阵作为不经意传输的输入,触发所述数据持有方将预先随机生成的比特串作为不经意传输的选择向量,从而使得所述数据持有方根据所述比特串、所述第一密钥矩阵和所述密文矩阵得到第二密钥矩阵;
将所述第一密钥和所述第二密钥发送给所述数据持有方,触发所述数据持有方根据所述第一密钥、数据库中的第二关键词集合和所述第二密钥矩阵获得键密文向量,并且根据所述第二密钥、第二关键词集合和所述第二密钥矩阵获得值密文向量;
接收所述数据持有方发送的所述键密文向量和所述值密文向量;
根据所述第一关键词集合、所述第一密钥、所述第二密钥、所述第一密钥矩阵、所述键密文向量和所述值密文向量,获得对应于所述第一关键词集合的多个查询目标值。
上述技术方案具有如下有益效果:
本发明提出了一种基于双密钥不经意伪随机函数的不经意关键词搜索算法方案,有利于减轻了数据持有方的计算压力,实现计算轻量化。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的基于双密钥不经意伪随机函数的不经意关键词检索算法的整体交互流程图;
图2是本发明实施例的数据持有方与数据查询方执行不经意传输协议的示意图;
图3是本发明实施例的基于双密钥不经意伪随机函数的关键词搜索系统的功能框图;
图4是本发明实施例的一种计算机可读存储介质的功能框图;
图5是本发明实施例的一种计算机设备的功能框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在不经意关键词搜索算法的研究中,Ogata与Kurosawa在2002年最早正式提出了不经意关键词搜索任务的定义,并提出了一种基于公钥加密实现的不经意关键词搜索协议,但是该协议基于理想化的随机预言安全假设,若应用于实际则存在明显的安全缺陷。
在标准安全假设的前提下,当前在不经意关键词搜索算法研究中的技术路线主要包含以下三种:
第一种是基于不经意多项式评估(Oblivious Polynomial Evaluation,OPE)的技术路线,该路线通常会引入庞大的计算开销。2005年,Freedman等人在标准安全假设的基础上,提出了第一种基于不经意多项式评估技术的不经意关键词搜索协议方案。在Freedman等人基于不经意多项式评估技术的方案基础上,Chen等人于2018年提出该部分计算开销能够通过单指令多数据流技术(Single Instruction Multiple Data,SIMD)、分箱等手段进行降低,但该技术路线的计算开销总体仍在一个较高的水平,该路线的优点则是持有很低的通信开销,适用于通信资源较贫乏的场景。
第二种是基于键值对存储结构 (Key-Value Store,KVS) 的技术路线,该路线以通信开销和存储空间为代价,首先将所有键值对数据插入到键值对存储结构中,将关键词映射为索引后再进行关键词搜索的步骤,因而节省了后续计算过程中一定的计算开销,该路线在计算开销与通信开销上取得了一定的平衡,但索引映射这一步骤本身也带来了不小的计算开销。其中作为代表的是Ali等人在 2021 提出了一种基于键值对存储结构的不经意关键词搜索协议方案,方案将关键词映射为索引后通过对称私有信息检索技术完成查询过程。
第三种是基于不经意伪随机函数 (Oblivious Pseudo Random Function,OPRF)的技术路线,相比于前两种技术路线,该路线有着最轻量的计算开销,代价则是较高的通信开销。Freedman等人在2005年的文献中同时提出了基于不经意伪随机函数技术的不经意关键词搜索协议方案,该方案以较低的计算开销为优势,但通信开销较大。同时其存在一定缺陷,方案中未能有效解决关键字匹配冲突的问题。得益于不经意伪随机函数这一基础技术的不断发展,该路线的计算开销与通信开销均能实现一定程度的降低。
在现有的不经意关键词搜索算法方案中,服务方大多承受巨大的计算压力,如Freedman等人、Chen等人基于不经意多项式评估的方案,会在服务方一侧产生大量的计算开销。在低计算资源的应用场景下,服务方能够承受的计算开销有限,因此上述方案在该应用场景下不适用。Freedman等人基于不经意伪随机函数的方案相对适用于该场景,但是其方案本身未能有效解决关键字匹配冲突的问题,存在一定缺陷。
针对低计算资源的场景以及提升整体查询效率的设计目标,本发明实施例基于不经意伪随机函数的技术路线,设计一种计算复杂度较低的轻量级不经意关键词搜索算法,在不引入过多通信开销的前提下,通过减少服务方的计算压力,以实现整体查询效率的提升。
基于计算轻量的设计目标,本发明方案整体选择基于不经意伪随机函数的技术路线。首先,方案在预处理阶段结合布谷鸟哈希、分箱等手段实现一定程度的优化。在方案中不经意伪随机函数的选择上,主要参考Chase等人在2020年提出的轻量级不经意伪随机函数协议。基于该不经意伪随机函数协议的特性,方案中通信部分的数据形式以矩阵的方式存在,因此,本发明实施例将该基于双密钥不经意伪随机函数的关键词搜索算法简记为M-OPRF OKS算法,是一种基于双密钥不经意伪随机函数的不经意关键词检索算法。
图1是本发明实施例的基于双密钥不经意伪随机函数的不经意关键词检索算法的整体交互流程图;图2是本发明实施例的数据持有方与数据查询方执行不经意传输协议的示意图。如图1和图2所示,该算法整体可划分为数据持有方预处理阶段、数据查询方预处理阶段、不经意伪随机函数评估阶段、数据持有方加密阶段、数据查询方解密阶段共五个阶段,总共包含如下7个主要的步骤:
S1:数据持有方预先随机生成比特串B,以作为后续不经意传输中的选择向量。
在进一步的实施例中,该数据库可以是键值对数据库,持有数据库的数据持有方可以对数据库进行预处理。例如通过布谷鸟哈希对数据库的记录实现分箱后,以箱为单位进行后续操作。
S2:数据查询方随机生成第一密钥k1、第二密钥k2和第一密钥矩阵R,根据第一密钥k1、述第二密钥k2和第一密钥矩阵R对待查询的第一关键词集合加密,得到第一关键词集合对应的密文矩阵A。
具体地,数据查询方持有第一关键词集合,其包括第一数量个关键词x,数据持有方持有第二关键词集合,其包括第二数量个关键词x’,第二数量大于第一数量,第一关键词集合与第二关键词集合不相同,或者两者具有交集。
S3:数据持有方与数据查询方执行不经意传输协议,数据持有方根据选择向量(比特串B)、第一密钥矩阵R和密文矩阵A,从数据查询方处选择得到第二密钥矩阵C。
具体地,数据查询方将第一密钥矩阵R和密文矩阵A作为不经意传输的输入,数据持有方将比特串 B作为不经意传输的选择向量或者选择依据,若B[j]为1时,从密文矩阵A中取出第j列,反之若B[j]为0时则从第一密钥矩阵R中取出第j列,不经意传输协议执行完成后,数据持有方得到结果为第二密钥矩阵C,满足如下公式:C=fR, A(B) ,数据查询方未得到额外信息。
S4:数据查询方将第一密钥k1和第二密钥k2发送给数据持有方。
S5:数据持有方根据第一密钥k1、数据持有方的数据库中的第二关键词集合和第二密钥矩阵C获得键密文向量Mx,并且根据第二密钥k2、第二关键词集合和第二密钥矩阵C获得值密文向量Mv。
具体地,数据持有方使用第一密钥k1对第二关键词集合中的多个关键词进行加密,得到第三关键词密文,以第三关键词密文作为索引,在第二密钥矩阵C中取值,将取出的值通过拼接处理方式组合得到多个键密文,将多个键密文组合得到键密文向量Mx;并且使用第一密钥k2对第二关键词集合中的多个关键词进行加密,得到第四关键词密文,以第四关键词密文作为索引,在第二密钥矩阵C中取值,将取出的值通过拼接处理方式组合得到多个值密文,将多个值密文组合得到值密文向量Mv。
S6:数据持有方将键密文向量Mx和值密文向量Mv发送给数据查询方。
S7:数据查询方根据第一关键词集合、第一密钥k1、第二密钥k2、第一密钥矩阵R、键密文向量Mx和值密文向量Mv,获得对应于第一关键词集合的多个查询目标值y。
具体地,数据查询方使用第一密钥k1对第一关键词集合中的多个关键词进行加密,得到第一关键词密文,以第一关键词密文作为索引在第一密钥矩阵R中取值,将取出的值组合得到第五关键词密文r1x;
数据查询方使用第二密钥k2对第一关键词集合中的多个关键词进行加密,得到第二关键词密文,以第二关键词密文作为索引在第一密钥矩阵R中取值,将取出的值组合得到第六关键词密文r2x;
在键密文向量Mx中寻找与第五关键词密文r1x相同的子密文,确定第五关键词密文r1x在键密文向量Mx中的目标位置,并从值密文向量Mv中取出对应于该目标位置的值密文mv,通过第六关键词密文r2x解密得到多个查询目标值y。
在本实施例中,数据持有方和数据查询方分别持有的多个关键词并不是完全一样的,并且双方都不知道对方拥有哪些关键词。因此,各方针对自己持有的多个关键词在本地生成相应的关键词密文。由于第一密钥k1和第二密钥k2对双方均是公开的,所以双方分别根据自己持有的第一关键词集合或第二关键词集合中的多个关键词直接进行本地加密即可。具体地,在本实施例中,数据是以(x,y)的形式存储,x是关键词,y是值。例如,假设要查询id为1的人的年龄,此时,x为id,而y为年龄值。
以下对本发明实施例的算法的应用场景进行行说明:一个数据持有方拥有一个数据库,该数据库中具有多个关键词以及与多个关键词相对应的多个值,例如一个班级所有学生的学号以及期末成绩,学号是关键词,期末成绩是关键词对应的值。一个数据查询方想要查询部分关键词对应的值,例如,数据查询方想查询学号为10,20,30这三个学生的期末成绩。因此,各方均拥有多个关键词,但是双方拥有的关键词并不是完全一样的,并且均不知道对方拥有哪些关键词。在上面学号的例子中,数据查询方不知道数据持有方的数据库中有哪些学号,数据查询方只知道自己想要查询10,20,30这三个学生的成绩,但有可能其想要查询的目标并不在该数据库中。
数据持有方预处理阶段:
数据持有方首先对数据库进行预处理,综合运用布谷鸟哈希技术,通过布谷鸟哈希将数据库中的键值对映射到不同的箱中。完成映射后,每个箱中的键值对数量大致相等。通过分箱,可以大大减少每次运算的数据规模,合适的分箱数量能够同时降低计算开销与通信开销。而布谷鸟哈希技术的使用,能够加快后续步骤中数据的查询处理过程,同时哈希映射加强了数据的安全性。
数据持有方预先随机生成长度为w的比特串B,用于在执行不经意传输时作为选择向量。在整体的算法流程中,该比特串B的随机性保证了在后续步骤中,数据持有方所持有的非查询数据密文无法由数据查询方解密。
数据查询方预处理阶段,步骤S2具体可以包括如下步骤:
步骤S22:数据查询方通过使用第一密钥k1、第二密钥k2和第一密钥矩阵R实现对第一关键词集合中的多个关键词x的加密,得到第一关键词集合对应的密文矩阵A。其中数据查询方执行的密文矩阵A的生成过程如下所述:
步骤S222:数据查询方使用第一密钥k1分别加密第一关键词集合中的每个关键词,得到多个第一关键词密文,切分多个第一关键词密文为多个第一密文段,确定多个第一密文段对应的多个第一置零位置,将二值矩阵D中与多个第一置零位置相对应的位置的数值赋值为0;
具体地,在本步骤中数据查询方可以使用第一密钥k1分别加密待查询的多个关键词x,得到对应的多个第一关键词密文fk1(x),以log2(w) 为长度单位切分多个第一关键词密文fk1(x),记第i段为fk1(x)i,逐一将二值矩阵D中第i行第fk1(x)i列的值赋值为0,即赋值D[i, fk1(x)i] = 0;其中,每个关键词x对应一个第一关键词密文fk1(x)。
步骤S223:数据查询方使用第二密钥k2分别加密第一关键词集合中的每个关键词,得到多个第二关键词密文,切分多个第二关键词密文为多个第二密文段,确定多个第二密文段对应的多个第二置零位置,将二值矩阵D中与多个第二置零位置相对应的位置的数值赋值为0;
具体地,在步骤中数据查询方可以使用第二密钥k2分别加密待查询的多个关键词x,得到对应的多个第二关键词密文fk2(x),以log2(w) 为长度单位切分多个第二关键词密文fk2(x),记第i段为fk2(x)i,逐一将二值矩阵D中第i行第fk2(x)i列的值赋值为0,即赋值D[i, fk2(x)i] = 0;其中,每个关键词x对应一个第二关键词密文fk2(x)。
其中,步骤S222和步骤S223可以调换执行顺序;
步骤S224:数据查询方将经处理后的新的二值矩阵D’与第一密钥矩阵R进行异或操作完成加密步骤,最终得到的密文矩阵A为:A=D⊕R。
在本阶段中,第一密钥k1、第二密钥k2的长度λ也被称为计算安全参数,其大小取决于对算法的安全要求,一定程度上决定了算法抵御暴力攻击的能力,一般情况下密钥越长,加密后得到的密文难被暴力解密,但过长的密钥同时也会增加算法执行的开销,在不经意关键词搜索任务中,密钥长度一般取值为128比特。
本阶段中的矩阵宽度 w取值需满足一定的约束条件,即:
在约束条件中,约束条件左侧表达式表示密文矩阵A的一行中存在d以下个1的概率,其中p代表密文矩阵A的一行中任意一个位置为1的概率。由于在不经意关键词搜索中数据的长度一般为128比特,因此d的值一般也取为128;约束条件右侧表达式表示一个满足统计安全要求的最小值,左侧表达式的值小于右侧,即可视为左侧表达式所表示的概率可以忽略不计,其中𝜎为统计安全参数,一般将其设置为40。若w不满足上述的约束条件,则会导致密文矩阵容易被反推出加密前的明文,不满足安全要求。
因为矩阵宽度w越大,所需要的计算开销和通信开销也会随之增大,因此矩阵宽度w应在满足约束条件的前提下取最小值。本实施例中涉及的矩阵宽度均为w,包括前面提及的二值矩阵D、第一密钥矩阵R以及密文矩阵A。
不经意传输阶段,请参阅图2,步骤S3具体可以包括如下步骤:
在该不经意传输阶段,数据持有方提供长度为w的比特串B作为不经意传输中的选择向量,数据查询方提供第一密钥矩阵R与密文矩阵A作为被选择的数据。
每次不经意传输以二进制形式的比特串B的第j位数作为选择数,在第一密钥矩阵R的第j列和密文矩阵A的第j列中选择一列作为数据持有方生成的第二密钥矩阵C的第j列。最终经过w次不经意传输得到完整的第二密钥矩阵C,即得到如下结果:fR, A(B)。
数据持有方加密阶段:
数据持有方接收由数据查询方传输的第一密钥k1和第二密钥k2,分别使用第一密钥k1、第二密钥k2对数据库中的第二关键词集合进行加密,对应得到多个第三关键词密文以及多个第四关键词密文;
数据持有方切分多个第三关键词密文为多个第三密文段,以每个第三密文段作为索引逐一将第二密钥矩阵C中与当前的第三密文段对应的第一关联位置的值取出,将取出的值拼接形成第二关键词集合在第二密钥矩阵C中映射的多个键密文mx1,组合所有键密文mx1得到键密文向量Mx;
数据持有方切分多个第四关键词密文为多个第四密文段,以每个第四密文段作为索引逐一将第二密钥矩阵C中与当前的第四密文段对应的第二关联位置的值取出,将取出的值拼接形成第二关键词集合在第二密钥矩阵C中映射的多个值密文mx2,使用映射的多个值密文mx2对数据库中的值进行加密得到值密文mv,组合所有值密文mv得到值密文向量Mv。
以下对数据持有方加密阶段的处理过程,举例进行更加详细的说明:
数据持有方首先接收由数据查询方传输的第一密钥k1、第二密钥k2,分别使用第一密钥k1、第二密钥k2对键值对数据库中第二关键词集合的多个关键词x’进行加密,相应地得到多个第三关键词密文fk1(x’)、多个第四关键词密文fk2(x’)。数据持有方拥有一个键值对数据库,数据持有方在本地的该键值对数据库中拥有多个关键词,这个算法的目的是数据查询方想通过多个待查询的关键词x从数据持有方得到与多个待查询的关键词x对应的多个值。由于双方都拥有第一密钥k1和第二密钥k2,因此双方均可以分别针对自己持有的多个关键词进行本地加密。
数据持有方以log2(w)为长度单位切分多个第三关键词密文fk1(x’),记第i段为fk1(x’)i,以第i段作为索引(即以切分处理后的每一段为索引)逐一将第二密钥矩阵C中第i行第fk1(x’)i列的值取出,将取出的值拼接形成多个关键词在第二密钥矩阵C中映射的键密文mx1。组合所有键密文mx1得到键密文向量Mx。
数据持有方以log2(w)为长度单位切分多个第四关键词密文fk2(x’),记第i段为fk2(x’)i,以第i段作为索引逐一将第二密钥矩阵C中第i行第fk2(x’)i列的值取出,将取出的值拼接形成多个关键词在第二密钥矩阵C中映射的多个值密文mx2。使用多个值密文mx2对数据库中的值进行加密得到最终的值密文mv,组合所有最终的值密文mv得到值密文向量Mv。
数据查询方解密阶段:
数据查询方切分多个第一关键词密文为多个第一密文段,以每个第一密文段作为索引逐一将第一密钥矩阵R中与当前的第一密文段对应的第三关联位置的值取出,将取出的值组合形成第一关键词集合在第一密钥矩阵R中映射的第五关键词密文r1x;
数据查询方切分多个第二关键词密文为多个第二密文段,以每个第二密文段作为索引逐一将第一密钥矩阵R中与当前的第二密文段对应的第四关联位置的值取出,将取出的值组合形成第一关键词集合在第一密钥矩阵R中映射的第六关键词密文r2x;
数据查询方在键密文向量Mx中寻找与第五关键词密文r1x相同的子密文,确定第五关键词密文r1x在键密文向量Mx中的目标位置,并从值密文向量Mv中取出对应目标位置的值密文mv,使用第六关键词密文r2x对值密文mv进行解密,最终得到所求的多个查询目标值y。
以下对数据查询方解密阶段的处理过程,举例进行更加详细的说明:
数据查询方以log2(w)为长度单位切分多个第一关键词密文fk1(x),记第i段为fk1(x)i,以第i段作为索引逐一将第一密钥矩阵R中第i行第fk1(x)i列的值取出,将取出的值组合形成多个关键词x在第一密钥矩阵R中映射的第五关键词密文r1x。
数据查询方以log2(w)为长度单位切分多个第二关键词密文fk1(x),记第i段为fk2(x)i,以第i段作为索引逐一将第一密钥矩阵R中第i行第fk1(x)i列的值取出,将取出的值组合形成多个关键词x在第一密钥矩阵R中映射的第六关键词密文r2x。
数据查询方在键密文向量Mx中寻找与第五关键词密文r1x相同的子密文,确定第五关键词密文r1x在键密文向量Mx中的目标位置,并从值密文向量Mv中取出对应于该目标位置的值密文mv,使用第六关键词密文r2x对值密文mv进行解密,最终得到所求的多个查询目标值y。
以下通过具体的实验数据说明本发明实施例的有益技术效果:
本实验使用随机生成的不同规模的定长数据集,其中单个关键词x数据定长为128比特,单个关键词x对应的值数据同样定长为128比特,实验中查询请求个数设置为1。
本实验的数据集大小参数 n设置取值为212、216、220、224,包括了千量级至千万量级的数据规模。实验中的参数还可以包括计算安全参数λ、统计安全参数𝜎、密文矩阵宽度w。根据不经意关键词算法研究中的常用设置,其中计算安全参数λ取值为固定值128,统计安全参数𝜎取值为固定值40。确定其它参数之后,根据上述列出的约束条件,可计算得到相应的密文矩阵宽度w的取值。
表1:参数设置表
本实验中需要评价的指标有计算开销和通信开销,其中计算开销以程序的实际运行时间为评价标准,通信开销以统计的总通信数据量为评价标准。
本实验中的对比算法选取了Freedman等人在2005年提出的R-OPRF OKS算法方案和 Chen等人在2018年提出的Labeled PSI算法方案。
表2:实验结果表
本实验结果数据通过在2.2 GHz六核Intel Core i7 CPU处理器与16 GB内存的物理机器环境中运行测得。
通过实验结果可以看到,与计算密集型的基于不经意多项式评估的技术路线的Labeled PSI 相比,本发明实施例提出的M-OPRF OKS的通信开销相对更高,但在计算开销上有着明显优势;与同为基于不经意伪随机函数的技术路线的R-OPRF OKS相比,本发明实施例提出的M-OPRF OKS具有相对较高一些的通信开销,但是在计算开销上仅为 R-OPRFOKS的 50% 左右,可以证实M-OPRF OKS算法实现了计算轻量级的设计目标。
图3是本发明实施例的基于双密钥不经意伪随机函数的关键词搜索系统的功能框图。如图3所示,该系统包括数据持有方200和数据查询方300;
数据持有方200包括:
预处理模块201,用于预先随机生成比特串B,以作为后续不经意传输中的选择向量;
第一不经意传输模块202,用于与数据查询方300执行不经意传输协议,根据比特串B、第一密钥矩阵R和密文矩阵A,从数据查询方300处选择得到第二密钥矩阵C;
第一接收模块203,用于接收由数据查询方300发送的第一密钥k1和第二密钥k2;
键值密文向量生成模块204,用于根据第一密钥k1、数据库中的第二关键词集合和第二密钥矩阵C获得键密文向量Mx,并且根据第二密钥k2、第二关键词集合和第二密钥矩阵C获得值密文向量Mv;
第一发送模块205,用于将键密文向量Mx和值密文向量Mv发送给数据查询方300;
数据查询方300包括:
密文矩阵生成模块301,用于随机生成第一密钥k1、第二密钥k2和第一密钥矩阵R,根据第一密钥k1、第二密钥k2和第一密钥矩阵R对待查询的第一关键词集合加密,得到第一关键词集合对应的密文矩阵A;
第二不经意传输模块302,用于与数据持有方200执行不经意传输协议,将第一密钥矩阵R和密文矩阵A作为不经意传输的输入;
第二发送模块303,用于将第一密钥k1和第二密钥k2发送给数据持有方200;
第二接收模块304,用于接收数据持有方200发送的键密文向量Mx和值密文向量Mv;
解密处理模块305,用于根据第一关键词集合、第一密钥k1、第二密钥k2、第一密钥矩阵R、键密文向量Mx和值密文向量Mv,获得对应于第一关键词集合的多个查询目标值y。
在一些实施例中,比特串B的长度为w;密文矩阵生成模块301,具体用于生成一个大小为的第一密钥矩阵R,其中n为数据持有方的数据集的大小;根据第一密钥k1、第二密钥k2、第一关键词集合、预设的二值矩阵D和第一密钥矩阵R,得到第一关键词集合对应的密文矩阵A。
在一些实施例中,密文矩阵生成模块301,具体用于:
初始化二值矩阵D为全1矩阵;
使用第一密钥k1分别加密第一关键词集合中的每个关键词,得到多个第一关键词密文,切分多个第一关键词密文为多个第一密文段,确定多个第一密文段对应的多个第一置零位置,将二值矩阵D中与多个第一置零位置相对应的位置的数值赋值为0;
使用第二密钥k2分别加密第一关键词集合中的每个关键词,得到多个第二关键词密文,切分多个第二关键词密文为多个第二密文段,确定多个第二密文段对应的多个第二置零位置,将二值矩阵D中与多个第二置零位置相对应的位置的数值赋值为0;
将经处理后的二值矩阵D’与第一密钥矩阵R进行异或操作,得到密文矩阵A。
在一些实施例中,第一不经意传输模块202,具体用于:
与数据查询方300执行不经意传输协议,不经意传输的输入是第一密钥矩阵R和密文矩阵A,不经意传输的选择向量是长度为w的比特串B;每次不经意传输以二进制形式的比特串B的第j位数作为选择数,在第一密钥矩阵R的第j列和密文矩阵A的第j列中选择一列作为数据持有方生成的第二密钥矩阵C的第j列,经过w次不经意传输得到完整的第二密钥矩阵C。
在一些实施例中,键值密文向量生成模块204,具体包括:
键密文向量生成子模块,具体用于:
接收由数据查询方300传输的第一密钥k1和第二密钥k2,分别使用第一密钥k1、第二密钥k2对数据库中的第二关键词集合进行加密,对应得到多个第三关键词密文以及多个第四关键词密文;
数据持有方切分多个第三关键词密文为多个第三密文段,以每个第三密文段作为索引逐一将第二密钥矩阵C中与当前的第三密文段对应的第一关联位置的值取出,将取出的值拼接形成第二关键词集合在第二密钥矩阵C中映射的多个键密文mx1,组合所有键密文mx1得到键密文向量Mx;
值密文向量生成子模块,具体用于:
切分多个第四关键词密文为多个第四密文段,以每个第四密文段作为索引逐一将第二密钥矩阵C中与当前的第四密文段对应的第二关联位置的值取出,将取出的值拼接形成第二关键词集合在第二密钥矩阵C中映射的多个值密文mx2,使用映射的多个值密文mx2对数据库中的值进行加密得到值密文mv,组合所有值密文mv得到值密文向量Mv。
在一些实施例中,解密处理模块305,具体用于:
切分第一关键词密文为多个第一密文段,以每个第一密文段作为索引逐一将第一密钥矩阵R中与当前的第一密文段对应的第三关联位置的值取出,将取出的值组合形成第一关键词集合在第一密钥矩阵R中映射的第五关键词密文r1x;
切分第二关键词密文为多个第二密文段,以每个第二密文段作为索引逐一将第一密钥矩阵R中与当前的第二密文段对应的第四关联位置的值取出,将取出的值组合形成第一关键词集合在第一密钥矩阵R中映射的第六关键词密文r2x;
在键密文向量Mx中寻找与第五关键词密文r1x相同的子密文,确定第五关键词密文r1x在键密文向量Mx中的目标位置,并从值密文向量Mv中取出对应目标位置的值密文mv,使用第六关键词密文r2x对值密文mv进行解密,最终得到所求的多个查询目标值y。
本发明实施例还提供一种应用于数据持有方的基于双密钥不经意伪随机函数的关键词搜索方法,其包括由数据持有方执行的如下步骤:
预先随机生成比特串B,以作为后续不经意传输中的选择向量;进一步地,在预先随机生成比特串B之前还可以包括如下步骤:对数据库的记录实现分箱处理,在分箱处理后以箱为单位进行后续操作;
根据作为选择向量的比特串B、第一密钥矩阵R和密文矩阵A执行不经意传输协议,从数据查询方处选择得到第二密钥矩阵C;其中,数据查询方随机生成第一密钥k1、第二密钥k2和第一密钥矩阵R,根据第一密钥k1、第二密钥k2和第一密钥矩阵R对待查询的第一关键词集合的加密,得到第一关键词集合对应的密文矩阵A;
接收由数据查询方发送的第一密钥k1和第二密钥k2;
数据持有方根据第一密钥k1、数据持有方的数据库中的第二关键词集合和第二密钥矩阵C获得键密文向量Mx,并且根据第二密钥k2、第二关键词集合和第二密钥矩阵C获得值密文向量Mv;
将键密文向量Mx和值密文向量Mv发送给数据查询方。
本发明实施例还提供一种应用于数据查询方的基于双密钥不经意伪随机函数的关键词搜索方法,其包括由数据查询方执行的如下步骤:
随机生成第一密钥k1、第二密钥k2和第一密钥矩阵R,根据所述第一密钥k1、所述第二密钥k2和所述第一密钥矩阵R完成对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵A;
与数据持有方执行不经意传输协议,将所述第一密钥矩阵R和所述密文矩阵A作为不经意传输的输入,触发所述数据持有方将预先随机生成的比特串B作为不经意传输的选择向量,从而使得所述数据持有方根据所述比特串B、所述第一密钥矩阵R和所述密文矩阵A得到第二密钥矩阵C;
将所述第一密钥k1和所述第二密钥k2发送给所述数据持有方,触发所述数据持有方根据所述第一密钥k1、数据库中的第二关键词集合和所述第二密钥矩阵C获得键密文向量Mx,并且根据所述第二密钥k2、第二关键词集合和所述第二密钥矩阵C获得值密文向量Mv;
接收所述数据持有方发送的所述键密文向量Mx和所述值密文向量Mv;
根据所述第一关键词集合、所述第一密钥k1、所述第二密钥k2、所述第一密钥矩阵R、所述键密文向量Mx和所述值密文向量Mv,获得对应于所述第一关键词集合的多个查询目标值y。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图4是本发明实施例的一种计算机可读存储介质的功能框图。如图4所示,本发明实施例还提供了一种计算机可读存储介质500,该计算机可读存储介质500内存储有用于执行本申请方法实施例中各步骤的计算机程序510,计算机程序510被处理器执行时实现上述基于双密钥不经意伪随机函数的关键词搜索方法的各步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
图5是本发明实施例的一种计算机设备的功能框图。如图5所示,本申请实施例提供了一种计算机设备1000,其包括:一个或多个处理器1001、存储器1002和通信总线1003,存储器1002存储有处理器1001可执行的机器可读指令,当计算机设备1000运行时,处理器1001与存储器1002之间通过通信总线1003通信,处理器1001执行机器可读指令,以执行或实现由数据持有方或者数据查询方所执行的所述基于双密钥不经意伪随机函数的关键词搜索方法的各步骤。
处理器1001可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器1002可以包括用于数据或指令的大容量存储器。例如,存储器1002可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1002可包括可移除或不可移除的介质。在特定实施例中,存储器1002包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信总线1003包括硬件、软件或两者的组合,用于将上述部件彼此耦接在一起。举例来说,通信总线1003可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线,或者两个或更多个以上这些的组合。在合适的情况下,总线可包括一个或多个总线。
在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。本实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或产品执行时,可以按照本实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述本发明实施例的方法、系统和计算机程序产品的流程图和/或方框图,应理解可由计算机程序指令实现流程图中的每一流程,以及实现方框图中的每个功能模块。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令能够实现在流程图的一个流程或多个流程,或者实现方框图中的一个方框或多个方框中指定的功能。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案;对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.基于双密钥不经意伪随机函数的关键词搜索方法,其特征在于,包括:
S1:数据持有方预先随机生成比特串(B),以作为后续不经意传输中的选择向量;
S2:数据查询方随机生成第一密钥(k1)、第二密钥(k2)和第一密钥矩阵(R),根据所述第一密钥(k1)、所述第二密钥(k2)和所述第一密钥矩阵(R)对待查询的第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵(A);
S3:所述数据持有方与所述数据查询方执行不经意传输协议,所述数据持有方根据所述比特串(B)、所述第一密钥矩阵(R)和所述密文矩阵(A),得到第二密钥矩阵(C);
S4:所述数据查询方将所述第一密钥(k1)和所述第二密钥(k2)发送给所述数据持有方;
S5:所述数据持有方根据所述第一密钥(k1)、数据持有方的数据库中的第二关键词集合和所述第二密钥矩阵(C)获得键密文向量(Mx),并且根据所述第二密钥(k2)、所述第二关键词集合和所述第二密钥矩阵(C)获得值密文向量(Mv);
S6:所述数据持有方将所述键密文向量(Mx)和所述值密文向量(Mv)发送给所述数据查询方;
S7:所述数据查询方根据所述第一关键词集合、所述第一密钥(k1)、所述第二密钥(k2)、所述第一密钥矩阵(R)、所述键密文向量(Mx)和所述值密文向量(Mv),获得对应于所述第一关键词集合的多个查询目标值(y);
所述比特串(B)的长度为w;步骤S2具体包括:
S22:所述数据查询方根据所述第一密钥(k1)、所述第二密钥(k2)、所述第一关键词集合、预设的二值矩阵(D)和所述第一密钥矩阵(R),得到所述第一关键词集合对应的密文矩阵(A);
步骤S22包括:
S221:所述数据查询方初始化所述二值矩阵(D)为全1矩阵;
S222:所述数据查询方使用所述第一密钥(k1)分别加密所述第一关键词集合中的每个关键词,得到多个第一关键词密文,切分所述多个第一关键词密文为多个第一密文段,确定多个第一密文段对应的多个第一置零位置,将所述二值矩阵(D)中与所述多个第一置零位置相对应的位置的数值赋值为0;
S223:所述数据查询方使用所述第二密钥(k2)分别加密所述第一关键词集合中的每个关键词,得到多个第二关键词密文,切分所述多个第二关键词密文为多个第二密文段,确定多个第二密文段对应的多个第二置零位置,将所述二值矩阵(D)中与所述多个第二置零位置相对应的位置的数值赋值为0;
S224:所述数据查询方将经处理后的二值矩阵(D’)与所述第一密钥矩阵(R)进行异或操作,得到所述密文矩阵(A)。
2.根据权利要求1所述的方法,其特征在于,步骤S3具体包括:
所述数据查询方将所述第一密钥矩阵(R)和所述密文矩阵(A)作为不经意传输的输入;
所述数据持有方将长度为w的比特串(B)作为不经意传输的选择向量,每次不经意传输以二进制形式的比特串(B)的第j位数作为选择数,在所述第一密钥矩阵(R)的第j列和所述密文矩阵(A)的第j列中选择一列作为所述数据持有方生成的第二密钥矩阵(C)的第j列,经过w次不经意传输得到完整的所述第二密钥矩阵(C)。
3.根据权利要求1所述的方法,其特征在于,步骤S5具体包括:
所述数据持有方接收由所述数据查询方传输的所述第一密钥(k1)和所述第二密钥(k2),分别使用所述第一密钥(k1)、所述第二密钥(k2)对数据库中的第二关键词集合进行加密,对应得到多个第三关键词密文以及多个第四关键词密文;
所述数据持有方切分所述多个第三关键词密文为多个第三密文段,以每个第三密文段作为索引逐一将所述第二密钥矩阵(C)中与当前的第三密文段对应的第一关联位置的值取出,将取出的值拼接形成所述第二关键词集合在所述第二密钥矩阵(C)中映射的多个键密文(mx1),组合所有键密文(mx1)得到键密文向量(Mx);
所述数据持有方切分所述多个第四关键词密文为多个第四密文段,以每个第四密文段作为索引逐一将所述第二密钥矩阵(C)中与当前的第四密文段对应的第二关联位置的值取出,将取出的值拼接形成所述第二关键词集合在所述第二密钥矩阵(C)中映射的多个值密文(mx2),使用映射的多个值密文(mx2)对数据库中的值进行加密得到值密文(mv),组合所有值密文(mv)得到值密文向量(Mv)。
4.根据权利要求3所述的方法,其特征在于,步骤S7具体包括:
所述数据查询方切分所述第一关键词密文为多个第一密文段,以每个第一密文段作为索引逐一将所述第一密钥矩阵(R)中与当前的第一密文段对应的第三关联位置的值取出,将取出的值组合形成所述第一关键词集合在所述第一密钥矩阵(R)中映射的第五关键词密文(r1x);
所述数据查询方切分所述第二关键词密文为多个第二密文段,以每个第二密文段作为索引逐一将所述第一密钥矩阵(R)中与当前的第二密文段对应的第四关联位置的值取出,将取出的值组合形成所述第一关键词集合在所述第一密钥矩阵(R)中映射的第六关键词密文(r2x);
所述数据查询方在所述键密文向量(Mx)中寻找与所述第五关键词密文(r1x)相同的子密文,确定所述第五关键词密文(r1x)在所述键密文向量(Mx)中的目标位置,并从所述值密文向量(Mv)中取出对应所述目标位置的值密文(mv),使用所述第六关键词密文(r2x)对所述值密文(mv)进行解密,最终得到所求的多个查询目标值(y)。
5.基于双密钥不经意伪随机函数的关键词搜索系统,其特征在于,包括数据持有方和数据查询方;
所述数据持有方包括:
预处理模块,用于预先随机生成比特串(B),以作为后续不经意传输中的选择向量;
第一不经意传输模块,用于与所述数据查询方执行不经意传输协议,根据所述比特串(B)、第一密钥矩阵(R)和密文矩阵(A),从所述数据查询方处选择得到第二密钥矩阵(C);
第一接收模块,用于接收由所述数据查询方发送的第一密钥(k1)和第二密钥(k2);
键值密文向量生成模块,用于根据所述第一密钥(k1)、数据库中的第二关键词集合和所述第二密钥矩阵(C)获得键密文向量(Mx),并且根据所述第二密钥(k2)、第二关键词集合和所述第二密钥矩阵(C)获得值密文向量(Mv);
第一发送模块,用于将所述键密文向量(Mx)和所述值密文向量(Mv)发送给所述数据查询方;
所述数据查询方包括:
密文矩阵生成模块,用于随机生成所述第一密钥(k1)、所述第二密钥(k2)和第一密钥矩阵(R),根据所述第一密钥(k1)、所述第二密钥(k2)和所述第一密钥矩阵(R)对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵(A);
第二不经意传输模块,用于与所述数据持有方执行不经意传输协议,将所述第一密钥矩阵(R)和所述密文矩阵(A)作为不经意传输的输入;
第二发送模块,用于将所述第一密钥(k1)和所述第二密钥(k2)发送给所述数据持有方;
第二接收模块,用于接收所述数据持有方发送的所述键密文向量(Mx)和所述值密文向量(Mv);
解密处理模块,用于根据所述第一关键词集合、所述第一密钥(k1)、所述第二密钥(k2)、所述第一密钥矩阵(R)、所述键密文向量(Mx)和所述值密文向量(Mv),获得对应于所述第一关键词集合的多个查询目标值(y);
所述比特串(B)的长度为w;所述密文矩阵生成模块,具体用于生成一个大小为的第一密钥矩阵(R),其中n为数据持有方的数据集的大小;根据所述第一密钥(k1)、所述第二密钥(k2)、所述第一关键词集合、预设的二值矩阵(D)和所述第一密钥矩阵(R),得到所述第一关键词集合对应的所述密文矩阵(A);
所述密文矩阵生成模块,具体用于:
初始化所述二值矩阵(D)为全1矩阵;
使用所述第一密钥(k1)分别加密所述第一关键词集合中的每个关键词,得到多个第一关键词密文,切分所述多个第一关键词密文为多个第一密文段,确定多个第一密文段对应的多个第一置零位置,将所述二值矩阵(D)中与所述多个第一置零位置相对应的位置的数值赋值为0;
使用所述第二密钥(k2)分别加密所述第一关键词集合中的每个关键词,得到多个第二关键词密文,切分所述多个第二关键词密文为多个第二密文段,确定多个第二密文段对应的多个第二置零位置,将所述二值矩阵(D)中与所述多个第二置零位置相对应的位置的数值赋值为0;
将经处理后的二值矩阵(D’)与所述第一密钥矩阵(R)进行异或操作,得到所述密文矩阵(A)。
6.根据权利要求5所述的系统,其特征在于,所述第一不经意传输模块,具体用于:
与所述数据查询方执行不经意传输协议,不经意传输的输入是所述第一密钥矩阵(R)和所述密文矩阵(A),不经意传输的选择向量是长度为w的比特串(B);每次不经意传输以二进制形式的比特串(B)的第j位数作为选择数,在所述第一密钥矩阵(R)的第j列和所述密文矩阵(A)的第j列中选择一列作为所述数据持有方生成的第二密钥矩阵(C)的第j列,经过w次不经意传输得到完整的所述第二密钥矩阵(C)。
7.根据权利要求5所述的系统,其特征在于,所述键值密文向量生成模块,具体包括:
键密文向量生成子模块,具体用于:
接收由所述数据查询方传输的所述第一密钥(k1)和所述第二密钥(k2),分别使用所述第一密钥(k1)、所述第二密钥(k2)对数据库中的第二关键词集合进行加密,对应得到多个第三关键词密文以及多个第四关键词密文;
所述数据持有方切分所述多个第三关键词密文为多个第三密文段,以每个第三密文段作为索引逐一将所述第二密钥矩阵(C)中与当前的第三密文段对应的第一关联位置的值取出,将取出的值拼接形成所述第二关键词集合在所述第二密钥矩阵(C)中映射的多个键密文(mx1),组合所有键密文(mx1)得到键密文向量(Mx);
值密文向量生成子模块,具体用于:
切分所述多个第四关键词密文为多个第四密文段,以每个第四密文段作为索引逐一将所述第二密钥矩阵(C)中与当前的第四密文段对应的第二关联位置的值取出,将取出的值拼接形成所述第二关键词集合在所述第二密钥矩阵(C)中映射的多个值密文(mx2),使用映射的多个值密文(mx2)对数据库中的值进行加密得到值密文(mv),组合所有值密文(mv)得到值密文向量(Mv)。
8.根据权利要求7所述的系统,其特征在于,所述解密处理模块,具体用于:
切分所述第一关键词密文为多个第一密文段,以每个第一密文段作为索引逐一将所述第一密钥矩阵(R)中与当前的第一密文段对应的第三关联位置的值取出,将取出的值组合形成所述第一关键词集合在所述第一密钥矩阵(R)中映射的第五关键词密文(r1x);
切分所述第二关键词密文为多个第二密文段,以每个第二密文段作为索引逐一将所述第一密钥矩阵(R)中与当前的第二密文段对应的第四关联位置的值取出,将取出的值组合形成所述第一关键词集合在所述第一密钥矩阵(R)中映射的第六关键词密文(r2x);
在所述键密文向量(Mx)中寻找与所述第五关键词密文(r1x)相同的子密文,确定所述第五关键词密文(r1x)在所述键密文向量(Mx)中的目标位置,并从所述值密文向量(Mv)中取出对应所述目标位置的值密文(mv),使用所述第六关键词密文(r2x)对所述值密文(mv)进行解密,最终得到所求的多个查询目标值(y)。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任意一项所述的方法。
10.一种计算机设备,其特征在于,其包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现:
随机生成第一密钥(k1)、第二密钥(k2)和第一密钥矩阵(R),根据所述第一密钥(k1)、所述第二密钥(k2)和所述第一密钥矩阵(R)完成对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵(A);
与数据持有方执行不经意传输协议,将所述第一密钥矩阵(R)和所述密文矩阵(A)作为不经意传输的输入,触发所述数据持有方将预先随机生成的比特串(B)作为不经意传输的选择向量,从而使得所述数据持有方根据所述比特串(B)、所述第一密钥矩阵(R)和所述密文矩阵(A)得到第二密钥矩阵(C);
将所述第一密钥(k1)和所述第二密钥(k2)发送给所述数据持有方,触发所述数据持有方根据所述第一密钥(k1)、数据库中的第二关键词集合和所述第二密钥矩阵(C)获得键密文向量(Mx),并且根据所述第二密钥(k2)、第二关键词集合和所述第二密钥矩阵(C)获得值密文向量(Mv);
接收所述数据持有方发送的所述键密文向量(Mx)和所述值密文向量(Mv);
根据所述第一关键词集合、所述第一密钥(k1)、所述第二密钥(k2)、所述第一密钥矩阵(R)、所述键密文向量(Mx)和所述值密文向量(Mv),获得对应于所述第一关键词集合的多个查询目标值(y);
其中,所述比特串(B)的长度为w;所述的随机生成第一密钥(k1)、第二密钥(k2)和第一密钥矩阵(R),根据所述第一密钥(k1)、所述第二密钥(k2)和所述第一密钥矩阵(R)完成对第一关键词集合加密,得到所述第一关键词集合对应的密文矩阵(A),具体包括:
初始化二值矩阵(D)为全1矩阵;
使用所述第一密钥(k1)分别加密所述第一关键词集合中的每个关键词,得到多个第一关键词密文,切分所述多个第一关键词密文为多个第一密文段,确定多个第一密文段对应的多个第一置零位置,将所述二值矩阵(D)中与所述多个第一置零位置相对应的位置的数值赋值为0;
使用所述第二密钥(k2)分别加密所述第一关键词集合中的每个关键词,得到多个第二关键词密文,切分所述多个第二关键词密文为多个第二密文段,确定多个第二密文段对应的多个第二置零位置,将所述二值矩阵(D)中与所述多个第二置零位置相对应的位置的数值赋值为0;
将经处理后的二值矩阵(D’)与所述第一密钥矩阵(R)进行异或操作,得到所述密文矩阵(A)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211022951.XA CN115098649B (zh) | 2022-08-25 | 2022-08-25 | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211022951.XA CN115098649B (zh) | 2022-08-25 | 2022-08-25 | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115098649A CN115098649A (zh) | 2022-09-23 |
CN115098649B true CN115098649B (zh) | 2022-11-22 |
Family
ID=83300647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211022951.XA Active CN115098649B (zh) | 2022-08-25 | 2022-08-25 | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098649B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333721B (zh) * | 2022-10-13 | 2023-02-03 | 北京融数联智科技有限公司 | 一种隐私集合交集计算方法、装置和系统 |
CN116010678B (zh) * | 2022-12-30 | 2024-04-12 | 北京火山引擎科技有限公司 | 一种匿踪查询方法、装置及设备 |
CN116361344B (zh) * | 2023-04-03 | 2024-09-06 | 北京火山引擎科技有限公司 | 数据查询方法、装置、设备及介质 |
CN118520024B (zh) * | 2024-07-19 | 2024-10-15 | 深圳大学 | 结合盲签名和不经意传输扩展实现的隐私信息检索方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104036050A (zh) * | 2014-07-04 | 2014-09-10 | 福建师范大学 | 一种密文云数据复杂查询方法 |
US9846785B2 (en) * | 2015-11-25 | 2017-12-19 | International Business Machines Corporation | Efficient two party oblivious transfer using a leveled fully homomorphic encryption |
CN110727951B (zh) * | 2019-10-14 | 2021-08-27 | 桂林电子科技大学 | 具有隐私保护的轻量级外包文件多关键词检索方法及系统 |
CN110851481B (zh) * | 2019-11-08 | 2022-06-28 | 青岛大学 | 一种可搜索加密方法、装置、设备及可读存储介质 |
CN114726522B (zh) * | 2022-04-24 | 2024-02-20 | 中国传媒大学 | 一种保护双方隐私的不经意可搜索加密方法 |
-
2022
- 2022-08-25 CN CN202211022951.XA patent/CN115098649B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115098649A (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115098649B (zh) | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 | |
Demertzis et al. | Fast searchable encryption with tunable locality | |
US20170242924A1 (en) | Masking query data access pattern in encrypted data | |
US9852306B2 (en) | Conjunctive search in encrypted data | |
US8271796B2 (en) | Apparatus for secure computation of string comparators | |
US20160182222A1 (en) | Computer-Implemented System And Method For Multi-Party Data Function Computing Using Discriminative Dimensionality-Reducing Mappings | |
WO2024077948A1 (zh) | 匿踪查询方法、装置和系统及存储介质 | |
CN110689349A (zh) | 一种区块链中的交易哈希值存储和搜索方法及装置 | |
EP2951945B1 (en) | Method and system for providing encrypted data for searching of information therein and a method and system for searching of information on encrypted data | |
CN112966281B (zh) | 基于稀疏数据集的隐私保护关联规则挖掘方法 | |
CN111552849B (zh) | 可搜索加密方法、系统、存储介质、车载网、智能电网 | |
CN111026788A (zh) | 一种混合云中基于同态加密的多关键词密文排序检索方法 | |
US11977657B1 (en) | Method and system for confidential repository searching and retrieval | |
CN114840867A (zh) | 基于可交换加密数据混淆的数据查询方法、装置和系统 | |
Xu et al. | Dynamic searchable symmetric encryption with physical deletion and small leakage | |
Li et al. | Multi-keyword fuzzy search over encrypted cloud storage data | |
Dai et al. | Accelerating swhe based pirs using gpus | |
Mainardi et al. | Privacy preserving substring search protocol with polylogarithmic communication cost | |
Hu et al. | Finding all impossible differentials when considering the DDT | |
Wang et al. | Enabling efficient approximate nearest neighbor search for outsourced database in cloud computing | |
Riazi et al. | PriSearch: Efficient search on private data | |
JP5937556B2 (ja) | 秘密計算装置、秘匿検索システム、秘密計算方法、秘匿検索方法、プログラム | |
US11106740B2 (en) | Search device, search system, search method, and computer readable medium | |
CN115913725A (zh) | 基于异或加密链的前向安全动态可搜索加密方法及系统 | |
CN115883145A (zh) | 一种基于随机采样的保序加密方法以及解密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |