CN116991864A - 隐匿查询方法、装置、设备及存储介质 - Google Patents

隐匿查询方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116991864A
CN116991864A CN202211152875.4A CN202211152875A CN116991864A CN 116991864 A CN116991864 A CN 116991864A CN 202211152875 A CN202211152875 A CN 202211152875A CN 116991864 A CN116991864 A CN 116991864A
Authority
CN
China
Prior art keywords
query
ciphertext
parameter
data
server
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.)
Pending
Application number
CN202211152875.4A
Other languages
English (en)
Inventor
张凡
蒋杰
刘煜宏
陈鹏
叶展豪
王礼斌
程勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211152875.4A priority Critical patent/CN116991864A/zh
Publication of CN116991864A publication Critical patent/CN116991864A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种隐匿查询方法、装置、设备及存储介质,涉及计算机和互联网技术领域。所述方法包括:接收第一密文,该第一密文是服务端基于数据集对应的ID加密生成的;基于查询ID和第一密文,计算得到第一反馈参数,以及向服务端发送第一反馈参数,该第一反馈参数用于确定数据集对应的ID中是否存在与查询ID相匹配的ID;接收来自服务端的第二密文,第二密文是服务端在数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成的;根据查询ID从第二密文中提取得到查询数据。本申请可应用于云技术、人工智能、智慧交通等场景。本申请能够在保持隐匿查询的安全性的同时,支持服务端主动感知查询ID是否匹配。

Description

隐匿查询方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机和互联网技术领域,特别涉及一种隐匿查询方法、装置、设备及存储介质。
背景技术
隐匿查询,也称隐私信息检索,其是一种为了保障个人隐私在公共网络平台上的私密性而采用的查询方法,当用户在数据库上检索信息时,它将采用一定的方法(如加密算法)来阻止服务端(如数据库服务器)知晓用户查询语句的相关信息,从而保护用户的查询隐私。
在相关技术中,在隐匿查询完成之后,需要查询方(即客户端)将查询ID是否匹配这一信息同步给被查询方(即服务端),被查询方基于该信息进行结算。然而,上述信息存在错误的风险(如查询方修改该信息),从而容易导致被查询方结算错误,被查询方的抗风险能力不高。
发明内容
本申请实施例提供了一种隐匿查询方法、装置、设备及存储介质,能够在不泄露查询ID和数据集中的其他数据的情况下,支持服务端主动感知查询ID是否匹配,从而实现了在保持隐匿查询的安全性的同时,提高了服务端的抗风险能力,进而降低客户端作恶给服务端带来经济损失的风险。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种隐匿查询方法,所述方法包括:
向服务端发送隐匿查询请求;其中,所述服务端对应存储有数据集;
接收来自所述服务端的第一密文,所述第一密文是基于所述数据集中的数据对应的身份标识号ID加密生成的;
基于查询ID和所述第一密文,计算得到第一反馈参数,以及向所述服务端发送所述第一反馈参数;其中,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
接收来自所述服务端的第二密文,所述第二密文是所述服务端在根据所述第一反馈参数确定所述数据集对应的ID中存在与所述查询ID相匹配的ID的情况下,基于所述数据集中的数据加密生成的;
根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据。
根据本申请实施例的一个方面,提供了一种隐匿查询方法,所述方法包括:
响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向所述客户端发送所述第一密文;
接收来自所述客户端的第一反馈参数,所述第一反馈参数是所述客户端基于查询ID和所述第一密文生成的,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
在所述第一反馈参数满足第一条件的情况下,对所述数据集中的数据进行加密,生成第二密文,以及向所述客户端发送所述第二密文;其中,所述第一条件用于指示所述数据集对应的ID中存在与所述查询ID相匹配的ID。
根据本申请实施例的一个方面,提供了一种隐匿查询装置,所述装置包括:
请求发送模块,用于向服务端发送隐匿查询请求;其中,所述服务端对应存储有数据集;
密文接收模块,用于接收来自所述服务端的第一密文,所述第一密文是基于所述数据集中的数据对应的身份标识号ID加密生成的;
参数计算模块,用于基于查询ID和所述第一密文,计算得到第一反馈参数,以及向所述服务端发送所述第一反馈参数;其中,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
所述密文接收模块,还用于接收来自所述服务端的第二密文,所述第二密文是所述服务端在根据所述第一反馈参数确定所述数据集对应的ID中存在与所述查询ID相匹配的ID的情况下,基于所述数据集中的数据加密生成的;
数据提取模块,用于根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据。
根据本申请实施例的一个方面,提供了一种隐匿查询装置,所述装置包括:
密文生成模块,用于响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向所述客户端发送所述第一密文;
参数接收模块,用于接收来自所述客户端的第一反馈参数,所述第一反馈参数是所述客户端基于查询ID和所述第一密文生成的,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
所述密文生成模块,还用于在所述第一反馈参数满足第一条件的情况下,对所述数据集中的数据进行加密,生成第二密文,以及向所述客户端发送所述第二密文;其中,所述第一条件用于指示所述数据集对应的ID中存在与所述查询ID相匹配的ID
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述隐匿查询方法。
所述计算机设备为终端设备或服务器。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述隐匿查询方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述隐匿查询方法。
本申请实施例提供的技术方案可以包括如下有益效果:
在隐匿查询过程中,客户端先基于数据集对应的ID加密生成的第一密文和查询ID,计算得到用于确定数据集对应的ID中是否存在与查询ID相匹配的ID的第一反馈参数,进而服务端基于该第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,使得服务端能够主动感知查询ID是否配,而无需被动地从客户端获取该信息,从而提高了服务端的抗风险能力,进而避免客户端作恶给服务端带来经济损失的风险。
另外,服务端在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成第二密文,客户端再根据查询ID从第二密文中提取查询ID对应的查询数据,实现了查询ID和数据集中的数据不泄露,从而保持了隐匿查询的安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的方案实施环境的示意图;
图2是本申请一个实施例提供的隐匿查询方法的流程图;
图3是本申请一个实施例提供的第一反馈参数的获取方法的流程图;
图4是本申请一个实施例提供的查询数据的提取方法的流程图;
图5是本申请另一个实施例提供的隐匿查询方法的流程图;
图6是本申请一个实施例提供的第一密文的生成方法的流程图;
图7是本申请一个实施例提供的隐匿查询装置的框图;
图8是本申请另一个实施例提供的隐匿查询装置的框图;
图9是本申请另一个实施例提供的隐匿查询装置的框图;
图10是本申请另一个实施例提供的隐匿查询装置的框图;
图11是本申请一个实施例提供的计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行介绍说明之前,首先对本申请中涉及的相关名词进行解释说明。
1、PIR:Private Information Retrieval,隐匿查询,其也被称之为隐私信息检索。
2、Host:隐匿查询中的服务端,即提供数据的一方,其也被称之为被查询方。例如,Host可以为用于提供数据(如营销数据、产品数据、金融数据、知识数据等)的服务器,其也可以为第三方平台,或第三方平台的后台服务器,本申请实施例对此不作限定。
3、Guest:隐匿查询中的客户端,即发起查询的一方,其也被称之为查询方。例如,Guest可以为具有隐匿查询功能的客户端,用户可以通过该客户端进行隐匿查询。
4、在线PIR:在每一次在线隐匿查询过程中,客户端对来自服务端的加密后的数据进行解密,再根据查询ID从解密后的数据中提取查询ID对应的查询数据。
5、基于椭圆曲线的EIGamal同态加密:椭圆曲线群明文空间/>n为/>的阶(即n表示/>的大小,且n为素数,一般为256比特素数),/>表示[0,n)之间的整数。
1)加密算法参数:G(第一生成元),H(第二生成元)且G和H的离散对数未知(即求解α,β使得α·G=H和β·H=G,在计算上是困难的)。
2)密钥对生成:私钥公钥/>公钥公开,私钥保密。
3)加密:输入明文随机参数/>和公钥PK,输出密文其中,C0=r·G,C1=r·PK+m·H。
4)解密:设密文用私钥sk计算C1-sk·C0=m·H,然后通过穷举恢复明文/>
该同态加密算法在DDH(Decisional Diffie-Hellman,决策迪菲-赫尔曼)安全假设下,密文与的随机元素计算不可区分。在解密过程中,用m·H恢复明文m本质上是求解离散对数问题,当明文过大时(例如超过264),恢复明文是一件困难的事情。可选地,本申请实施例可以选择ed25519椭圆曲线,则基于椭圆曲线的ElGamal同态加密的密文长度为64字节。
请参考图1,其示出了本申请一个实施例提供的方案实施环境的示意图。该实施环境可以包括:客户端10和服务端20。
客户端10是指隐匿查询中的客户端。示例性地,客户端10可以是指在线隐匿查询中的客户端,用户可以通过客户端10进行在线隐匿查询。客户端10可以是指目标应用程序的客户端,该目标应用程序可以是指具有隐匿查询功能的应用程序,诸如查询类应用程序、营销类应用程序、身份核验类应用程序、反欺诈类应用程序、金融类应用程序、购物类应用程序、游戏类应用程序、社交类应用程序、互动娱乐类应用程序等等。客户端10对应的目标应用程序可以安装运行于终端上,该终端可以是诸如手机、平板电脑、游戏主机、多媒体播放设备、PC(Personal Computer,个人计算机)、车载终端等电子设备。可选地,上述目标应用程序具有加密和解密能力,例如目标应用程序的客户端能够对数据、ID等进行加密和解密。
服务端20是指隐匿查询中的服务端。示例性地,服务端20可以是指在线隐匿查询中的服务端,服务端20可用于为在线隐匿查询提供数据(如营销数据、产品数据、金融数据、知识数据等)。服务端20可以是指上述客户端10对应的后台服务器,也可以是指第三方平台,还可以是指第三方平台的后台服务器,本申请实施例对此不作限定。其中,第三方平台可以是诸如信息查询、身份核验、社交、娱乐、购物、游戏等平台,后台服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。可选地,服务端20设置有数据库,该数据库用于存储上述数据。服务端20具有加密和解密能力,例如服务端20能够对数据、ID等进行加密和解密。
客户端10和服务端20之间可通过网络进行互相通信。该网络可以是有线网络,也可以是无线网络。
在一个示例中,如图1所示,客户端10拥有查询ID(即图1中的id1),服务端20拥有数据集{(id0,data0),(id1,data1),(id2,data2),...}。
客户端10向服务端20发送隐匿查询请求,以发起在线隐匿查询。
服务端20在接收到该隐匿查询请求之后,根据数据集对应的ID集:{id0,id1,id2,...}构建零化多项式,然后可以采用同态加密算法(如基于椭圆曲线的ElGamal同态加密算法),对该零化多项式的系数进行加密,得到第一密文,服务端20向客户端10发送该第一密文。其中,对该零化多项式的系数进行加密是为保护客户端10的查询ID不被泄露,以及用于判断查询ID是否在ID集:{id0,id1,id2,...}中。
客户端10在接收到该第一密文之后,根据查询ID和第一密文同态计算得到第一反馈参数,该第一反馈参数用于确定服务端20的数据集对应的ID中是否存在与查询ID相匹配的ID,客户端10将第一反馈参数发送给服务端20。
服务端20在接收到第一反馈参数之后,根据第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,在数据集对应的ID中存在与查询ID相匹配的ID的情况下,服务端20采用对称加密算法,对数据集中的数据进行加密,得到第二密文,并将第二密文发送至客户端10。
客户端10根据查询ID从第二密文中提取查询ID对应的查询数据(即图1中的data1)。
可选地,在数据集对应的ID中不存在与查询ID相匹配的ID的情况下,服务端20则向客户端10发送协议终止信息,以指示本次在线隐匿查询结束。
示例性地,以风控场景为例,在评估用户的信用等级的过程中,某公司想要查询用户在某平台的信用信息(诸如失信信息、多头借贷等),采用本申请实施例提供的技术方案,可以实现平台的数据不出库,仅交换中间加密参数,从而保护非被查询用户的隐私信息。同时,平台也无法感知该公司的查询ID,保护了该用户的隐私信息。
在整个在线隐匿查询过程中,客户端10的查询ID得到了保护,即服务端20虽然知道查询ID是否匹配,但不知道查询ID具体是哪一个,服务端20的数据也得到了保护,即当查询ID匹配时,客户端10只能得到该查询ID对应的数据,而得不到其他数据,从而实现了在确保隐匿查询的安全性(即查询ID和数据集中数据不被泄露)的同时,使得服务端对查询ID是否匹配可感知这一功能,进而避免因客户端作恶给服务端带来经济损失的风险。
请参考图2,其示出了本申请一个实施例提供的隐匿查询方法的流程图,该方法各步骤的执行主体可以是图1所示方案实施环境中的客户端10,该方法可以包括如下几个步骤(步骤201~步骤205):
步骤201,向服务端发送隐匿查询请求;其中,服务端对应存储有数据集。
本申请实施例中的服务端为隐匿查询对应的服务端,也即被查询方。隐匿查询请求用于向服务端发起隐匿查询,可选地,隐匿查询请求可以由隐匿查询对应的客户端生成并发送。该隐匿查询可以为在线隐匿查询。
在一个示例中,服务端对应设置有数据库,该数据库中存储有由用户所需获取的数据形成的数据集。示例性地,该数据库为关系型数据库,例如KV数据库,则该数据集为KV数据集,例如数据与ID对应存储。可选地,该ID可以用于表征对应的数据,该ID可以是被查询对象对应的一串标志符,也可以是被查询对象对应的关键词,本申请实施例对此不作限定。
示例性地,上述数据集可以表示如下:
DB={(id1,v1),(id2,v2),...,(idL,vL)};
其中,该数据集包括L对键值对(即数据和id对),(idL,vL)为第L对键值对。
步骤202,接收来自服务端的第一密文,第一密文是基于数据集中的数据对应的身份标识号ID加密生成的。
可选地,服务端可以对数据集对应的所有ID进行加密,得到第一密文。在一个示例中,服务端可以采用同态加密算法,对数据集对应的所有ID进行加密,得到第一密文,第一密文的具体生成方法,下文将做详细说明,本申请实施例未说明的内容,可以参考下述实施例,这里不再赘述。
示例性地,基于上述实施例,服务端可以采用基于椭圆曲线的ElGamal同态加密算法,对{id1,id2,...,idL}进行加密,得到第一密文,然后将第一密文发送给客户端。
步骤203,基于查询ID和第一密文,计算得到第一反馈参数,以及向服务端发送第一反馈参数;其中,第一反馈参数用于确定数据集对应的ID中是否存在与查询ID相匹配的ID。
查询ID是指隐匿查询中的被查询对象对应的ID,查询ID可以包括多个ID。该查询ID与数据集对应的ID相对应。例如,该查询ID可以包括于数据集对应的ID中,该查询ID也可以与数据集对应的ID中某一ID相匹配,该查询ID还可能不包括于数据集对应的ID中,本申请实施例对此不作限定。
第一反馈参数为查询ID对应的反馈参数。在本申请实施例中,该反馈参数对应的明文可以为0,或非0的值(如1)。例如,若数据集对应的ID中存在与查询ID相匹配的ID,则该第一反馈参数对应的明文为0,否则为1。
在一个示例中,第一密文包括多个加密系数,该加密系数是对基于数据集对应的ID构建的零化多项式的系数进行加密得到的,参考图3,上述步骤203可以包括如下几个子步骤:
步骤203a,根据多个加密系数,构建系数加密后的零化多项式。
可选地,零化多项式可以表示如下:F(xj)=0,j=1,2,...,L,在本申请实施例中,xj为数据集对应的第j个ID的明文,也即为同态加密算法对应的明文空间。
示例性地,若基于数据集对应的ID构建的零化多项式表示为:
F(X)=f0+f1X+f2X2+...+fLXL
则有对应有L个加密系数,系数加密后的零化多项式可以表示为:
Enc(F(X))=ct0+ct1X+ct2X2+...+ctLXL
其中,ctL为第L个系数加密后的加密系数。
加密系数的具体获取方法,将在下文进行详细说明,本申请实施例未说明的内容,可以参考下述实施例,这里不再赘述。
步骤203b,获取系数加密后的零化多项式在查询ID处的第一取值。
可选地,可以将查询ID对应的明文输入至系数加密后的零化多项式,即可得到第一取值。
在一个示例中,可以先调用第一哈希函数对查询ID进行哈希,得到查询ID对应的第一哈希值,再同态计算系数加密后的零化多项式在第一哈希值处的取值,得到第一取值。
示例性地,客户端在获取L个加密系数后,调用第一哈希函数:计算/>其中,id表示查询ID,x表示第一哈希值。然后再同态计算Enc(F(X)在x处的第一取值:依次同态计算x在ct0,ct1X,ct2X2,...,ctLXL下的取值,然后将L个取值同态相加,得到第一取值。
步骤203c,采用盲化参数对第一取值进行盲化,得到第一反馈参数;其中,盲化参数是从服务端对应的明文空间中随机选择得到的,明文空间是通过第一哈希函数基于数据集对应的ID构建的。
可选地,上述加密系数可以是采用同态加密算法对零化多项式的系数进行加密得到的,诸如基于椭圆曲线的ElGamal同态加密算法。该同态加密算法对应设置有私钥和公钥,私钥是从明文空间中选择的,公钥是基于私钥生成的。
示例性地,以基于椭圆曲线的ElGamal同态加密算法为例,该同态加密算法的公开参数如下:
1、椭圆曲线群阶为n,生成元G(即第一生成元),H(即第二生成元)/>且G和H的离散对数未知,也即第一生成元和第二生成元是从椭圆曲线群中选择的。
2、三个哈希函数:第一哈希函数用于生成明文空间,第一哈希函数可以表示为:第二哈希函数用于基于服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间,第二哈希函数可以表示为:/>其中,2λ为第一安全参数,λ通常为128,{0,1}为第一数据空间;第三哈希函数用于生成第二安全参数下的第二数据空间,该第二安全参数与第一安全参数相关联,第三哈希函数可以表示为:H3:{0,1}*→{0,1}λ,λ为第二安全参数,{0,1}λ为第二数据空间。
3、密钥对:私钥公钥/>
该同态加密算法的加密过程(即第一反馈参数)可以如下:
1、采用盲化参数、第一生成元和随机多项式在查询ID处的取值,生成第一子反馈参数。
可选地,第一子反馈参数可以表示为:
Co=r·R(x)·G=(C0,0+x·C1,0+x2·C2,0+...+xL·CL,0);
其中,C0为第一子反馈参数,为盲化参数,R(x)为随机多项式在查询ID处的取值,该随机多项式是基于加密系数在加密过程中对应的随机参数构建的,该随机多项式可以表示为:R(X)=r0+r1X+r2X2+...+rLXL,rL为第L个加密系数对应的随机参数,CL,0为第一子反馈参数对应的第L个参数。
2、基于盲化参数、第一取值、第二生成元、公钥和随机多项式在查询ID处的取值,生成第二子反馈参数。
可选地,第二子反馈参数可以表示为:
C1=r·(R(x)·PK+Enc(F(x))·H)=(C0,1+x·C1,1+x2·C2,1+...+xL·CL,1);
其中,C1为第二子反馈参数,Enc(F(x)为第一取值,CL,1为第二子反馈参数对应的第L个参数。
3、基于第一子反馈参数和第二子反馈参数,得到第一反馈参数。
可选地,第一反馈参数可以表示为(C0,C1)。
本申请实施例对第一取值进行盲化的目的是:当客户端的查询ID在数据集对应的ID集里时,防止服务端根据私钥sk反推出客户端的查询ID,从而使得查询ID不被泄露,进而保持隐匿查询的安全性。
步骤204,接收来自服务端的第二密文,该第二密文是服务端在根据第一反馈参数确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成的。
可选地,服务端可以对数据集中的所有数据进行加密,得到第二密文。在一个示例中,服务端可以采用对称加密算法,对数据集中的所有数据进行加密,得到第二密文,诸如AES(Advanced Encryption Standard,高级加密标准)、SM4(一种国密算法)等加密算法。第二密文的具体生成方法,下文将做详细说明,本申请实施例未说明的内容,可以参考下述实施例,这里不再赘述。
示例性地,服务端可以采用对称加密算法,对{v1,v2,...,vL}进行加密,得到第二密文,然后将第二密文发送给客户端。
步骤205,根据查询ID从第二密文中,提取得到查询ID对应的查询数据。
查询数据是指客户端所需获取的数据。例如,参考图1,客户端对应的查询ID为idl,则可以将id1对应的data1确定为id1对应的查询数据。
在一个示例中,第二密文包括多个密文对,每个密文对包括一个初始向量和子密文,子密文为数据加密后的密文,初始向量用于检索查询ID对应的ID,其可以通过第三哈希函数基于查询ID获取。参考图4,步骤205还可以包括如下几个子步骤:
步骤205a,调用第二哈希函数,对服务端对应的公钥和盲化参数之间的乘积进行哈希,得到第一中间参数和第二中间参数;其中,第一中间参数用于确定目标初始向量,第二中间参数为查询ID对应的密钥。目标初始向量是指与查询ID相匹配的初始向量。
可选地,基于上述实施例,客户端在接收到L个密文对(iv,子密文)后,调用第二哈希函数H2计算:t1||t2←H2(r·PK),其中,iv为初始向量,t1为第一中间参数,对应左λ比特,t2为第二中间参数,对应右λ比特,t1||t2表示t1和t2之间的拼接结果。
步骤205b,调用第三哈希函数,对第一中间参数和查询ID之间的拼接结果进行哈希,得到查询ID对应的目标初始向量。
可选地,调用第三哈希函数H3计算:iv←H3(t1||id)。其中,iv表示查询ID对应的目标初始向量,id表示查询ID,t1||id为第一中间参数和查询ID之间的拼接结果。
步骤205c,采用第二中间参数和目标初始向量,对目标初始向量对应的子密文进行解密,得到查询ID对应的查询数据。
可选地,根据目标初始向量分别与L个密文对对应的初始向量进行匹配,得到目标初始向量对应的密文对,进而得到查询ID对应的子密文,最后将第二中间参数作为密钥,结合目标初始向量,对该子密文进行解密,得到查询ID对应的查询数据。
在一个示例中,在接收到来自服务端的协议终止信息的情况下,客户端可以判定服务端对应的数据集中不存在查询ID对应的查询数据,则可以结束本次在线隐匿查询。
在本申请实施例中,在随机预言机模型下,基于DDH安全假设,当客户端和服务端诚实遵守隐匿查询对应的协议,则该协议是安全的,即半诚实模型下,根据隐匿查询对应的交互内容,客户端得不到除匹配查询ID对应的查询数据之外的其他信息(包括服务端的其他ID和其他数据),服务端除了知道查询ID是否匹配之外,得不到客户端的查询ID。
综上所述,本申请实施例提供的技术方案,在隐匿查询过程中,客户端先基于数据集对应的ID加密生成的第一密文和查询ID,计算得到用于确定数据集对应的ID中是否存在与查询ID相匹配的ID的第一反馈参数,进而服务端基于该第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,使得服务端能够主动感知查询ID是否配,而无需被动地从客户端获取该信息,从而提高了服务端的抗风险能力,进而避免客户端作恶给服务端带来经济损失的风险。
另外,服务端在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成第二密文,客户端再根据查询ID从第二密文中提取查询ID对应的查询数据,实现了查询ID和数据集中的数据不泄露,从而保持了隐匿查询的安全性。
另外,本申请实施例提供的技术方案,通过采用同态加密算法和对称加密算法来实现隐匿查询,降低了隐匿查询中的通信量和解密计算量,从而解决了相关技术通过非对称加密技术和不经意传输技术来实现隐匿查询而导致的通信量大和解密计算量高的问题,进而提高了隐匿查询的效率。
另外,在本申请实施例中,服务端只需生成一次公钥和私钥即可,也即同态加密算法和对称加密算法共用公钥和私钥,从而进一步降低了隐匿查询的通讯量,进而提高了隐匿查询的效率。
请参考图5,其示出了本申请另一个实施例提供的隐匿查询方法的流程图,该方法各步骤的执行主体可以是图1所示方案实施环境中的服务端20,该方法可以包括如下几个步骤(步骤501~步骤503):
步骤501,响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向客户端发送第一密文。
本申请实施例中的客户端为隐匿查询对应的客户端,也即查询方。隐匿查询请求用于发起隐匿查询。隐匿查询请求可以由隐匿查询对应的客户端生成并发送。该隐匿查询可以为在线隐匿查询。
数据集可以是由用户所需获取的数据形成的,该数据集可以存储于服务端的数据库中。示例性地,该数据集为KV数据集,可存储于KV数据库中。该ID可以是被查询对象对应的一串标志符,也可以是被查询对象对应的关键词,本申请实施例对此不作限定。
可选地,服务端可以采用同态加密算法对数据集对应的所有ID进行加密,得到第一密文,诸如上述实施例中的基于椭圆曲线的ElGamal同态加密算法。可选地,还可以采用基于大整数域的离散对数困难问题的ElGamal算法,并结合加法同态,也即利用ElGamal的加法同态性,进行第一密文的生成,本申请实施例对此不作限定。
在一个示例中,以基于椭圆曲线的ElGamal同态加密算法为例,如图6所示,步骤501还可以包括如下几个子步骤:
步骤501a,调用第一哈希函数,对数据集对应的ID进行哈希,得到数据集对应的哈希值;其中,第一哈希函数用于生成服务端对应的明文空间。
可选地,服务端可以调用第一哈希函数对数据集对应的所有ID进行哈希,得到各个ID分别对应的哈希值,也即得到各个ID分别对应的明文。
示例性地,客户端调用第一哈希函数:分别对{id1,id2,...,idL}进行哈希,得到L个ID分别对应的哈希值,记为/>j=0,1,2,...,L。
步骤501b,基于数据集对应的哈希值构建零化多项式。
可选地,对于任意xj,该零化多项式的值为零,该零化多项式可以表示如下:
F(X)=f0+f1X+f2X2+...+fLXL
其中,fL为第L个ID的哈希值对应的系数。
步骤501c,对零化多项式的系数进行加密,得到加密系数。
可选地,服务端可以采用基于椭圆曲线的ElGamal同态加密算法对应的公钥PK加密该零化多项式的每个系数。在一个示例中,加密系数的获取过程可以如下:
1、对于零化多项式对应的目标系数,从明文空间中随机获取目标系数对应的目标随机参数。
其中,目标系数可以是指零化多项式对应的多个系数中的任一系数。
示例性地,对于目标系数fi,fi对应的目标随机参数记为:ri是从从/>中随机选择得到的。
2、获取目标随机参数与第一生成元之间的第一乘积。
可选地,目标系数对应的第一乘积可以表示为:ri·G,其中,G为第一生成元,第一生成元是从服务端对应的椭圆曲线群中随机选择的。
3、获取服务端的公钥和目标随机参数之间的第二乘积。
可选地,目标系数对应的第二乘积可以表示为:ri·PK,其中,PK为服务端的公钥,该公钥是基于服务端的私钥生成的,私钥是从明文空间中随机选择的。
4、获取目标系数和第二生成元之间的第三乘积。
可选地,目标系数对应的第三乘积可以表示为:fi·H,其中,H为第二生成元,第二生成元也是从服务端对应的椭圆曲线群中随机选择的。
5、对第二乘积和第三乘积进行求和,得到第一和值。
可选地,目标系数对应的第一和值可以表示为:ri·PK+fi·H。
6、基于第一乘积和第二和值,得到目标系数对应的加密系数。
可选地,目标系数对应的加密系数可以表示为:该加密系数也可以简记为:cti=(Ci,0,Ci,1)。
则系数加密后的零化多项式可以表示为:
Enc(F(X))=ct0+ct1X+ct2X2+...+ctLXL
步骤501d,基于加密系数,生成第一密文。
可选地,服务端可以直接将L个加密系数作为第一密文,并将该L个加密系数发送给客户端。在选用ed25519椭圆曲线的情况下,上述加密系数的长度为64字节,则第一密文的长度为64*L个字节,从而有利于隐匿查询的通信量的降低。
步骤502,接收来自客户端的第一反馈参数,该第一反馈参数是客户端基于查询ID和第一密文生成的,第一反馈参数用于确定数据集对应的ID中是否存在与查询ID相匹配的ID。
客户端在接收第一密文之后,基于查询ID和第一密文生成第一反馈参数,并将该第一反馈参数发送给服务端。其中,第一反馈参数包括第一子反馈参数和第二子反馈参数,第一子反馈参数是基于盲化参数、第一生成元和随机多项式在查询ID处的取值生成的,第二子反馈参数是基于盲化参数、第一取值、第二生成元、服务端的公钥和随机多项式在查询ID处的取值生成的,盲化参数是从明文空间中随机选择得到的,第一取值是指系数加密后的零化多项式在查询ID处的取值,系数加密后的零化多项式是由第一密文对应的加密系数构建的,随机多项式是基于加密系数在加密过程中对应的随机参数构建的。
示例性地,第一反馈参数可以表示为(C0,C1),其中,第一子反馈参数可以表示为:C0=r·R(x)·G=(C0,0+x·C1,0+x2·C2,0+...+xL·CL,0),第二子反馈参数可以表示为:C1=r·(R(x)·PK+Enc(F(x))·H)=(C0,1+x·C1,1+x2·C2,1+...+xL·CL,1),为盲化参数,R(x)为随机多项式在查询ID处的取值。
步骤503,在第一反馈参数满足第一条件的情况下,对数据集中的数据进行加密,生成第二密文,以及向客户端发送第二密文;其中,第一条件用于指示数据集对应的ID中存在与查询ID相匹配的ID。
在一个示例中,上述第一条件为第一反馈参数中的第一子反馈参数和服务端的私钥的乘积与第一反馈参数中的第二子反馈参数相等。
客户端在接收到第一反馈参数(C0,C1)之后,可以用私钥sk判断sk·C0是否等于C1。若sk·C0等于C1,则可以判断数据集对应的ID中存在与查询ID相匹配的ID;若sk·C0不等于C1,则可以判断数据集对应的ID中不存在与查询ID相匹配的ID。也即,sk·C0=C1等价于(C0,C1)对应的明文为0,等价于查询ID对应的第一哈希值x∈{x1,x2,x3,...,xL},等价于查询ID在{id1,id2,...,idL}里。由于本申请实施例只需确定第一子反馈参数和私钥之间的乘积与第二子反馈参数是否相等,即可判断出查询ID是否匹配,相比于通过根基第一反馈参数解码得到对应的明文来判断查询ID是否匹配,降低了判定工作量,进一步提高了隐匿查询的效率。
在另一个示例中,上述第一反馈参数对应的第一明文为0。
客户端在接收到第一反馈参数(C0,C1)之后,可以用私钥对同态计算后的第一反馈参数进行解密,得到第一明文。若第一明文为0,则可以判断数据集对应的ID中存在与查询ID相匹配的ID。若第一明文不为0,则可以判断数据集对应的ID中不存在与查询ID相匹配的ID。
可选地,在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,客户端对数据集中的数据进行加密,生成第二密文,以及向客户端发送第二密文。在确定数据集对应的ID中不存在与查询ID相匹配的ID的情况下,客户端生成协议终止信息,并向客户端发送协议终止信息,以指示本次在线隐匿查询结束。
在一个示例中,服务端可以采用对称加密算法生成第二密文,该过程可以包括如下内容:
1、对于数据集中的目标数据,调用服务端对应的第一哈希函数,对目标数据对应的目标ID进行哈希,得到目标数据对应的目标哈希值。
其中,目标数据可以是指数据集中的任一数据。
可选地,客户端调用第一哈希函数:对目标数据vj进行哈希,得到目标哈希值:yj
2、获取随机多项式在目标哈希值处的目标取值。
可选地,目标数据对应的目标取值可以表示为:/>
3、根据目标取值和第二子反馈参数,生成目标中间参数。
可选地,目标数据对应的目标中间参数可以表示为:
4、调用第二哈希函数,对目标中间参数进行哈希,得到目标数据对应的中间初始向量和密钥;其中,第二哈希函数用于基于服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间。上述密钥是指对称加密算法对应的密钥。
可选地,服务端调用第二哈希函数:计算这里的t1用于表示目标数据对应的中间初始向量,其对应左λ比特,这里的t2用于表示目标数据对应的密钥,其对应右λ比特。
本申请实施例利用第二子反馈参数对数据集中的每个数据派生对称加密的初始向量和密钥,再利用该密钥加密对应的数据,若客户端的查询ID在服务端对应的ID集里,则服务端计算的中一定有一个中间参数等于r·PK,因此客户端可以根据r·PK派生出查询ID对应的目标初始向量和密钥,以解密第一密文得到查询ID对应的查询数据。
5、调用第三哈希函数,对中间初始向量和目标ID之间的拼接结果进行哈希,得到目标数据对应的初始向量;其中,第三哈希函数用于生成第二安全参数下的第二数据空间,第二安全参数与第一安全参数相关联。
可选地,目标数据对应的初始向量可以表示为:H3(t1||idj),idj为目标数据对应的ID,H3()为第三哈希函数。
6、根据目标数据对应的密钥和初始向量,对目标数据进行加密,得到目标数据对应的子密文。
可选地,服务端采用对称加密算法,基于目标数据对应的密钥对目标数据进行加密,得到目标数据对应的子密文。
服务端采用与上述相同的方法,分别获取数据集中各个数据分别对应的子密文。
7、基于数据集中的各个数据分别对应的初始向量和子密文,生成第二密文。
对于每个数据,服务端以初始向量和子密文对的形式,构建密文对,进而基于多个密文对生成第二密文。最后服务端将第二密文发送给客户端。
在本申请实施例中,令则C1=s·r·PK,/>如果客户端不用盲化参数r,则此时/>由于服务端已知查询ID匹配,则有s∈{s1,s2,...,sL},当出现/>时,s=sj,这说明查询ID等于idj,从而造成查询ID泄露。因此,为了避免查询ID的泄露,客户端必须利用盲化参数对上述第一取值进行盲化。对于服务端只能确定s等于sj的概率为1/L,从而使得查询ID不泄露。
在一个示例性实施例中,经过实测,本申请实施例提供的隐匿查询方法可以实现1-10和1-100的在线隐匿查询。示例性地,在CentOS Linux操作系统,Intel Xeon(R)、6132、2.50GHZ、32G内存下,本申请实施例提供的隐匿查询方法与基于BlindRSA隐匿查询方法,在单核单线程下的性能对比如下述表1:
表1
如表1所示,本申请实施例提供的技术方案增加了客户端知道查询ID是否匹配的功能,进而保证客户端的经济收益。同时,本申请实施例的查询效率比基于BlindRSA隐匿查询的查询效率快1-1.5倍。另外,由于本申请实施例提供的技术方案采用了基于椭圆曲线的ElGamal同态加密算法,性能明显优于基于BlindRSA隐匿查询方法,且相比于基于BlindRSA隐匿查询方法,本申请实施例提供的技术方案的通信量降低约4倍,相比于基于OPRF(Oblivious Pseudo Random Function,不经意伪随机函数)的隐匿查询方法,本申请实施例提供的技术方案的通信量降低约1倍。
在一个示例性实施例中,由于在线隐匿查询是建立在PSI(Private SetIntersection,私有集合交集)的基础上的,为了增加客户端知道查询ID是否匹配这个功能,可以将PSI电路化,并将查询ID作为客户端的输出和将查询ID是否匹配作为服务端的输出,此时,利用GC(Garbled Circuits,混淆电路)执行PSI,则客户端得到与查询ID相匹配的随机值,而服务端获知查询ID是否匹配,最后客户端将得到的随机值用对称加密算法转化为隐匿查询。
综上所述,本申请实施例提供的技术方案,在隐匿查询过程中,客户端先基于数据集对应的ID加密生成的第一密文和查询ID,计算得到用于确定数据集对应的ID中是否存在与查询ID相匹配的ID的第一反馈参数,进而服务端基于该第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,使得服务端能够主动感知查询ID是否配,而无需被动地从客户端获取该信息,从而提高了服务端的抗风险能力,进而避免客户端作恶给服务端带来经济损失的风险。
另外,服务端在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成第二密文,客户端再根据查询ID从第二密文中提取查询ID对应的查询数据,实现了查询ID和数据集中的数据不泄露,从而保持了隐匿查询的安全性。
另外,本申请实施例只需确定第一子反馈参数和私钥之间的乘积与第二子反馈参数是否相等,即可判断出查询ID是否匹配,相比于通过根基第一反馈参数解码得到对应的明文来判断查询ID是否匹配,降低了判定工作量,进一步提高了隐匿查询的效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请一个实施例提供的隐匿查询装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备中。如图7所示,该装置700包括:请求发送模块701、密文接收模块702、参数计算模块703和数据提取模块704。
请求发送模块701,用于向服务端发送隐匿查询请求;其中,所述服务端对应存储有数据集。
密文接收模块702,用于接收来自所述服务端的第一密文,所述第一密文是基于所述数据集中的数据对应的身份标识号ID加密生成的。
参数计算模块703,用于基于查询ID和所述第一密文,计算得到第一反馈参数,以及向所述服务端发送所述第一反馈参数;其中,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID。
所述密文接收模块702,还用于接收来自所述服务端的第二密文,所述第二密文是所述服务端在根据所述第一反馈参数确定所述数据集对应的ID中存在与所述查询ID相匹配的ID的情况下,基于所述数据集中的数据加密生成的。
数据提取模块704,用于根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据。
在一些实施例中,所述第一密文包括多个加密系数,所述加密系数是对基于所述数据集对应的ID构建的零化多项式的系数进行加密得到的;
如图8所示,所述参数计算模块703,包括:多项式构建子模块703a、取值获取子模块703b和参数计算子模块703c。
多项式构建子模块703a,用于根据所述多个加密系数,构建系数加密后的零化多项式。
取值获取子模块703b,用于获取所述系数加密后的零化多项式在所述查询ID处的第一取值。
参数计算子模块703c,用于采用盲化参数对所述第一取值进行盲化,得到所述第一反馈参数;其中,所述盲化参数是从所述服务端对应的明文空间中随机选择得到的,所述明文空间是通过第一哈希函数基于所述数据集对应的ID构建的。
在一些实施例中,所述取值获取子模块703b,用于:
调用所述第一哈希函数对所述查询ID进行哈希,得到所述查询ID对应的第一哈希值;
同态计算所述系数加密后的零化多项式在所述第一哈希值处的取值,得到所述第一取值。
在一些实施例中,所述加密系数是采用同态加密算法对所述零化多项式的系数进行加密得到的,所述同态加密算法对应设置有私钥和公钥,所述私钥是从所述明文空间中选择的,所述公钥是基于所述私钥生成的;所述参数计算子模块703c,用于:
采用所述盲化参数、第一生成元和随机多项式在所述查询ID处的取值,生成第一子反馈参数;
基于所述盲化参数、所述第一取值、第二生成元、所述公钥和所述随机多项式在所述查询ID处的取值,生成第二子反馈参数;
基于所述第一子反馈参数和所述第二子反馈参数,得到所述第一反馈参数;
其中,所述第一生成元和所述第二生成元是从所述椭圆曲线群中选择的,所述随机多项式是基于所述加密系数在加密过程中对应的随机参数构建的。
在一些实施例中,所述第二密文包括多个密文对,每个密文对包括一个初始向量和子密文,所述子密文为数据加密后的密文;所述数据提取模块704,用于:
调用第二哈希函数,对所述服务端对应的公钥和盲化参数之间的乘积进行哈希,得到第一中间参数和第二中间参数;其中,所述第二哈希函数用于基于所述服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间,所述第一中间参数用于确定目标初始向量,所述第二中间参数为所述查询ID对应的密钥;
调用第三哈希函数,对所述第一中间参数和所述查询ID之间的拼接结果进行哈希,得到所述查询ID对应的目标初始向量;其中,所述第三哈希函数用于生成第二安全参数下的第二数据空间,所述第二安全参数与所述第一安全参数相关联;
采用所述第二中间参数和所述目标初始向量,对所述目标初始向量对应的子密文进行解密,得到所述查询ID对应的查询数据。
综上所述,本申请实施例提供的技术方案,在隐匿查询过程中,客户端先基于数据集对应的ID加密生成的第一密文和查询ID,计算得到用于确定数据集对应的ID中是否存在与查询ID相匹配的ID的第一反馈参数,进而服务端基于该第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,使得服务端能够主动感知查询ID是否配,而无需被动地从客户端获取该信息,从而提高了服务端的抗风险能力,进而避免客户端作恶给服务端带来经济损失的风险。
另外,服务端在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成第二密文,客户端再根据查询ID从第二密文中提取查询ID对应的查询数据,实现了查询ID和数据集中的数据不泄露,从而保持了隐匿查询的安全性。
请参考图9,其示出了本申请另一个实施例提供的隐匿查询装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备中。如图9所示,该装置900包括:密文生成模块901和参数接收模块902。
密文生成模块901,用于响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向所述客户端发送所述第一密文。
参数接收模块902,用于接收来自所述客户端的第一反馈参数,所述第一反馈参数是所述客户端基于查询ID和所述第一密文生成的,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID。
所述密文生成模块901,还用于在所述第一反馈参数满足第一条件的情况下,对所述数据集中的数据进行加密,生成第二密文,以及向所述客户端发送所述第二密文;其中,所述第一条件用于指示所述数据集对应的ID中存在与所述查询ID相匹配的ID。
在一些实施例中,如图10所示,所述密文生成模块901,包括:哈希值获取子模块901a、多项式构建子模块901b、系数加密子模块901c和密文生成子模块901d。
哈希值获取子模块901a,用于调用第一哈希函数,对所述数据集对应的ID进行哈希,得到所述数据集对应的哈希值;其中,所述第一哈希函数用于生成所述服务端对应的明文空间。
多项式构建子模块901b,用于基于所述数据集对应的哈希值构建零化多项式。
系数加密子模块901c,用于对所述零化多项式的系数进行加密,得到加密系数。
密文生成子模块901d,用于基于所述加密系数,生成所述第一密文。
在一些实施例中,所述系数加密子模块901c,用于:
对于所述零化多项式对应的目标系数,从所述明文空间中随机获取所述目标系数对应的目标随机参数;
获取所述目标随机参数与第一生成元之间的第一乘积;
获取所述服务端的公钥和所述目标随机参数之间的第二乘积;
获取所述目标系数和第二生成元之间的第三乘积;
对所述第二乘积和所述第三乘积进行求和,得到第一和值;
基于所述第一乘积和所述第二和值,得到所述目标系数对应的加密系数;
其中,所述第一生成元和所述第二生成元是从所述服务端对应的椭圆曲线群中选择的,所述服务端的公钥是基于所述服务端的私钥生成的,所述私钥是从所述明文空间中选择的。
在一些实施例中,所述第一反馈参数包括第一子反馈参数和第二子反馈参数,所述第一子反馈参数是基于盲化参数、第一生成元和随机多项式在所述查询ID处的取值生成的,所述第二子反馈参数是基于所述盲化参数、第一取值、第二生成元、所述服务端的公钥和所述随机多项式在所述查询ID处的取值生成的,所述盲化参数是从所述明文空间中随机选择得到的,所述第一取值是指系数加密后的零化多项式在所述查询ID处的取值,所述系数加密后的零化多项式是由所述第一密文对应的加密系数构建的,所述随机多项式是基于所述加密系数在加密过程中对应的随机参数构建的;所述密文生成子模块901d,用于:
对于所述数据集中的目标数据,调用所述服务端对应的第一哈希函数,对所述目标数据对应的目标ID进行哈希,得到所述目标数据对应的目标哈希值;
获取所述随机多项式在所述目标哈希值处的目标取值;
根据所述目标取值和所述第二子反馈参数,生成目标中间参数;
调用第二哈希函数,对所述目标中间参数进行哈希,得到所述目标数据对应的中间初始向量和密钥;其中,所述第二哈希函数用于基于所述服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间;
调用第三哈希函数,对所述中间初始向量和所述目标ID之间的拼接结果进行哈希,得到所述目标数据对应的初始向量;其中,所述第三哈希函数用于生成第二安全参数下的第二数据空间,所述第二安全参数与所述第一安全参数相关联;
根据所述目标数据对应的密钥和初始向量,对所述目标数据进行加密,得到所述目标数据对应的子密文;
基于所述数据集中的各个数据分别对应的初始向量和子密文,生成所述第二密文。
在一些实施例中,所述第一条件为所述第一反馈参数中的第一子反馈参数和所述服务端的私钥的乘积与所述第一反馈参数中的第二子反馈参数相等;
或者,所述第一反馈参数对应的第一明文为0。
综上所述,本申请实施例提供的技术方案,在隐匿查询过程中,客户端先基于数据集对应的ID加密生成的第一密文和查询ID,计算得到用于确定数据集对应的ID中是否存在与查询ID相匹配的ID的第一反馈参数,进而服务端基于该第一反馈参数确定数据集对应的ID中是否存在与查询ID相匹配的ID,使得服务端能够主动感知查询ID是否配,而无需被动地从客户端获取该信息,从而提高了服务端的抗风险能力,进而避免客户端作恶给服务端带来经济损失的风险。
另外,服务端在确定数据集对应的ID中存在与查询ID相匹配的ID的情况下,基于数据集中的数据加密生成第二密文,客户端再根据查询ID从第二密文中提取查询ID对应的查询数据,实现了查询ID和数据集中的数据不泄露,从而保持了隐匿查询的安全性。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图11,其示出了本申请一个实施例提供的计算机设备的结构示意图。该计算机设备可以是任何具备数据计算、处理和存储功能的电子设备,该计算机设备可以用于实施上述实施例中提供的隐匿查询方法。具体来讲可以包括如下内容。。
该计算机设备1100包括中央处理单元(如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)和FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)等)1101、包括RAM(Random-Access Memory,随机存取存储器)1102和ROM(Read-Only Memory,只读存储器)1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。该计算机设备1100还包括帮助服务器内的各个器件之间传输信息的基本输入/输出系统(Input Output System,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。
在一些实施例中,该基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中,该显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。该基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。该大容量存储设备1107及其相关联的计算机可读介质为计算机设备1100提供非易失性存储。也就是说,该大容量存储设备1107可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)、闪存或其他固态存储技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。
根据本申请实施例,该计算机设备1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1100可以通过连接在该系统总线1105上的网络接口单元1111连接到网络1112,或者说,也可以使用网络接口单元1111来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括计算机程序,该计算机程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述隐匿查询方法。
在一些实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被处理器执行时以实现上述隐匿查询方法。
可选地,该计算机可读存储介质可以包括:ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存储器)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在一些实施例中,还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质中读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述隐匿查询方法。
需要说明的是,本申请所涉及的信息(包括但不限于对象设备信息、对象个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经对象授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的查询ID、数据集等都是在充分授权的情况下获取的。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种隐匿查询方法,其特征在于,所述方法包括:
向服务端发送隐匿查询请求;其中,所述服务端对应存储有数据集;
接收来自所述服务端的第一密文,所述第一密文是基于所述数据集中的数据对应的身份标识号ID加密生成的;
基于查询ID和所述第一密文,计算得到第一反馈参数,以及向所述服务端发送所述第一反馈参数;其中,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
接收来自所述服务端的第二密文,所述第二密文是所述服务端在根据所述第一反馈参数确定所述数据集对应的ID中存在与所述查询ID相匹配的ID的情况下,基于所述数据集中的数据加密生成的;
根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据。
2.根据权利要求1所述的方法,其特征在于,所述第一密文包括多个加密系数,所述加密系数是对基于所述数据集对应的ID构建的零化多项式的系数进行加密得到的;
所述基于查询ID和所述第一密文,计算得到第一反馈参数,包括:
根据所述多个加密系数,构建系数加密后的零化多项式;
获取所述系数加密后的零化多项式在所述查询ID处的第一取值;
采用盲化参数对所述第一取值进行盲化,得到所述第一反馈参数;其中,所述盲化参数是从所述服务端对应的明文空间中随机选择得到的,所述明文空间是通过第一哈希函数基于所述数据集对应的ID构建的。
3.根据权利要求2所述的方法,其特征在于,所述获取所述系数加密后的零化多项式在所述查询ID处的第一取值,包括:
调用所述第一哈希函数对所述查询ID进行哈希,得到所述查询ID对应的第一哈希值;
同态计算所述系数加密后的零化多项式在所述第一哈希值处的取值,得到所述第一取值。
4.根据权利要求2所述的方法,其特征在于,所述加密系数是采用同态加密算法对所述零化多项式的系数进行加密得到的,所述同态加密算法对应设置有私钥和公钥,所述私钥是从所述明文空间中选择的,所述公钥是基于所述私钥生成的;
所述采用盲化参数对所述第一取值进行盲化,得到所述第一反馈参数,包括:
采用所述盲化参数、第一生成元和随机多项式在所述查询ID处的取值,生成第一子反馈参数;
基于所述盲化参数、所述第一取值、第二生成元、所述公钥和所述随机多项式在所述查询ID处的取值,生成第二子反馈参数;
基于所述第一子反馈参数和所述第二子反馈参数,得到所述第一反馈参数;
其中,所述第一生成元和所述第二生成元是从所述椭圆曲线群中选择的,所述随机多项式是基于所述加密系数在加密过程中对应的随机参数构建的。
5.根据权利要求1所述的方法,其特征在于,所述第二密文包括多个密文对,每个密文对包括一个初始向量和子密文,所述子密文为数据加密后的密文;
所述根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据,包括:
调用第二哈希函数,对所述服务端对应的公钥和盲化参数之间的乘积进行哈希,得到第一中间参数和第二中间参数;其中,所述第二哈希函数用于基于所述服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间,所述第一中间参数用于确定目标初始向量,所述第二中间参数为所述查询ID对应的密钥;
调用第三哈希函数,对所述第一中间参数和所述查询ID之间的拼接结果进行哈希,得到所述查询ID对应的目标初始向量;其中,所述第三哈希函数用于生成第二安全参数下的第二数据空间,所述第二安全参数与所述第一安全参数相关联;
采用所述第二中间参数和所述目标初始向量,对所述目标初始向量对应的子密文进行解密,得到所述查询ID对应的查询数据。
6.一种隐匿查询方法,其特征在于,所述方法包括:
响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向所述客户端发送所述第一密文;
接收来自所述客户端的第一反馈参数,所述第一反馈参数是所述客户端基于查询ID和所述第一密文生成的,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
在所述第一反馈参数满足第一条件的情况下,对所述数据集中的数据进行加密,生成第二密文,以及向所述客户端发送所述第二密文;其中,所述第一条件用于指示所述数据集对应的ID中存在与所述查询ID相匹配的ID。
7.根据权利要求6所述的方法,其特征在于,所述基于数据集中的数据对应的身份标识号ID加密生成第一密文,包括:
调用第一哈希函数,对所述数据集对应的ID进行哈希,得到所述数据集对应的哈希值;其中,所述第一哈希函数用于生成所述服务端对应的明文空间;
基于所述数据集对应的哈希值构建零化多项式;
对所述零化多项式的系数进行加密,得到加密系数;
基于所述加密系数,生成所述第一密文。
8.根据权利要求7所述的方法,其特征在于,所述对所述零化多项式的系数进行加密,得到加密系数,包括:
对于所述零化多项式对应的目标系数,从所述明文空间中随机获取所述目标系数对应的目标随机参数;
获取所述目标随机参数与第一生成元之间的第一乘积;
获取所述服务端的公钥和所述目标随机参数之间的第二乘积;
获取所述目标系数和第二生成元之间的第三乘积;
对所述第二乘积和所述第三乘积进行求和,得到第一和值;
基于所述第一乘积和所述第二和值,得到所述目标系数对应的加密系数;
其中,所述第一生成元和所述第二生成元是从所述服务端对应的椭圆曲线群中选择的,所述服务端的公钥是基于所述服务端的私钥生成的,所述私钥是从所述明文空间中选择的。
9.根据权利要求6所述的方法,其特征在于,所述第一反馈参数包括第一子反馈参数和第二子反馈参数,所述第一子反馈参数是基于盲化参数、第一生成元和随机多项式在所述查询ID处的取值生成的,所述第二子反馈参数是基于所述盲化参数、第一取值、第二生成元、所述服务端的公钥和所述随机多项式在所述查询ID处的取值生成的,所述盲化参数是从所述明文空间中随机选择得到的,所述第一取值是指系数加密后的零化多项式在所述查询ID处的取值,所述系数加密后的零化多项式是由所述第一密文对应的加密系数构建的,所述随机多项式是基于所述加密系数在加密过程中对应的随机参数构建的;
所述对所述数据集中的数据进行加密,生成第二密文,包括:
对于所述数据集中的目标数据,调用所述服务端对应的第一哈希函数,对所述目标数据对应的目标ID进行哈希,得到所述目标数据对应的目标哈希值;
获取所述随机多项式在所述目标哈希值处的目标取值;
根据所述目标取值和所述第二子反馈参数,生成目标中间参数;
调用第二哈希函数,对所述目标中间参数进行哈希,得到所述目标数据对应的中间初始向量和密钥;其中,所述第二哈希函数用于基于所述服务端对应的椭圆曲线群获取第一安全参数下的第一数据空间;
调用第三哈希函数,对所述中间初始向量和所述目标ID之间的拼接结果进行哈希,得到所述目标数据对应的初始向量;其中,所述第三哈希函数用于生成第二安全参数下的第二数据空间,所述第二安全参数与所述第一安全参数相关联;
根据所述目标数据对应的密钥和初始向量,对所述目标数据进行加密,得到所述目标数据对应的子密文;
基于所述数据集中的各个数据分别对应的初始向量和子密文,生成所述第二密文。
10.根据权利要求6至9任一项所述的方法,其特征在于,
所述第一条件为所述第一反馈参数中的第一子反馈参数和所述服务端的私钥的乘积与所述第一反馈参数中的第二子反馈参数相等;
或者,
所述第一反馈参数对应的第一明文为0。
11.一种隐匿查询装置,其特征在于,所述装置包括:
请求发送模块,用于向服务端发送隐匿查询请求;其中,所述服务端对应存储有数据集;
密文接收模块,用于接收来自所述服务端的第一密文,所述第一密文是基于所述数据集中的数据对应的身份标识号ID加密生成的;
参数计算模块,用于基于查询ID和所述第一密文,计算得到第一反馈参数,以及向所述服务端发送所述第一反馈参数;其中,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
所述密文接收模块,还用于接收来自所述服务端的第二密文,所述第二密文是所述服务端在根据所述第一反馈参数确定所述数据集对应的ID中存在与所述查询ID相匹配的ID的情况下,基于所述数据集中的数据加密生成的;
数据提取模块,用于根据所述查询ID从所述第二密文中,提取得到所述查询ID对应的查询数据。
12.一种隐匿查询装置,其特征在于,所述装置包括:
密文生成模块,用于响应于接收来自客户端的隐匿查询请求,基于数据集中的数据对应的身份标识号ID加密生成第一密文,以及向所述客户端发送所述第一密文;
参数接收模块,用于接收来自所述客户端的第一反馈参数,所述第一反馈参数是所述客户端基于查询ID和所述第一密文生成的,所述第一反馈参数用于确定所述数据集对应的ID中是否存在与所述查询ID相匹配的ID;
所述密文生成模块,还用于在所述第一反馈参数满足第一条件的情况下,对所述数据集中的数据进行加密,生成第二密文,以及向所述客户端发送所述第二密文;其中,所述第一条件用于指示所述数据集对应的ID中存在与所述查询ID相匹配的ID。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至5任一项所述的隐匿查询方法,或者实现如权利要求6至10任一项所述的隐匿查询方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至5任一项所述的隐匿查询方法,或者实现如权利要求6至10任一项所述的隐匿查询方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机指令,以实现如权利要求1至5任一项所述的隐匿查询方法,或者实现如权利要求6至10任一项所述的隐匿查询方法。
CN202211152875.4A 2022-09-21 2022-09-21 隐匿查询方法、装置、设备及存储介质 Pending CN116991864A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211152875.4A CN116991864A (zh) 2022-09-21 2022-09-21 隐匿查询方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211152875.4A CN116991864A (zh) 2022-09-21 2022-09-21 隐匿查询方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116991864A true CN116991864A (zh) 2023-11-03

Family

ID=88530821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211152875.4A Pending CN116991864A (zh) 2022-09-21 2022-09-21 隐匿查询方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116991864A (zh)

Similar Documents

Publication Publication Date Title
US10826680B2 (en) Collation system, collation method, and non-transitory recording medium
CN107959567B (zh) 数据存储方法、数据获取方法、装置及系统
US20210143987A1 (en) Privacy-preserving federated learning
US8958552B2 (en) Data processing device
CN111931253A (zh) 基于节点群的数据处理方法、系统、设备和介质
US8898478B2 (en) Method for querying data in privacy preserving manner using attributes
US9602280B2 (en) System and method for content encryption in a key/value store
US20120294445A1 (en) Credential storage structure with encrypted password
US20160330017A1 (en) Method and system for additive homomorphic encryption scheme with operation error detection functionality
CN109691010B (zh) 用于数据传输的系统和方法
CN115269938B (zh) 基于同态加密的关键词匿踪查询方法、系统及相关装置
CN109067517B (zh) 加密、解密装置、加密、解密方法和隐藏密钥的通信方法
CN116032667B (zh) 支持高效更新的在线匿踪查询方法、系统及相关设备
US9660813B1 (en) Dynamic privacy management for communications of clients in privacy-preserving groups
CN116324778A (zh) 可更新私有集合交集
CN115499249A (zh) 一种基于区块链分布式加密的文件存储方法及系统
CN110443069A (zh) 一种移动社交网络隐私保护的方法、系统及设备
WO2023134576A1 (zh) 数据加密方法、属性授权中心及存储介质
CN116991864A (zh) 隐匿查询方法、装置、设备及存储介质
KR100617456B1 (ko) 비밀키 관리 기능을 가지는 비밀키 단말장치 및 비밀키관리방법
JPWO2018043466A1 (ja) データ抽出システム、データ抽出方法、登録装置及びプログラム
Park et al. A symmetric key based deduplicatable proof of storage for encrypted data in cloud storage environments
JP2013148822A (ja) 検索可能暗号システム、検索装置、計算装置、及びプログラム
CN117749527B (zh) 基于大数据分析和云计算的安全防护方法及系统
KR102629617B1 (ko) 속성 기반 접근 제어를 지원하는 실시간 IoT 데이터 공유 시스템 및 그 방법

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