CN116324778A - 可更新私有集合交集 - Google Patents
可更新私有集合交集 Download PDFInfo
- Publication number
- CN116324778A CN116324778A CN202180067200.7A CN202180067200A CN116324778A CN 116324778 A CN116324778 A CN 116324778A CN 202180067200 A CN202180067200 A CN 202180067200A CN 116324778 A CN116324778 A CN 116324778A
- Authority
- CN
- China
- Prior art keywords
- computer system
- intersection
- subset
- elements
- new
- 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
Links
- 238000000034 method Methods 0.000 claims description 259
- 230000008569 process Effects 0.000 claims description 157
- 230000006870 function Effects 0.000 claims description 39
- 230000006854 communication Effects 0.000 claims description 33
- 238000004891 communication Methods 0.000 claims description 28
- 230000015654 memory Effects 0.000 claims description 15
- 239000000654 additive Substances 0.000 claims description 12
- 230000000996 additive effect Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 11
- 230000001010 compromised effect Effects 0.000 claims description 6
- 208000015181 infectious disease Diseases 0.000 claims description 6
- 208000035473 Communicable disease Diseases 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 5
- 101100379080 Emericella variicolor andB gene Proteins 0.000 claims description 4
- 230000002354 daily effect Effects 0.000 description 9
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000005180 public health Effects 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003203 everyday effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003442 weekly effect Effects 0.000 description 3
- 241000544061 Cuculus canorus Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- PGLIUCLTXOYQMV-UHFFFAOYSA-N Cetirizine hydrochloride Chemical compound Cl.Cl.C1CN(CCOCC(=O)O)CCN1C(C=1C=CC(Cl)=CC=1)C1=CC=CC=C1 PGLIUCLTXOYQMV-UHFFFAOYSA-N 0.000 description 1
- 102100025471 Epiphycan Human genes 0.000 description 1
- 101001056751 Homo sapiens Epiphycan Proteins 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 229960001948 caffeine Drugs 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000014599 transmission of virus Effects 0.000 description 1
- RYYVLZVUVIJVGH-UHFFFAOYSA-N trimethylxanthine Natural products CN1C(=O)N(C)C(=O)C2=C1N=CN2C RYYVLZVUVIJVGH-UHFFFAOYSA-N 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/50—Oblivious transfer
Abstract
“可更新”私有集合交集(PSI)协议允许各自具有可更新私有集合的各方在更新之后确定其集合的交集,而不需要比较每个集合的每个元素并且不损害隐私。在一些协议中,第一方可以通过确定先前在第一方集合中的元素与添加到第二方集合的元素的交集,以及确定添加到第一方集合的元素与在第二方(更新的)集合中的元素的交集来确定对所述交集的更新。在一些协议中,双方可以确定更新的交集。
Description
相关申请交叉引用
本申请主张2020年10月8日提交的第63/089,359号美国申请的权益,所述美国申请的公开内容以引用的方式并入本文中。
背景技术
“私有集合交集”或“PSI”是指计算机实施的协议,其允许双方中的一方或双方确定与第一方相关联的第一集合和与第二方相关联的第二集合的交集。协议被设计成使得一方(或双方,取决于协议)可以学习交集,而不学习不在交集中的另一方集合的任何元素。例如,在追踪接触者以控制病毒传播的背景下,可能需要标识两个个体的共同接触者,而不需要任何一个个体学习另一个个体的接触者。PSI的一种已知方法涉及各方交换已被有效加密的元素的版本(例如,使用决策Diffie-Hellmann或DDH技术),使得接收方不能解密元素,但可以将它们与接收方自己的集合中的元素的对应加密版本进行比较以检测匹配。以此方式,接收方可以在不学习不在交集中的另一方集合的任何成员的情况下确定交集。
PSI的现有算法不能很好地适用于其中集合不时更新并且需要确定集合的更新交集的情况。例如,如果将新元素添加到一方的集合,则各方都必须再次处理(加密、发送和比较)其整个集合以确定交集。因此,PSI协议可能会变得资源密集型,特别是在集合较大的情况下。例如,计算时间可能随集合中元素的总数而准线性地调整,并且通信可能随集合中元素的总数而线性地调整。
发明内容
本文公开的某些实施例涉及用于“可更新PSI”的协议,所述协议可以减少执行PSI所需的计算工作量,以在可以不时更新集合的背景下更新两个集合的交集。本文公开的一些可更新PSI技术保留了这样的属性,即一方(或者如果需要的话,双方)可以在不学习另一方集合中不包括在交集中的任何元素的情况下学习交集。
一些实施例涉及可在第一计算机系统中执行的计算私有集合交集(PSI)的方法。例如,所述第一计算机系统可以定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括不在与对第二计算机系统私有的第二集合(B)的交集(A∩B)中的元素的第一残余子集Aold,其中所述第二集合B包括不在所述交集A∩B中的元素的第二残余子集(Bold)。所述第一计算机系统可以通过添加具有一个或多个新元素的第一新子集(Ad)来更新所述第一集合A。基于与所述第二计算机系统的第一通信过程,所述第一计算机系统可以确定所述第一残余子集Aold与具有已添加到所述第二集合B的一个或多个新元素的第二新子集Bd的第一部分交集(IA,old=Aold∩Bd),其中所述第一计算机系统仅学习所述第二新子集Bd的在所述第一部分交集IA,old中的元素。所述第一计算机系统可以从所述第二计算机系统接收第一加密集合(B′d),所述第一加密集合包括表示所述第二新子集Bd的加密元素和所述第二残余子集Bold的至少一些元素。在一些实施例中,所述第一计算机系统可以将包括表示所述第一新子集Ad的元素的第二加密集合提供到所述第二计算机系统,并且所述第一加密集合B′d可以包括所述第二新子集Bd与所述第一新子集Ad和所述第二残余子集Bold的交集(Ad∩Bold)的并集。在一些实施例中,所述第一加密集合所述第一加密集合B′d被接收为二叉树结构,所述二叉树结构包括对应于所述第二新子集Bd和所述第二残余子集Bold的所述元素的加密元素。基于与所述第二计算机系统的第二通信过程,所述第一计算机系统可以确定所述第一新子集Ad与所述第一加密集合B′d的第二部分交集(IA,new=Ad∩B′d),其中所述第一计算机系统仅学习所述第一加密集合B′d的在所述第二部分交集IA,new中的所述元素。所述第一计算机系统可以基于所述第一部分交集IA,old和所述第二部分交集IA,new更新所述交集A∩B,并且基于更新的交集更新所述第一残余子集Aold。在一些实施例中,所述第一计算机系统可以将更新的交集A∩B提供到所述第二计算机系统。针对多个连续更新周期中的每一个迭代地执行更新所述第一集合A、接收第一加密数据集合、确定所述第一部分交集、接收所述第一加密集合、确定所述第二部分交集、更新所述交集A∩B以及更新所述第一残余子集的操作。
一些实施例涉及可在第一计算机系统中执行的计算私有集合交集(PSI)的方法。所述第一计算机系统可以定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括不在与对第二计算机系统私有的第二集合(B)的交集(A∩B)中的元素的第一残余子集Aold,其中所述第二集合B包括不在所述交集A∩B中的元素的第二残余子集(Bold)。所述第一计算机系统可以通过添加具有一个或多个新元素(x)的第一新子集(Ad)来更新所述第一集合A。所述第一计算机系统可以从所述第二计算机系统接收表示所述第二集合B的二叉树结构,其中基于散列函数将所述第二集合B的每个元素分配到所述二叉树结构中的节点,并且其中加密所述二叉树结构,使得所述第二集合B的每个元素由所述分配节点中的密文表示。所述第一计算机系统可以处理所述第一新子集Ad中的每个新元素x,其中处理每个新元素x包括:针对所述新元素x标识所述二叉树结构的对应节点;在所述对应节点为非空的情况下,使用所述对应节点中的所述密文和与所述第二计算机系统的双方计算协议来确定所述新元素x是否匹配分配到所述对应节点的所述集合B的任何一个元素;以及在所述新元素x匹配分配到所述对应节点的集合B的元素的情况下,将所述新元素x添加到第一部分交集(IA,new);以及使用所述第一部分交集IA,new更新所述交集A∩B。在一些实施例中,所述第一计算机系统可以从所述第二计算机系统接收第一加密数据集合,所述第一加密数据集合表示具有已添加到所述第二集合B的一个或多个元素的第二新子集(Bd);使用所述第一加密数据集合以及所述第一残余子集Aold的对应加密表示,确定所述第一残余子集Aold与所述第二新子集Bd的所述第二部分交集(IA,old=Aold∩Bd);以及使用所述第二部分交集IA,old以及所述第一部分交集IA,new更新所述交集A∩B。在一些实施例中,针对多个连续更新周期中的每一个迭代地执行更新所述第一集合A、接收所述二叉树结构、处理添加集合Ad中的每个新元素x、接收所述第一加密数据集合、确定所述第二部分交集IA,old以及使用所述第二部分交集IA,old以及所述第一部分交集IA,new更新所述交集A∩B的操作。
一些实施例涉及可在第一计算机系统中执行的计算私有集合交集(PSI)的方法。所述第一计算机系统可以定义对所述第一计算机系统私有的第一集合(B),并通过添加具有一个或多个新元素的第一新子集(Bd)来更新所述第一集合B。所述第一计算机系统可以更新表示所述第一集合B的二叉树结构,其中基于散列函数将第二集合B的每个元素分配到所述二叉树结构中的节点(其可以是例如层级特定散列函数)。所述第一计算机系统可以加密所述二叉树结构(例如,使用加性同态加密方案),使得所述第二集合B的每个元素由所述分配节点中的密文表示。所述第一计算机系统可以将加密的二叉树结构发送到第二计算机系统,其中所述第二计算机系统具有对所述第二计算机系统私有的第二集合A。所述第一计算机系统可以参与与所述第二计算机系统的安全双方计算协议(例如,使用加性同态加密),所述安全双方计算协议使所述第二计算机系统能够确定所述第一集合B的哪些元素在与所述第二集合A的第二新子集(Ad)的交集(A∩B)中。在一些实施例中,针对多个连续更新周期中的每一个迭代地执行更新所述第一集合B、更新所述二叉树结构、加密所述二叉树结构、发送加密的二叉树结构以及参与所述安全双方计算协议的操作。
一些实施例涉及可在第一计算机系统中执行的计算私有集合交集(PSI)的方法。所述第一计算机系统可以定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括多个子集(Ad-t+1、...、Ad-1、Ad),每个子集与多个更新循环中的不同一个相关联,其中t是恒定持续时间并且d是更新循环计数器。所述第一计算机系统可以执行与第二计算机系统的私有集合交集过程的第一多个实例,其中所述第二计算机系统具有对所述第二计算机系统私有的第二集合(B),其中所述第二集合B包括多个子集(Bd-t+1、...、Bd-1、Bd),每个子集与所述多个更新循环中的不同一个相关联,并且其中对于所述私有集合交集过程的所述第一多个实例中的每一个,所述第一计算机系统使用选自所述子集Ad-t+1、...、Ad-1的不同子集(Aj)作为输入,并且所述第二计算机系统使用所述子集Bd作为输入。所述第一计算机系统可以基于所述私有集合交集过程的所述第一多个实例的输出确定第一部分交集所述第一计算机系统可以执行与所述第二计算机系统的私有集合交集过程的第二多个实例,其中对于所述私有集合交集过程的所述第二多个实例中的每一个,所述第一计算机系统使用所述子集Ad作为输入,并且所述第二计算机系统使用所述子集Bd-t+1、...、Bd-1中的不同一个作为输入,并且其中所述第二计算机系统基于所述私有集合交集过程的所述第二多个实例的输出确定第二部分交集所述第一计算机系统可以执行与所述第二计算机系统的所述私有集合交集过程的附加实例,其中对于所述私有集合交集过程的所述附加实例,所述第一计算机系统使用所述子集Ad作为输入,并且所述第二计算机系统使用包括所述子集Bd和所述第二部分交集I1,α的第三集合(B′)。基于所述私有集合交集过程的所述附加实例的输出,所述第一计算机系统可以确定第三部分交集/>所述第一计算机系统可以基于所述第一部分交集I0,α和所述第三部分交集I0,β确定交集A∩B。在一些实施例中,针对多个连续更新周期中的每一个迭代地执行以下操作:执行私有集合交集过程的所述第一多个实例、确定所述第一部分交集、执行所述私有集合交集过程的所述第二多个实例、执行所述私有集合交集过程的所述附加实例;确定所述第三部分交集;以及确定所述交集A∩B,其中所述更新循环计数器d针对每个更新周期递增。
以下详细描述与附图一起将提供对本发明实施例的更好理解。
附图说明
图1示出使用基于DDH的技术确定私有集合交集(PSI)的过程的流程图。
图2A-2C示出根据一些实施例的用于更新PSI的过程的流程图。
图3示出可以在一些实施例中使用的发送者流式传输PSI过程的流程图。
图4A和4B示出根据一些实施例的具有弱删除的可更新PSI的过程的流程图。
图5示出根据一些实施例的树更新过程的示例。
图6和7A-7C示出根据一些实施例的使用加密树结构实施单边可更新PSI过程的过程的流程图。
图8示出根据一些实施例的可以用于更新二叉树结构的过程的流程图。
术语
本文中可以使用以下术语。
“服务器计算机”可以包括功能强大的计算机或计算机群集。例如,服务器计算机可以是大型主机、小型计算机集群或作为一个单元运作的一组服务器。在一个示例中,服务器计算机可以是耦合到Web服务器的数据库服务器。服务器计算机可包括一个或多个计算设备,并且可使用各种计算结构、布置和编译中的任一种来服务来自一个或多个客户端计算机的请求。
“客户端”或“客户端计算机”可包括与服务器计算机通信以对服务器计算机发出请求并且接收响应的计算机系统或其它电子装置。例如,客户端可以是膝上型计算机或台式计算机、移动电话、平板电脑、智能扬声器、智能家居管理装置或任何其它用户可操作的电子装置。
“存储器”可包括可存储电子数据的合适的一个或多个装置。合适的存储器可包括非瞬态计算机可读介质,所述非瞬态计算机可读介质存储可由处理器执行以实施所需方法的指令。存储器的示例可以包括一个或多个存储器芯片、磁盘驱动器等。此类存储器可使用任何合适的电气、光学和/或磁性操作模式来操作。
“处理器”可包括任何合适的一个或多个数据计算装置。处理器可包括一起工作以实现所需功能的一个或多个微处理器。处理器可以包括CPU,所述CPU包括至少一个高速数据处理器,所述高速数据处理器足以执行用于执行用户和/或系统生成的请求的程序组件。CPU可以是微处理器,例如AMD的速龙(Athlon)、锐龙(Ryzen)和/或EPYC处理器;IBM和/或摩托罗拉(Motorola)的PowerPC;IBM和索尼(Sony)的Cell处理器;英特尔(Intel)的赛扬(Celeron)、奔腾(Pentium)、至强(Xeon)和/或核心处理器;和/或其它市售处理器。
“通信装置”可包括可以提供通信能力的任何电子装置,包括通过移动电话(无线)网络、无线数据网络(例如,3G、4G或类似网络)、Wi-Fi、Wi-Max或可提供对网络例如互联网或专用网络的访问的任何其它通信介质。通信装置的示例包括移动电话(例如,蜂窝电话)、PDA、平板计算机、上网本、膝上型计算机、个人音乐播放器、手持式专用阅读器、可穿戴装置(例如手表)、车辆(例如,汽车)等。通信装置可包括用于执行此类功能的任何合适的硬件和软件,并且还可包括多个装置或组件(例如,当装置通过系固到另一装置(即,使用另一装置作为中继器)而远程访问网络时,合在一起的两个装置可以被视为单个通信装置)。
“集合”可以指表示由计算机系统存储的信息项目的一组数据值。数据值可以表示为具有一定位数的二进制数字,这可以是固定数字。集合可以包括特定类型的信息的项目,例如两个人或两个装置之间的接触者、位置信息、交易信息等。在以下示例中,集合是“可更新的”,这意味着可以不时地将新的信息项目添加到集合中,并且在一些实施例中,可以在一些固定时间段之后从集合中移除旧的信息项目。
“加密密钥”可以包括适合于用密码加密数据的任何数据值或其它信息。“解密密钥”可以包括适合于解密加密数据的任何数据值或其它信息。在一些情况下,用于加密数据的同一密钥还可以用于解密数据。此类密钥被称为“对称加密密钥”。
术语“公钥/私钥对”(也称为“密钥对”)可包括由“拥有”密钥对的实体(例如,计算机、通信装置或其它电子装置)生成或提供给该实体的一对链接的密码密钥。公钥/私钥对可以与不对称加密算法一起使用,使得使用该对的“公共”密钥加密的数据可以使用该对的“私有”或“秘密”密钥进行解密(反之亦然)。密钥对的公钥可以被提供给其它实体并且用于公共功能,诸如加密待发送给密钥对所有者的消息,或者用于验证据称由密钥对的所有者生成的数字签名。公钥可以由称为验证机构(CA)的主体进行授权或验证,验证机构将公钥存储在数据库中并将其分配给请求它的任何实体。私钥或密钥通常被存储在安全存储介质中,并且只有密钥对的所有者知晓。应理解,一些密码系统可提供密钥恢复机制,用于恢复丢失的密钥并且避免数据丢失。
“共享秘密”可以包括只对安全通信中的被授权方已知的任何数据值或其它信息。共享秘密可以用任何适当方式由任何适当数据生成。例如,可以使用基于Diffie-Hellman的算法,例如椭圆曲线Diffie-Hellman(ECDH)。
“加性同态加密”(或“AHE”)是指在消息空间上的公钥加密方案(包括密钥生成函数(pk,sk,)←KeyGen(1λ)、加密函数ct←Encpk(m;r)以及解密函数m/⊥←Decsk(ct)),所述消息空间呈现正确性、CPA安全性(即,针对所选明文攻击的安全性)以及线性同态,使得对于/> 并且对于c⊙Encpk(m)=Encpk(c·m)。在下文描述中,每个同态评估之后可以进行刷新操作,其中为所得密文添加独立生成的零加密。这确保了最终密文的随机性与原始密文集合中使用的随机性无关。
“决策Diffie-Hellman假设”或“DDH假设”指出,如果是具有生成器g的素数阶q的循环乘法群,并且如果a、b、c是从/>随机均匀采样的,则/>其中符号/>指示所述两个分布在计算上是不可区分的。
“布谷鸟散列(Cuckoo hashing)”是将一定数目(n)个项目分配到一定数目(b)个块组中的散列过程。所述过程可以如下所示。首先,选择随机函数H1,H2,H3:{0,1}*→[b],并初始化空块组B[1,...,b]。为了对项目x进行散列,确定块组[H1(x)],B[H2(x)],B[H3(x)]中的任何一个是否为空。如果是,则将项目x放置在其中一个空块组中,并且过程终止。如果不是,则选择随机数i∈{1,2,3},逐出当前在块组B[Hi(x)]中的项目,并以项目x替换;然后使用递归过程将逐出的项目插入另一个块组中。如果在固定次数的迭代后过程没有终止,则将最终逐出的项目放置在称为“存储箱(stash)”的专用块组中。
具体实施方式
出于说明和描述的目的呈现对本发明的示例性实施例的以下描述。以下描述不旨在是详尽的,或将本发明局限为所描述的精确形式,并且本领域的普通技术人员将了解,可能有许多修改和变化。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其它技术人员能够在各种实施方案中最好地利用本发明并且进行各种修改,以适合于预期的特定用途。
本文公开的某些实施例涉及用于可更新私有集合交集(“可更新PSI”)的协议,所述协议减少了在集合不时更新的情况下反复确定由不同方持有的两个私有集合的交集所需的计算工作量。
举例来说,设想了其中称为P0和P1的双方(其可以是计算机系统)各自收集可以表示为集合中的元素的信息项目的情形。信息项目可以是例如P0或P1接触过的人或实体(或装置)的标识符。还设想由P0和/或P1保持的信息项目可随时间变化;例如,各方每天可能遇到新的接触者。假设期望使P0和/或P1能够确定集合具有哪些共同的信息项目(例如,它们是否已经与同一人接触)而不将它们的全部信息项目集合彼此暴露,并且不时更新共同信息项目的集合(P0的集合与P1的集合的交集)。
可以对两个集合执行PSI。图1示出使用基于决策Diffie-Hellman(“DDH”)的PSI技术的过程100的流程图,所述PSI技术可以在一对适当配置的计算机系统中(或在不共享数据访问的同一计算机系统中的不同过程中)实施。假设第一方P0拥有具有一定数目(N)个元素的第一集合A,而第二方P1拥有具有一定数目(其不必等于集合A中的元素的数目)个元素的第二集合B。
在方框102和104处,各方定义其集合:在方框102处,P0定义集合A,并且在方框104处,P1定义集合B。例如,各方可以通过在正常活动过程中收集数据,例如收集由该方遇到的各种装置或个体提供的信息,来定义其集合。在方框106和108处,各方生成秘密求幂密钥:P0生成密钥k0,并且P1生成密钥k1。在方框110和112处,各方使用散列函数来对其集合(其中/>是具有生成器g的素数阶q的群)进行散列,并将结果升高到其求幂密钥的幂。如本文所使用,“散列集合”是指将同一散列函数应用于集合的每个元素;即,H(A):={H(a)|a∈A}且H(B):={H(b)|b∈B。还针对集合的每个元素执行升高到幂,使得H(A)k0:=H(a)k0|a∈A}且H(B)k1:=H(b)k1|b∈B}。在方框114处,P0将散列集合H(A)k0发送至P1,并且在方框116处,P1接收H(A)k0。P1无法反转求幂运算和散列运算以提取集合A的元素。在方框118处,P1通过将的每个元素H(A)k0升高到k1幂来计算H(A)k0k1。在方框120处,P1将H(A)k0k1和H(B)k1发送至P0。
在方框122处,P0接收H(A)k0k1和H(B)k1。P0无法反转求幂运算和散列运算以提取集合B的元素。在方框124处,P0通过将H(B)k1的每个元素升高到k0幂来计算H(B)k1k0。在方框126处,P0可以将元素H(A)k0k1与元素H(B)k1k0进行比较并标识匹配。只要P0知道哪个元素H(A)k0k1映射到集合A的哪个元素a,P0就可以基于哪个元素H(A)k0k1匹配H(B)k1k0的元素来确定A∩B。在此过程中,P0仅学习作为A∩B的元素的集合B的元素。
为了使P1也能够确定A∩B,在方框128处,P0可以将H(B)k1k0发送至P1。在方框130处,P1可以接收H(B)k1k0。在方框132处,P1可以执行在方框126处由P0执行的相同比较以确定A∩B。在此过程中,P1仅学习作为A∩B的元素的集合A的元素。
在集合A和B不时更新的情况下,可以重新执行过程100以允许各方P0和P1更新交集A∩B。例如,假设最初(在“第0天”),集合A包括由N0个元素组成的集合A0,并且集合B包括由N0个元素组成的集合B0。P0和P1执行过程100以确定A0∩B0。
在第1天时,P0将由Nd个元素组成的集合A1添加到其集合(因此A=A0∪A1),并且P1将由Nd个元素组成的集合B1添加到其集合(因此B=B0∪B1)。P0和P1可以重新执行图1的过程100以确定A∩B=(A0∪A1)∩(B0∪B1)。通过比较第0天结果和第1天结果,P0可以学习A1∩(B0∪B1)并且也可以学习A0∩B1。但是,P0不会学习A1∩B1或A1∩B0。同样,P1可以学习B1∩(A0∪A1)和B0∩A1但不会学习B1∩A1或B1∩A0。
每次更新集合时重复图1的过程需要对两个集合的所有元素执行操作,包括已知在交集中的元素。当元素添加到集合A和B时,每天重新执行PSI过程产生越来越大的计算负荷。具体地,计算时间调整为O(N),其中N是每个集合中的元素总数。如果N0是当PSI过程100第一次执行时集合中的元素的数目,并且Nd是在迭代之间添加的元素的数目,则计算时间调整为O(N0+Nd)。通信负荷也随着各方在每次迭代时传达其集合的每个元素的表示而调整为O(N0+Nd)。
根据本发明的一些实施例,可以通过执行“可更新PSI”协议来减少计算和/或通信负荷,所述协议不需要每次需要更新时对两个集合的所有元素执行操作。在一些实施例中,可更新PSI协议不(向任何一方)泄漏通过在整对集合上重新执行图1的PSI过程而不会泄露的任何信息。因此,如本文描述的可更新PSI可以提供与在两个集合的所有元素上重新执行PSI相同的隐私保护,同时减少计算和/或通信负荷。
本文描述的可更新PSI协议的实施例涉及可以不时重复的迭代过程。“更新周期”是指迭代过程迭代之间的时间。为了描述简单,更新周期有时称为“天”;然而,所属领域的技术人员将理解,更新周期可以根据需要较长或较短。在每个更新周期结束时,各方(称为P0和P1)可以执行可更新PSI协议的一次迭代。要学习每个第d天的更新交集I[d],各方P0和P1只需要学习更新集合Iupdate=I[d]\I[d-1]。在本文使用的符号中,Ad(Bd)表示在第d天添加到P0的(P1的)集合的元素,并且A[d](B[d])表示截至第d天的P0的(P1的)完整集合;即
本文描述的一些实施例利用了Iupdate可以划分为以下两个不相交的集合的观察结果:IA,old=Aold∩Bd(其中Aold:=A[d-1]\I[d-1])和IA,new=Ad∩B[d]。因此,使P0学习IA,old和IA,new两者就足够了。对称地,如果Bold:=B[d-1]\I[d-1],则Iupdate也可以划分为IB,old=Bold∩Ad和IB,new=Bd∩A[d],以允许P1计算交集。可以设计允许P0学习IA,old和IA,new(并且如果需要,还允许P1学习IB,old和IB,new)的协议,使得不泄漏通过执行过程100确定A[d-1]∩B[d-1]然后重新执行过程100确定(A[d-1]∪Ad)∩(B[d-1]∪Bd)不会习得的信息。
现在将描述允许双方每天(或其它更新周期)学习交集的“双向”可更新PSI协议的示例。在此示例中,对集合的更新是“加性”的;即,元素被添加到集合A和B中,但不从中移除。(下文描述也考虑删除的示例。)还假设各方P0和P1是半诚实的,并且各方不保留或应用从另一方接收的信息,除非协议中另有规定。在此双向协议中,观察到IA,new=Ad∩B[d]=Ad∩(Bd∪Bold),因为根据定义,不在Bold或Bd中的B[d]的任何元素已经在A∩B中。此外,由于P1确定IB,old=Bold∩Ad,因此P1可以提供集合B′d=Bd∪(Bold∩Ad),出于确定IA,new的目的,所述集合等同于Bd∪Bold。这可以减少在各方之间加密和交换的元素的数目。
图2A-2C示出根据一些实施例的用于更新PSI的过程200的流程图。过程200可以在一对适当配置的计算机系统中(或在不共享数据访问的同一计算机系统中的不同过程中)实施。过程200包括各方在第一次迭代(第0天)时执行的初始化;后续迭代省略初始化步骤。参考图2A,在初始化时,P0的私有集合A和P1的私有集合B都假定为空。因此,在方框202处,一方P0可以将定义为不在交集A∩B中的集合A的所有元素的“残余”子集Aold初始化为空集。P0还可以将散列集合HA=H(Aold)k0k1初始化为空集。P0还可以将交集A∩B初始化为空集。在初始化期间,P0可以生成并存储秘密求幂密钥k0。类似地,在方框204处,一方P1可以将定义为不在交集A∩B中的集合B的所有元素的“残余”子集Bold初始化为空集。P1还可以将散列集合HB=H(Bold)k0k1初始化为空集。P1还可以将交集A∩B初始化为空集。P1可以生成并存储秘密求幂密钥k1。当任何一方都不知晓交集时,可以在第一次迭代执行方框202和204,并且省略后续迭代。如下文所描述,每次迭代可以使得更新残余子集Aold和Bold、对应散列集合HA和HB以及交集A∩B;因此,这些集合可以在过程200的特定迭代开始时是但不一定是空的。
在方框206和208处,各方通过添加元素来更新其私有集合。因此,在方框206处,将包括一个或多个元素的“新”子集Ad添加到集合A,并且在方框208处,将包括一个或多个元素的“新”子集Bd添加到集合B。(在一些实施例中,在某些迭代,子集Ad或Bd中的一者或两者可以是空集。)
如上所述,为了更新交集A∩B,P0需要学习IA,old=Aold∩Bd和IA,new=Ad∩(Bold∪Bd)。为了P0学习Aold∩Bd,在方框210处,P1可以对集合Bd(集合B的新添加元素)进行散列,并将每个元素升高到k1幂。(这可以类似于过程100的方框112,不同之处在于散列集合中仅呈现新添加的元素。)在方框212处,P1可以将散列集合H(Bd)k1发送至P0。在方框214处,P0可以接收H(Bd)k1。从P0的角度来看,散列集合H(Bd)k1是P0不能解密的集合Bd的加密表示。在方框216处,P0可以通过将H(Bd)k1的每个元素升高到k0幂来计算散列集合H(Bd)k1k0。在方框218处,P0可以将散列集合G(Bd)k1k0与其存储的散列集合HA=H(Aold)k0k1进行比较以确定IA,old=Aold∩Bd。
类似地,为了更新交集A∩B,P1需要学习IB,old=Bold∩Ad和IB,new=Bd∩(Aold∪Ad)。为了P1学习Bold∩Ad,在方框220处,P0可以对集合Ad(集合A的新添加元素)进行散列,并将每个元素升高到k0幂。(这可以类似于过程100的方框110,不同之处在于散列集合中仅呈现新添加的元素。)在方框222处,P0可以将散列集合H(Ad)k0发送至P1。在方框224处,P1可以接收H(Ad)k0。在方框226处,P1可以通过将H(Ad)k0的每个元素升高到k1幂来计算散列集合H(Ad)k0k1。在方框218处,P1可以将H(Ad)k0k1与其存储的散列集合HB=H(Bold)k1k0进行比较以确定IB,old=Bold∩Ad。
接下来,P0可以在不学习Ad∩Bold或Ad∩Bnew的情况下学习IA,new=Ad∩(Bold∪Bd)。例如,各方可以利用P1在方框228处确定IB,old=Ad∩Bold的事实。参考图2B,在方框230处,P1可以定义“填充的”集合B′d=Bd∪IB,old∪DB,其中DB是虚拟元素集合,其可以具有随机值。可以选择虚拟元素的数目,使得集合B′d的基数是2Nd,其中Nd是每天添加的元素的数目。在一些实施例中,Nd可以是从一次迭代到下一次迭代不变化的固定值;可以基于对每天(或其它更新周期)将被添加到集合的元素的数目的期望来为给定实施方案预先确定固定值。使用虚拟元素可以帮助隐藏关于在每天(或其它更新周期)将多少元素添加到集合的信息。使用虚拟元素是任选的,并且在一些实施例中,可以省略虚拟元素(在这种情况下DB可以是空集)。
在方框232处,P1可以通过对填充集合B′d进行散列并将结果升高到k1幂来计算散列集合H(B′d)k1。可以使用方框210处使用的相同散列函数。在方框234处,P1可以将散列集合H(B′d)k1和散列集合H(Ad)k0k1(在方框226处确定)发送至P0。
在方框236处,P0可以接收H(B′d)k1和H(Ad)k0k1。在方框238处,P0可以使用散列集合H(B′d)k1和H(Ad)k0k1以确定IA,new=B′d∩Ad。例如,P0可以通过将H(B′d)k1的每个元素升高到k1幂来计算散列集合H(B′d)k1k0。然后,P0可以将H(B′d)k1k0的每个元素与H(Ad)k0k1的元素进行比较。(这些操作可以类似于过程100的方框122到126,不同之处在于方框238处的输入集合是集合A和B的子集而不是整个集合。)
应注意(假设没有由于虚拟元素而导致的假阳性),方框230-238处的操作产生与如果P1生成Bd∪Bold的加密表示所将得到的结果相同的结果,并将结果发送至P0。这是因为P0和P1已经建立因此将添加到交集A∩B的Bold的唯一元素是Ad∩Bold的元素。通过使用集合B′d,计算和通信负荷减少,因为P1仅计算和发送集合H(B′d)k1的2Nd个元素,而不是Bold的所有元素。还应注意,P0不知道集合H(B′d)k1的给定元素是源自Bd、Ad∩Bold还是虚拟元素,这符合期望的隐私保护行为。
在方框240处,P0可以计算对交集的更新:Iupdate=IA,new∪IA,old,其中IA,old在方框218处确定并且IA,new在方框238处确定。在方框242处,P0可以将Iupdate发送至P1,并且在方框244处,P1可以接收Iupdate。在方框246和248处,各方可以更新交集A∩B:=(A∩B)∪Iubdate。
在一些实施例中,可以执行附加处理以通过更新残余子集Aold和Bold以及对应散列集合HA=H(Aold)k0k1和HB=H(Bold)k1k0来准备过程200的下一次迭代。图2C示出根据一些实施例的在过程200期间更新残余集合Aold和散列集合HA的示例。应理解,P0和P1的角色颠倒的类似过程也可以用于更新残余子集Bold和散列集合HB。在一些实施例中,更新集合Aold、HA、Bold和HB可以在每次迭代的开始而不是结束时执行。
在方框250处,P0可以定义由Ad的不在方框240处计算的交集更新中的元素加上包含足够虚拟元素的集合DA组成的集合A′d,集合A′d的基数是Nd;即A′d=(Ad\Iupdate)∪DA。类似于方框230处的虚拟集合DB,集合DA的虚拟元素可以具有随机值。
在方框252处,P0可以选择参数α,其可以是P0保密的随机正整数。在方框254处,P0可以对集合A′d进行散列并将结果升高到αk0幂,从而计算散列集合H(Ad)αk0。在方框256处,P0可以将散列集合H(Ad)αk0发送至P1。
在方框258处,P1可以接收散列集合H(A′d)αk0。在方框260处,P1可以将每个元素升高到k1幂,从而计算散列集合H(Ad)αk0k1。在方框262处,P1可以将散列集合H(A′d)αk0k1发送至P0。(假设在不改变元素的次序的情况下或以某种其它方式,P1将散列集合H(A′d)αk0k1提供到P0,使得P0可以确定H(A′d)αk0k1的哪个元素对应于H(A′d)αk0的哪个元素。)
在方框264处,P0可以接收H(A′d)αk0k1。在方框266处,P0可以通过将H(A′d)αk0k1升高到α-1幂来计算H(A′d)k0k1。在方框268处,P0可以通过移除与添加到交集A∩B的集合Aold的元素相对应的元素并添加与未添加到交集A∩B的集合Ad的元素相对应的元素来更新散列集合HA。例如,更新的散列集合可以计算为H(Aold)k0k1:=(H(Aold)k0k1\H(IA,old)k0k1)∪H(Ad\IA,old)k0k1。在方框270处,P0可以更新集合Aold用于过程200的下一次迭代。例如,更新可以计算为Aold:=(Aold\IA,old)∪(Ad\Iupdate)。也就是说,残余子集Aold包含不在交集A∩B中的集合A的元素。
尽管未明确示出,但可在P0和P1的角色颠倒的情况下执行对应的一组操作,以使得P1能够更新残余子集Bold和散列集合HB。此后,可以从方框206和208开始再次执行过程200,以继续更新私有集合A和B的交集。
过程200提供与在整个更新集合上重新执行PSI协议相同的隐私保护。也就是说,P0可以学习Ad∩(Bd∪B[d-1])并且也可以学习Aold∩Bd。然而,P0不会学习Ad∩Bd或Ad∩B[d-1]。同样,P1可以学习Bd∩(Ad∪A[d-1])和Bold∩Ad但不会学习Bd∩Ad或Bd∩A[d-1]。因此,各方可以学习其自身集合中的每个新添加的元素是否在交集中,但不能学习新添加的元素是否与另一方集合的“残余”或“新”子集相同。各方还可以学习其残余子集的任何元素是否由于另一方添加新元素而进入交集。
应了解,过程200是说明性的,且可能有变化和修改。描述为顺序的操作或方框可以并行执行,并且可以在逻辑允许的范围内改变操作次序。在一些实施例中,可以通过执行例如过程100的PSI协议的一次迭代来初始化过程200,其中根据过程200执行后续迭代。
过程200的迭代可以以任何期望频率执行,这取决于确定更新的PSI的有用频率。例如,在接触者追踪应用中,每日更新可能是适当的。在其它应用中,更新可以以更短的间隔(例如,每小时)或更长的间隔(例如,每周、每月)或任意的间隔发生,例如当任何一方在其集合中添加Nd个元素时或应任何一方的请求发生。在各方间歇性接触的实例中,迭代之间的间隔可以是可变时间量。只要各方保留其先前迭代的结果,各方可随时执行过程200的另一迭代。
在上文描述的示例中,各方使用升高到(秘密)幂的散列函数以加密其与另一方共享的私有集合的元素。如所述,接收者可以将两个集合之间的加密元素进行比较,但不能解密另一方的集合的元素。在一些实施例中,散列函数可以用创建元素的加密表示的任何不经意伪随机函数(“OPRF”)代替,前提是任何一方都不能解密最初由另一方加密的元素,并且前提是各方都可以获得两个集合的元素的对应加密表示(使得如果两个加密表示相同,则可以假设元素相同,并且如果加密表示不同,则可以假设元素不同)。在一些实施例中,各方可以合作以提供对应加密表示。例如,如上所述,在加密表示是升高到幂的散列函数的情况下,一方可以将其(秘密)指数应用于从另一方接收的散列集合,然后返回结果。其它OPRF实施方案也可能涉及各方之间的合作。
如上所述,任何一方都可以将虚拟值添加到正发送至另一方的集合中,使得任何一方在每个更新周期期间都不知道实际添加到另一方集合中的元素有多少。虚拟值可以是使用任何类型的随机数(或伪随机数)生成器生成的随机数。在一些实施例中,可能存在一方生成的虚拟值与另一方集合的元素重合的非零概率,从而产生交集中的“假阳性”。例如,如果P1在方框230处生成的虚拟值之一与P0的集合的元素aq匹配,则P0可以在方框240处将aq包括在交集Iupdate中。元素aq将是假阳性。通过允许虚拟值具有足够大的数值范围,可以将假阳性的概率降低到可忽略不计的值。或者,如果需要,可以省略虚拟值,这将允许一方学习在给定的一天有多少元素被添加到另一方的集合中,但可以防止虚拟值产生假阳性。
与传统技术相比,过程200和其它类似过程可以提供改进的计算效率,在传统技术中,每当需要更新时,在两个集合的整个集合上执行PSI。如上所述,全集合PSI协议的计算时间调整为O(N0+Nd),其中N0是集合的初始大小,并且Nd是为PSI的每次更新添加的元素的数目。在增量相加远小于集合的初始大小的情况下(即,其中N0>>Nd),重复传统技术的计算时间调整为O(N0),即使添加的数据量远小于N。
相反,过程200可以对这两个集合的子集进行操作。因此,每个更新的计算时间调整为O(Nd)。因此,在Nd小于总集合大小的程度上,过程200可以在每次更新PSI时提供改进的计算效率。(初始迭代不一定更快,因为集合的所有元素都将包括在所述迭代中。只有在随后的迭代中才能观察到优势。)
另外或替代地,与在整个集合上重新执行传统PSI相比,过程200还可以降低通信成本。重新执行传统PSI会导致通信成本随着N0+Nd的增加而增加。过程200的通信成本通常随着Nd而增长(因为对于添加的元素需要通信),并且在最坏的情况下随着log N0而增长。当初始集合大小N0较大、更新大小Nd较小并且网络带宽较低时,可获得通信成本方面的最大优势。
在过程200中,假设仅通过添加元素来更新集合A和B。在一些实施例中,也可以从集合A和B中删除元素。在被称为“弱删除”的场景中,通过到期过程从集合A和B中移除元素。也就是说,在迭代i处添加到集合A(或集合B)的元素在迭代i+t处被移除,其中t表示对于特定应用固定的持续时间。因此,各方可以每t次迭代刷新其集合。持续时间t的选择取决于应用,并且假设两个集合的持续时间相同。例如,在一些接触者追踪应用中,两周多前出现的接触者可能不再受关注,并且持续时间t可以设置为14天。对于其它应用,可以定义其它持续时间。
根据本发明的一些实施例,可以提供可更新PSI协议,用于更新具有弱删除的集合的交集。可更新PSI协议可以包括使用发送者流式传输PSI(“SSPSI”)过程的多个实例。“SSPSI过程”可以定义为称为“发送者”和“接收者”的双方之间的PSI协议,其中只有接收者学习接收者集合与发送者集合的特定子集的交集。假设接收者一开始就知道其整个集合Y,而发送者最初只知道其集合X的子集Xi。以下假设为公共信息:(1)接收者集合Y的大小(元素数目);(2)发送者的已知子集Xi的大小;以及(3)发送者集合X中元素数目的上限Max。在发送者学习了初始子集X0之后,各方可以执行单边PSI过程,从而产生接收者学习X0∩Y。此后,当发送者学习附加子集Xi时,发送者和接收者可以执行附加单边PSI过程,每次都使得接收者学习Xi∩Y。
图3示出可以在一些实施例中使用的发送者流式传输PSI过程300的流程图。过程300可以在一对适当配置的计算机系统中(或在不共享数据访问的同一计算机系统中的不同过程中)实施。在方框302处,发送者建立输入集合Xi,所述输入集合应理解为较大集合X的子集。在方框304处,接收者建立输入集合Y。在方框306和308处,发送者和接收者可以执行密钥生成过程以生成密钥K。在方框310处,发送者可以使用密钥K和不经意伪随机函数(OPRF)以生成{OPRF(K,x)|x∈Xi},发送者将所述不经意伪随机函数发送至接收者。(针对集合Xi中的每个元素分别计算OPRF。)可以使用任何不经意伪随机函数,前提是,如果I=Xi∩Y,则对于任何x∈Xi\I,OPRF(K,x)的出现对接收者来说都是伪随机的,因此不会泄露关于元素x的信息。可以根据需要选择密钥;只要发送者知道发送者集合X中的元素数目的上限Max,就可以选择长度适当的密钥。在一些实施例中,可以使用如上文参考图1所描述的升高到幂散列函数,在这种情况下,密钥K可以被理解为两个幂的乘积,并且各方协作生成OPRF集合。也可使用其它适当的函数。在方框312处,接收者可以接收{OPRF(K,x)|x∈Xi}。在方框314处,接收者可以计算{OPRF(K,y)|y∈Y}。在使用升高到幂的散列函数时,接收者可以将其散列元素{H(y)Kr|y∈Y}提供给发送者,使得发送者可以计算{H(y)KrKs}并将结果返回给接收者。在方框316处,接收者可以将{OPRF(K,x)|x∈Xi{和{OPRF(K,y)|y∈Y}进行比较以确定交集I=Xi∩Y。如果针对发送者集合的不同子集Xi重复过程300,则不必重新计算接收者的加密元素{OPRF(K,y)|y∈Y},因为集合Y不会改变。因此,方框314可以执行一次,并且接收者可以存储{OPRF(K,y)|y∈Y}以用于过程300的后续执行。
诸如过程300的发送者流式传输PSI过程可以表示为函数SSPSI(S,R,i),其中S表示充当发送者的一方,R表示充当接收者的一方,并且i表示待处理的流索引(或发送者的集合的子集Xi)。
图4A和4B示出根据一些实施例的具有弱删除的可更新PSI的过程的流程图。过程400可以在一对适当配置的计算机系统中(或在不共享数据访问的同一计算机系统中的不同过程中)实施。过程400可以利用图3的SSPSI过程。每当需要对PSI进行更新时(例如,每天),可以迭代地执行过程400。
过程400可以从更新输入集合开始。P0通过在方框402处添加集合Ad并且在方框404处删除集合Ad-t来更新集合A。因此,对于任何给定的迭代,集合A可以包括子集Ad-t+1、...、Ad-1、Ad。(对于索引i≤0的任何情况,Ai可以是空集。)类似地,P1通过在方框406处添加集合Bd并且在方框408处删除集合Bd-t来更新集合B。因此,对于任何给定的迭代,集合B可以包括子集Bd-t+1、...、Bd-1、Bd。(对于索引i<0的任何情况,Bi可以是空集。)
在方框410-414中,P0可以确定部分交集
更具体地,在方框410和412处,对于从(d-t+1)到(d-1)的范围内的每个正整数j,可以根据过程300执行SSPSI的示例,其中P1作为发送者且P0作为接收者。给定实例中的接收者集合是Aj且发送者子集是Bd。以这种方式,P0可以为每个j学习Aj∩Bd。在方框414处,P0可以根据等式(1)计算并集I0,α。应注意,I0,α类似于过程200中的IA,old,不同之处在于不包括来自集合A的已删除子集的元素。
类似地,在方框416-420中,P1可以确定部分交集
更具体地,在方框416和418处,对于从(d-t+1)到(d-1)的范围内的每个正整数j,可以根据过程300执行SSPSI的示例,其中P0作为发送者且P1作为接收者。给定实例中的接收者集合是Bj且发送者子集是Ad。以这种方式,P0可以为每个j学习Bi∩Ad。在方框420处,P1可以根据等式(2)计算并集I1,α。
在方框422-428中,P0可以确定部分交集
更具体地,在方框422处,P1可以生成集合B′,其可以定义为
B′=Bd∪I1,α∪DBd (4)
其中I1,α由等式(2)给出,并且DBd是由虚拟随机元素(类似于过程200中使用的虚拟随机元素)组成的集合,使得集合B′的基数等于2Nd。在方框424和426处,可以根据过程300执行SSPSI的附加示例,其中P0作为接收者且P1作为发送者。接收者集合是Ad且发送者集合是B′。通过这种方式,P0可以学习Ad∩B′,其(忽略虚拟元素)与等式(3)相同。因此,P0可以在方框428处确定I0,β。应注意,I0,β类似于过程200中的IA,new,不同之处在于不包括来自集合B的已删除子集的元素。
与上述过程200的方框230-238一样,在方框424和426处的SSPSI过程产生与如果P1使用集合B作为发送者集合将获得的结果相同的结果,但是计算负荷减少,这是可能的,因为P1已经确定了子集Bd-t+1、...、Bd-1、Bd的哪些元素与Ad相交。
类似地,参考图4B,在方框430-436中,P1可以确定部分交集
更具体地,在方框430处,P0可以生成集合A,其可以定义为
A′=Ad∪Io,α∪DAd (6)
其中I0,α由等式(1)给出,并且DAd是由虚拟随机元素(类似于过程200中使用的虚拟随机元素)组成的集合,使得集合A′的基数等于2Nd。在方框432和434处,可以根据过程300执行SSPSI的附加示例,其中P1作为接收者且P0作为发送者。接收者集合是Bd且发送者集合是A′。通过这种方式,P1可以学习Bd∩A′,其(忽略虚拟元素)与等式(5)相同。因此,P1可以在方框436处确定I1,β。与方框424和426处的SSPSI过程相同,方框432和434处的SSPSI过程产生与如果P0使用集合A作为发送者集合将获得的结果相同的结果,但是计算负荷减少。
在方框438和440处,P0和P1可以各自确定用于更新d的交集Id。在方框438处,P0确定Id=I0,α∪I0,β。由于I0,α是P1的“新”元素(Bd)与P0的“旧”(但未过期)元素的交集,并且I0,β是P0的“新”元素Ad与P1的全集B的交集,因此这两个集合的并集是交集A∩B。在方框440处,P1确定Id=I1,α∪I1,β。由于I1,α是P0的“新”元素(Ad)与P1的“旧”(但未过期)元素的交集,并且I1,α是P1的“新”元素Bd与P0的全集A的交集,因此这两个集合的并集也是交集A∩B。
可以迭代地(例如,每天)执行过程400以重复地更新集合和PSI。可以独立生成每次迭代中使用的密钥(或多个密钥),因此即使输入相同,SSPSI过程期间的OPRF输出也可以不同。在每次迭代中,P0学习集合A的哪些旧元素与集合B的新添加的元素是共同的,但不学习集合B的哪些更新与添加到交集的Ad的任何新元素相匹配。P1学习对应信息。任何一方都不学习Ad∩Bd-t或Bd∩Ad-t。(也就是说,各方都不会学习从任一集合中删除的元素与添加到任一集合中的元素的交集。)
应了解,过程400是说明性的,且可能有变化和修改。描述为顺序的操作或方框可以并行执行,并且可以在逻辑允许的范围内改变操作次序。允许一方确定PSI的其它PSI过程可以代替图3的发送者流式传输PSI过程300。迭代可以以任何期望频率执行,这取决于确定更新的PSI的有用频率。例如,在接触者追踪应用中,每日更新可能是适当的。在其它应用中,更新可以以更短的间隔(例如,每小时)或更长的间隔(例如,每周、每月)或任意的间隔发生,例如当任何一方在其集合中添加Nd个元素时或应任何一方的请求发生。在各方间歇性接触的情况下,迭代间隔可以是可变时间量(例如,自上次更新交集以来的所有更新)。
如上所述,虚拟值可以用来将更新的集合填充到固定大小,使得任何一方都不知道在每次迭代期间实际上将多少元素添加到另一方的集合中。虚拟值可以是随机数,并且可以选择值的范围,使得假阳性的概率可忽略不计。或者,如果需要,可以省略虚拟值,这将允许一方学习在给定的一天将多少元素添加到另一方的集合中,但是将防止由于虚拟元素而导致的假阳性。
在一些实施例中,将元素保持在集合中的时间比持续时间t长可能是有用的。例如,在接触者追踪的情况下,P0(或P1)可能在多天内遇到相同的接触者。例如通过在遇到接触者的每一天将相同的接触者添加到P0的集合中,可以管理集合中较长周期的保留元素。也可使用其它技术。
与过程200类似,与传统技术相比,过程400可以提供改进的计算效率和通信效率,在传统技术中,每当需要更新时,在两个集合的整个集合上执行PSI。在一些实施例中,每个过程400的计算时间和通信成本调整为O(Nd·t)。
在上文描述的示例中,双方可以在每次迭代时确定更新的交集。在一些实施例中,可能期望只有一方确定交集。例如,在一些客户端-服务器应用中,服务器可以维护大型私有集合,并且客户端可以确定其(通常更小的)私有集合与服务器的私有集合的交集。为了便于针对大型集合进行比较,第一方P1(例如,服务器)可以提供加密数据库,第一方在不重新生成整个数据库的情况下可以更新所述加密数据库。数据库可具有树结构,第一方可以使用不提供关于原始内容的信息的技术来更新所述树结构。第二方P0(例如,客户端)可以不经意搜索加密数据库以查找与其私有集合的匹配。可以使用加性同态加密协议。
在一些实施例中,可以使用完全同态加密(“FHE”)实施单边可更新PSI协议。例如,P1可以使用FHE算法来使用秘密密钥sk1加密集合B,并且可以将Encsk1(B)提供给P0。P0可以存储Encsk1(B)并且可以在不知道sk1的情况下使用集合A来同态计算Encsk1(A∩B)。然后,双方都可以运行安全的双方计算(2PC)协议,其中P0的输入是Encsk1(A∩B),并且P1的输入是秘密密钥sk1,P0可以从中学习输出A∩B。当通过添加集合Ad来更新集合A并且通过添加集合B来更新集合B时,P1可以通过将Encsk1(Bd)发送至P0来更新加密数据库,并且P0可以学习Ad∩(B∪Bd),通信随着Nd(添加的元素的数目)而增长。然而,P0的同态计算随着N(集合B中的元素总数)而增长。另外,FHE算法在计算上可能是昂贵的。
在一些实施例中,可以实现附加效率增益。例如,可以使用树结构来维护P1的数据库,其中在任何给定更新周期中,P1仅更新树的一个层级,并且P0仅在树的一个路径上更新查询。计算成本(通过更新循环摊销)随着树的深度而增长,所述深度可以是N的对数而不是线性的。对于2PC协议,通过使用加性同态加密(“AHE”)而不是FHE来实现进一步的效率增益。
当仅通过添加元素来更新集合时,为了学习每个第d天的更新交集Id,P0只需要学习更新集合Iupdate=Id\Id-1。与上文描述的示例类似,Iupdate可以划分为两个不相交的集合I′A,old=Aold∩Bd和I′A,new=Ad∩B[d]。P0可以使用类似于过程200的协议学习I′A,old。要学习I′A,new,P0可以使用由P1提供的更新树,并且可以查询更新树中可能包含与添加到集合A的元素匹配的新元素的相对较小的元素集合。在单边协议中,假设P1不学习Ad∩Bold,并且树结构可以表示集合B的所有元素。
二叉树结构可以如下实施。最初,树可以是空的。树的每个节点具有最大容量O(σ),其中σ可以基于给定的一天添加的元素的数目Nd来选择。在一些实施例中,Nd=σ并且节点容量是4σ。每天,当P1的集合中添加了新元素时,P1会将新元素插入树中。首先,可以将新元素插入到树的根(或第一)节点中。当根达到最大容量时,P1将根中的元素连同新元素一起推送到树的第二层级(其具有两个节点)。如果第二层级具有任何完整节点,则P1将所有元素向下推送到第三层级(其具有四个节点)。过程可以继续:如果树的前L个层级包含任何完整节点,则P1将前L个层级中的所有元素连同新元素一起推送到树的层级(L+1)并且清空前L个层级。对于特定层级,将y元素置于由散列函数H2(y)的输出确定的所述层级的(伪)随机节点中。
为了使P0忽略更新过程数据,P1可以修改其行为,使得在节点完全满时不会将元素推送下一层级。相反,P1可以以预定方式执行推送操作,所述预定方式仅取决于P1的集合大小(其对P0是公共的),并且对于所述集合大小,任何节点达到满容量的概率可忽略不计。图5示出根据一些实施例的树更新过程的示例。树500示出第d=20天的更新之前的二叉树的状态。白色节点是空的,并且灰色节点是非空的。因此,根节点501和层级1节点511-1、511-2含有元素。接下来的两个层级是空的,但层级4节点541-1至541-16含有元素。更新的树500′示出第d=20天的更新之后的二叉树的状态。来自根节点501的所有元素已被推送到层级1节点511-1和511-2,之后来自层级1节点511-1和511-2的所有元素已被推送到先前为空的层级2节点521-1至521-4,并且不需要进一步推送。元素保留在层级4节点541-1至541-16中。
在如图5所示更新树结构之后,P0可以使用虚拟元素将每个更新节点填充到其最大容量,然后以加密形式将更新节点发送至P0。P0可以使用可更新PSI协议中的加密树结构。例如,对于每个x∈Ad,P0可以例如通过计算具有至少一个占用节点的每个层级的H2(x)来定位可能含有x的根至叶路径。使用加性同态加密,并且在P1的帮助下,P0可以学习路径的任何节点中是否包含x,而不需要学习任何其它信息并且不会将x泄漏到P1。
图6和7A-7C示出根据一些实施例的使用加密树结构实施单边可更新PSI过程的过程的流程图。图6示出可以执行一次以准备初始集合的初始化过程600。图7示出可以针对每个更新循环执行的更新过程700。过程600和700可以在一对适当配置的计算机系统中(或在不共享数据访问的同一计算机系统中的不同过程中)实施。
参考图6,初始化过程600包括将在过程700中使用的参数的初始化。例如,在方框602处,P1可以初始化将用于表示P1的集合B的树结构树结构/>可以由集合/>组成,其中下标i表示二叉树的层级并且j表示层级i内的节点。层级i的数目可以根据需要那样大(换言之,i的范围可以包括所有非负整数),并且每个层级i具有2i个节点(换言之,对于层级i,j的范围可以是{0,1,...,2i-1})。最初,树结构是空的,并且每个/>可以初始化为空集。P1还可以将表示树的当前深度的参数maxL初始化为零。P1还可以将更新循环计数器d初始化为零并且将次级循环计数器d*初始化为1。
在方框604处,P0可以将残余子集Aold(表示不在交集A∩B中的集合A的元素)初始化为空集。P0还可以将散列集合HA初始化为空集。显而易见,散列集合HA可以类似于上述实施例中的散列集合HA来定义。P0还可以将交集Id=0初始化为空集。P0还可以初始化加密的树结构其用于存储由P1提供的加密的树结构。与(未加密的)树结构/>类似,加密的树结构可以由若干集合(节点)/>组成,每个集合(节点)被初始化为空集。P0还可以将参数maxL(其表示树的当前深度)初始化为零。P0还可以将更新循环计数器d初始化为零并且将次级循环计数器d*初始化为1。(可以使用其它值,只要P0和P1同意d的当前值。)
在方框606处,P0可以生成求幂密钥k0,并且在方框608处,P1可以生成求幂密钥k1。求幂密钥可以与上文描述的过程200中生成的求幂密钥相似或相同。各方可以将其求幂密钥视为秘密。
在方框610处,P0可以生成用于加性同态公钥加密方案的密钥对(pk0、sk0),其中pk0是公钥并且sk0是对应秘密(私有)密钥。在方框612处,P1可以生成用于加性同态公钥加密方案的密钥对(pk1、sk1),其中pk1是公钥并且sk1是对应秘密(私有)密钥。可以使用任何AHE方案,但前提是P0和P1使用相同的方案(具有不同的密钥对)。在方框614和616处,P0和P1可以交换公钥。此时,P0和P1准备好开始使用图7A-7C的过程700更新其集合。
参考图7A,各方通过添加数目Nd=σ个元素来每天(或任意长度的每个更新周期)更新其的集合。因此,对于第d天,在方框702处,P0可以递增其更新循环计数器d(例如,通过增加1),并且可以将新子集Ad(有时也表示为Anew)添加到其私有集合A。类似地,在方框704处,P1可以递增其更新循环计数器d(例如,通过增加1),并且可以将集合Bd添加到其私有集合B。在一些实施例中,添加到任一集合的元素的数目可以小于Nd=σ,并且任何一方可以使用虚拟元素(类似于上述虚拟元素)来隐藏添加的元素的数目。
在方框706-716中,P0可以使用类似于上述PSI过程的技术学习Aold∩Bd。例如,在方框706处,P1可以计算散列集合H1(Bd)k1,类似于过程200的方框210(图2A);即,对于集合Bd中的每个元素,应用散列函数且将结果升高到k1幂。在方框708处,P1可以将散列集合H1(Bd)k1发送至P0。在方框710处,P0可以接收散列集合H1(Bd)k1。在方框712处,P0可以通过将H1(Bd)k1的每个元素升高到k0幂来计算散列集合H1(Bd)k1k0。在方框714处,P0可以将散列集合H1(Bd)k1k0与其“旧”散列集合HA进行比较。应注意,在第一次迭代时,HA可以是空集,并且可以在每个更新循环结束时将元素添加到HA,如下所述。在方框716处,P0可以确定部分交集IA,old=Aold∩Bd。
参考图7B,在方框720-756中,P0可以使用由P1提供的加密树结构来学习Anew∩B(其中)。在方框720处,P1可以更新其树结构/>对更新的树结构进行加密,并将加密的树结构/>(或其更新)发送至P0,并且P0可以在方框728处更新其(所存储的)加密的树结构。图8示出根据一些实施例的可以用于更新树结构的过程800的流程图。过程800可以在方框720和728处应用。
在方框802和804处,各方可以将层级计数器maxLd设置为零。在方框806和808处,使用循环计数器t输入处理循环,其中t∈{d*,d*+1,..,(d*+Nd/σ-1},在方框806和808处,各方可以选择t的下一个值。在方框810和812处,各方可以确定对应于循环计数器t的层级数目L。例如,可以定义函数LS1(d),所述函数返回d的二进制表示中的最低有效位置1。换句话说,如果则LS1(n):=min{i:bi=1{。例如,LS1(7)=0且LS1(12)=2。在方框810和812处,各方可以设置L=LS1(d)、maxL=max{L,maxL}和maxLd=max{L,maxLd}。
在方框814-822处,P1可以更新其循环计数器t的树结构例如,P1可以将所添加元素Bd的集合划分为不相交的子集:/> 如果Bd包括Nd个元素,则每个子集Yi都可以包括σ个元素。在方框814处,P1可以定义集合/>在方框816处,P1可以重置树的节点。例如,对于每个i∈{0,1,...,L}和每个j∈{0,1,...,2i-1},P1可以设置集合/>(空集)。
在方框818处,P1可以将每个元素b∈St添加到树中的节点。例如,P1可以计算一系列散列j=H2(b)[1..L],其中H2(·)是可以与方框706-716中使用的H1(·)不同的层级特定的散列函数。在一些实施例中,如果将元素b添加到节点导致节点/>超过其大小限制(例如,其可以是4σ),则过程800中止。可以看出,对于4σ的大小限制,任何节点/>的大小超过大小限制的概率可忽略不计,前提是将散列函数H2(·)建模为随机先知,使得任何元素b∈S都同样有可能被放置在层级L的任何一个节点中。(为了使概率更小,可以增加大小限制,但是增加大小限制会增加从P1发送至P0的数据量。)如果将元素b添加到节点/>不会导致节点/>超过其大小限制,则P1可以将元素b添加到节点/>在一些实施例中,可以将元素b添加到节点/>中的元素的末端。或者,布谷鸟散列(如上文所定义)可用于存储每个节点中的元素。例如,可以选择三个散列函数(CuH1、CuH2、CuH3)。每个节点/>都表示为y个块组的集合。小的存储箱也与每个节点相关联。取决于块组CuH1(b)、CuH2(b)和CuH3(b)的内容,每个元素b可以被插入到任何给定节点的y个块组(或存储箱)中的一个。类似地,当在方框814中定义集合St并且在方框816中设置/>时,可以使用来自存储箱的元素。在方框820处,P1可以返回到方框808以针对计数器t的下一个值继续循环,或结束循环并且前进到方框822。
在方框822处,对于每个j∈{0,1,...,2L-1},P1可以通过用虚拟元素(其可以是如上文所描述的随机元素)填充来构造大小4σ的节点/>在方框824处,P1可以加密树/>例如,P1可以使用公钥pk1加密每个节点/>以生成加密节点其中EncK(m)表示使用密钥K加密消息m的不对称加密函数。在方框826处,P1可以将加密节点/>发送至P0。
在方框828处,P0可以接收加密节点。在方框830处,P0可以更新其存储的加密树例如,P0可以首先针对每个i∈{0,1,...,L}和每个j∈{0,1,...,2i-1{清除节点/>然后,对于每个j∈{0,1,...,2L-1},P0可以设置/>
再次参考图7B,在方框732处,P0可以将部分交集IA,new初始化为空集。此时,P0和P1开始处理循环(方框734-758)以确定将集合Ad的哪些元素添加到部分交集IA,new。处理循环可由P0驱动,其中P1充当服务器。在方框734处,P0可以从集合Ad中选择待测试的元素x。在方框736处,P0可以将元素x映射到元素x映射到的加密树的一个或多个节点。例如,对于每个i∈{0,1,...,maxL{,P0可以计算散列函数j=H2(x)[1..i]。如果/>是空的,则找到匹配。应注意,P0不具有解密节点/>的秘密密钥sk1。然而,加密并不影响树的节点是空的还是非空的,因此P0可以在不知道节点中的任何元素的情况下确定元素x是否与被占用的节点匹配。
在没有更多信息的情况下,匹配被占用的节点并不能确定元素x应被添加到部分交集IA,new。因此,各方可以使用基于AHE的协议来使P0能够确定是否应将元素x添加到部分交集IA,new,而不会将元素x泄漏到P1或将P1的集合的元素泄漏到P0。例如,在方框738处,对于找到的每个匹配节点,P0可以计算用于测试元素x的一个或多个密文对。例如,匹配元素x的节点包含与分配给所述节点的P1的集合中的每个元素相对应的密文ct。(取决于实施方案,节点中可能存在从1到4σ个密文的任何位置。)对于每个密文/>P0可以对随机值α进行采样并计算ctα:=Encpk0(α)、/> 在方框740处,可以将元素x的密文对(ctα、ctβ)的集合C0发送至P1。
在方框742处,P1可以接收密文对(ctα、ctβ)的集合C0。参考图7C,在方框744处,对于每个密文对(ctα、ctβ),P1可计算响应密文ctr。例如,对于每个密文对(ctα、ctβ),P1可以对随机值γ进行采样,并计算 以此方式,P1可以生成包含每个密文对(ctα、ctβ)的一个响应密文ctr的集合C1。在方框746处,P1可以随机地排列集合C1中的响应密文ctr的次序,并且在方框748处,P1可以将排列的集合C1发送至P0。
在方框750处,P0可以接收排列的集合C1。在方框752处,对于集合C1中的每个密文ctr,P0可以通过使用其私钥sk0解密ctr来计算残余参数r。也就是说r:=Decsko(ctr)。由于AHE协议,结果r=0指示元素x与P1的集合的元素之间的匹配,而r≠0指示不匹配。因此,在方框754处,如果方框752对于任何ctr产生r=0,则元素x被添加到部分交集IA,new。在方框756处,P0可以返回到方框734以处理集合Ad的下一个元素。如在方框758处所示,P1可以返回到方框742以处理可以从P0接收的附加密文对。
一旦根据方框734-758的处理循环处理了集合Ad的所有元素,循环就可以结束。此时,P0已习得IA,new。因此,在方框760处,P0可以确定(累积)交集Id=Id-1∪IA,old∪IA,new。
在方框762处,P0可以更新集合Aold和散列集合HA用于过程700的下一次迭代。更新过程可以类似于或等同于如上参考图2C描述的过程200的方框250-272。
可以迭代地(例如,每天)执行过程700以重复地更新集合和PSI。与上文描述的其它过程一样,在每次迭代中,P0学习集合A的哪些旧元素与P1的集合B的新添加的元素是共同的,但不学习集合B的哪些更新与添加到交集的Ad的任何新元素相匹配。P1不从过程700学习集合A的任何元素。在一些实施例中,如果希望P1也学习PSI,则可以在P1和P0的角色颠倒的情况下重复过程700。或者,在确定更新的PSI之后(在框760处),P0可以将更新的PSI传达到P1。
应了解,过程600、700和800的单边可更新PSI协议是说明性的,且可能有变化和修改。描述为顺序的操作或方框可以并行执行,并且可以在逻辑允许的范围内改变操作次序。过程700的迭代可以以任何期望频率执行,这取决于确定更新的PSI的有用频率。例如,在接触者追踪应用中,每日更新可能是适当的。在其它应用中,更新可以以更短的间隔(例如,每小时)或更长的间隔(例如,每周、每月)或任意的间隔发生,例如当任何一方在其集合中添加Nd个元素时或应任何一方的请求发生。在各方间歇性接触的情况下,迭代间隔可以是可变时间量(例如,自上次更新交集以来的所有更新)。
如上所述,虚拟值可以用来将更新的集合填充到固定大小,使得任何一方都不知道在每次迭代期间实际上将多少元素添加到另一方的集合中。虚拟值可以是随机数,并且可以选择值的范围,使得假阳性的概率可忽略不计。或者,如果需要,可以省略虚拟值,这将允许一方学习在给定的一天将多少元素添加到另一方的集合中,但是将防止由于虚拟变量而导致的假阳性。
可以使用不同于过程800的过程更新二叉树。在过程800中,将元素“推送”到下一层级是基于计数器,而不是基于任何节点是否已满。如上所述,这可以防止基于何时发生向下一层级的推送而将信息泄漏到P0。
与本文描述的其它过程类似,与传统技术相比,过程700可以提供改进的计算效率和通信效率,在传统技术中,每当需要更新时,在两个集合的整个集合上执行PSI。在一些实施例中,计算时间和通信成本随每次迭代而变化,这取决于树结构有多少节点被填充。在大量迭代中,摊销计算时间和通信成本均调整为O(Ndlog N)。
应注意,过程700包括其中一方(P1)不经意更新加密数据库(树结构)且另一方(P0)可能不经意搜索加密数据库的协议。所属领域的技术人员将理解,此技术可以应用于需要不经意数据库搜索的各种上下文中,并且不限于可更新PSI。
在上文描述的实施例中,一方P0具有该方P0保密的集合A,且一方P1具有该方P1保密的集合B。从概念上讲,当通过添加元素来更新集合时,在可更新PSI协议的每次迭代中,集合A可以被理解为包括三个不相交的子集:(1)由于先前迭代而在A∩B中的元素;(2)由于先前迭代而不在A∩B中的“残余”元素(表示为Aold);以及(3)新添加的元素(表示为Ad或Anew)。类似地,集合B可以被理解为包括三个不相交的子集:(1)由于先前迭代而在A∩B中的元素;(2)由于先前迭代而不在A∩B中的“新”元素(表示为Bold);以及(3)新添加的元素(表示为Bd或Bnew)。如本文所述的可更新PSI协议(例如,过程200或过程700)包括第一阶段和第二阶段,在第一阶段,P0学习第一部分交集Aold∩Bnew(而不学习Bnew的任何其它元素),在第二阶段,P0学习第二部分交集Anew∩(Bnew∪Bold)(而不学习Anew∩Bnew或Anew∩Bold)。第一阶段可包括P1向P0提供新添加的元素Bnew的加密表示,P0可以将所述加密表示与旧元素Aold的对应加密表示进行比较以标识匹配。在例如过程200的双边过程中,第二阶段可以包括P0向P1提供新添加的元素Anew的加密表示,P1可以将所述加密表示与旧元素Bold的对应加密表示进行比较以确定Anew∩Bold。然后,P1可以构建包括新元素Bnew以及Anew∩Bold(和任选地虚拟元素)的集合B′a,并将集合B′d的加密表示发送至P0。P0可以使用所述加密表示来确定Anew∩(Bnew∪Bold)。然后,P0可以基于在第一阶段和第二阶段中习得的部分交集更新A∩B。效率增益可以通过过程的迭代性质来实现,这使得没有必要考虑已知在A∩B中的元素,并且通过P1确定Anew∩Bold并使用所述信息来减少P1在第二阶段中加密并发送至P0的Bold的元素数目。在例如过程700的单边过程中,第二阶段可以包括P1在例如二叉树的数据结构中提供集合B(包括新元素Bd以及残余元素Bold)的加密表示,其促进P0有效地标识可能与集合B的元素匹配的Anew的候选元素;P0和P1可以执行安全2PC过程,以使P1能够确定Anew的给定候选元素是否在B中具有匹配元素,而P1不学习Anew的任何元素或P0学习不在与集合A的交集中的B的任何元素。
当对集合A和B的更新包括如上所述的弱删除时,可以通过使用例如上文描述的过程400之类的过程来考虑从A∩B中删除元素的可能性。因此,可以在每次更新时重新计算交集,而不是迭代地更新A∩B。计算分为第一阶段和第二阶段,在第一阶段,P0从先前更新(不包括删除的元素)中学习其元素与P1集合中新添加的元素的部分交集,在第二阶段,P0学习其新添加的元件与当前P1集合中的所有元素的部分交集。
私有集合A和B可以包括数据值,所述数据值表示一方或双方可能希望比较进行以标识重叠的任何类型的信息。现在将描述示例。
在第一示例使用案例中,Web服务提供商(“WSP”)可具有由商家维护并由用户(或由某些用户组中的用户)访问的商业网站的列表。金融服务提供商(“FSP”)可能具有由用户(或用户组)与各种商家执行的金融交易的列表。WSP可能希望知道用户与哪些网站进行商业交易,或FSP可能希望知道哪个用户交易对应于用户访问的网站。随着用户访问附加网站和/或进行附加交易,预计这些信息将随时间而演变。在一些实施例中,双方可以执行双向可更新PSI过程(例如,如上文参考图2A-2C描述的过程200),以便双方更有效地更新PSI。其中一方(例如,WSP)可以充当P0,其具有对应于商业网站列表的集合A;另一方(例如,FSP)可以充当P1,其具有对应于交易列表的集合B。由于过程200允许双方学习交集,因此任何一方都可以充当P0或P1。以这种方式,WSP仅学习与其列表上的网站相关联的金融交易,而FSP仅学习用户进行金融交易所在的网站。类似地,两个金融机构可以使用可更新PSI定期对账户持有人列表进行比较以确定重叠。
在第二示例使用案例中,用户可以维护与各种基于网络的账户相关联的密码列表。安全服务提供商可以维护已知已被破解的密码列表(例如,基于各种基于网络的系统的所报告安全漏洞)。用户可能希望在不学习任何其它信息的情况下学习其任何密码是否已被破解,并且用户可能希望在过程中不向安全服务泄漏任何密码。预计这些信息将随时间而演变。在用户侧,用户可以创建附加账户。在服务提供商侧,可能会发现附加安全漏洞,导致除被破解密码列表外,还出现其它漏洞。在一些实施例中,可以使用单向可更新PSI过程(例如,图7A-7C的过程700)。用户(或用户的装置)可以充当P0,其中集合A对应于密码列表。安全服务提供商可以充当P1,其中集合B对应于被破解密码列表。通过这种方式,用户可以学习他们的密码中哪些(如果有的话)已被破解,而无需安全服务学习用户的任何密码,也无需用户学习除被破解密码之外的任何其它内容。
在第三示例使用案例中,用户可以具有接触者列表,并且服务提供商可以具有服务的订户列表。(如本文所使用,“订户”可以是在服务提供商处维持账户或其它记录的任何人,并且不限于付费订户。)用户和/或服务提供商可能需要学习用户的接触者中的任何接触者是否也是服务的订户。随着用户建立更多接触者以及新用户注册服务,预计这些信息将随时间而演变。在一些实施例中,可以使用单向可更新PSI过程(例如,图7A-7C的过程700),以允许用户学习他们的接触者是否是服务的订户,而无需服务提供商学习关于用户接触者的任何信息。用户(或用户的装置)可以作为P0,其中集合A对应于用户的接触者列表。服务提供商可以充当P1,其中集合B对应于订户列表。以这种方式,用户可以学习其接触者中的任何接触者是否是服务的订户,而无需服务学习用户的接触者中的任何接触者且无需用户学习不在用户接触者中的订户。在其它实施例中,可以使用双向可更新PSI过程(例如,图2A-2C的过程200)以允许用户和服务提供商学习用户的任何接触者是否也是服务的订户。例如,用户(或用户的装置)可以作为P0,其中集合A对应于用户的接触者列表。服务提供商可以充当P1,其中集合B对应于订户列表。以这种方式,双方可以学习用户的任何接触者是否也是服务的订户,而无需用户学习任何其它订户,也无需服务提供商学习任何不是订户的用户的接触者。
在第四示例使用案例中,公共卫生服务可能有已被诊断患有传染病的个体的列表。个体用户可以具有用户在传染病的相关潜伏期(例如,14天、5天或一些其它周期)期间接触过的个体的列表。在一些实施例中,出于接触者追踪的目的,可以使用随机编码方案来匿名地表示个体。例如,用户装置可以周期性地发送随机码,所述随机码可以由附近的其它用户装置检测和存储。(还可以将日期、时间和位置等信息与每个接收到的代码一起存储,以便于消除代码的歧义。)如果个体被诊断患有传染病,则可以将其装置在疾病潜伏期发送的随机代码输入到感染者列表中。可以通过将用户装置存储的随机代码与感染者列表中的随机代码进行比较来检测用户与感染者的接触。用户可能希望知道他们是否接触过被诊断的人。随着用户遇到不同的人,先前遇到者会追溯到过去与感染的可能性相关,并且随着更多的人被诊断患有这种传染病,预计这些信息将随时间而演变。在一些实施例中,可以使用具有弱删除的可更新PSI过程(例如,图4A和4B的过程400)以允许用户(和公共卫生服务)学习用户是否接触过任何感染者。例如,用户(或用户的装置)可以充当P0,其中集合A对应于用户的接触者列表。公共卫生服务可以充当P1,其中集合B对应于感染者列表。以这种方式,用户和/或公共卫生服务可以学习用户是否与感染者有过接触,而无需用户学习关于其它感染者的任何信息,也无需公共卫生服务学习用户的未感染接触者。
尽管前述描述参考了具体实施例,但所属领域的技术人员将了解,所述描述并非详尽所有实施例。可能有许多变化和修改。各种集合的元素的语义不限于任何特定的示例。例如,集合的元素可以表示个体、装置标识符、金融账户信息(例如,账号)、交易信息、位置数据等,并且私有集合的交集可以由个体、金融机构、学校、政府机构或其它组织或代表个体、金融机构、学校、政府机构或其它组织确定。本文描述的技术可以应用于任何上下文中,其中各方希望确定和更新两个(或更多个)集合的交集,而不泄露不在所述交集中的元素。还应理解,实施例不限于由个体或代表个体执行的动作;各方可以是任何系统或服务,对于这些系统或服务而言,共同持有的标识数据或事件可能是感兴趣的。本文所描述的协议假设各方P0和P1至少是半诚实的,并且除了协议所指定的之外,各方都不保留或应用从另一方接收的信息。实施例也可以扩展到两个以上集合的交集,因为知道A∩B的任何一方都可以使用本文描述的可更新PSI技术来确定(A∩B)∩C。例如,经由可更新PSI协议学习A∩B的一方和已知C的一方可以使用A∩B作为其私有集合来执行可更新PSI协议,以确定(A∩B)∩C。
本文描述的技术可以通过通用计算机的合适编程来实施。在一些实施例中,计算机系统包括单个计算机设备,其中子系统可以是计算机设备的组件。计算机设备可以具有各种形式因素,包括例如智能手机、平板电脑、膝上型计算机、台式计算机等。在其它实施例中,计算机系统可以包括多个计算机设备,每个计算机设备都是具有内部组件的子系统。如上所述,可更新PSI技术可以在计算机系统需要确定由计算机系统持有的第一数据集合与由不同计算机系统持有的第二数据集合的交集的任何环境中减少计算机系统上的计算负荷,而无需学习不处于交集中的第二集合的元素;这可以提高计算机系统的效率。
计算机系统可包括例如由外部接口或由内部接口连接在一起的多个组件或子系统。在一些实施方案中,计算机系统、子系统或设备可以通过网络进行通信。在此类情况下,一个计算机可视为客户端,并且另一计算机可视为服务器,其中每台计算机可以是同一计算机系统的一部分。客户端和服务器可以各自包括多个系统、子系统或组件。
应理解,本发明的任何实施方案都可以使用硬件(例如,专用集成电路或现场可编程门阵列)和/或使用计算机软件以控制逻辑的形式实现,其中通用可编程处理器是模块化的或集成的。如本文所用,处理器包括单核处理器、在同一集成芯片上的多核处理器,或在单个电路板上或网络化的多个处理单元。基于本公开和本文中所提供的教示,本领域的普通技术人员将知道并且了解使用硬件和硬件与软件的组合来实现本发明的实施方案的其它方式和/或方法。
本申请中描述的任何软件组件或函数可实施为使用例如Java、C、C++、C#、Objective-C、Rust、Golang、Swift的任何合适的计算机语言或例如Perl或Python的脚本语言使用例如常规的或面向对象的技术由处理器执行的软件代码。所述软件代码可以作为一系列指令或命令存储在计算机可读介质上以供存储和/或发送,合适的介质包括随机存取存储器(RAM)、只读存储器(ROM)、磁性介质(例如硬盘驱动器或软盘),或者光学介质(例如光盘(CD)或数字通用光盘(DVD))、闪存存储器,等等。计算机可读存储介质可以是此类存储设备或能够保留所存储数据的其它存储设备的任何组合。
此类程序还可以使用适合于经由包括互联网在内的符合多种协议的有线网络、光学网络和/或无线网络进行发送的载波信号来编码和发送。因此,根据本发明的一个实施例的计算机可读传输介质可以使用以此类程序编码的数据信号来创建。以程序代码编码的计算机可读介质可以与兼容装置一起封装或者与其它装置分开提供(例如,经由互联网下载)。任何此类计算机可读介质可以驻留于单个计算机产品(例如,硬盘驱动器、CD或整个计算机系统)上或内,并且可存在于系统或网络内的不同计算机产品上或内。计算机系统可包括用于将本文中所提及的任何结果提供给用户的监视器、打印机或其它合适的显示器。
本文描述的任何方法可以完全地或部分地用包括可配置成执行这些步骤的一个或多个处理器的计算机系统执行。因此,实施方案可涉及被配置为执行本文描述的任何方法的步骤、可能具有执行相应步骤或相应步骤群组的不同组件的计算机系统。尽管以编号的步骤呈现,但是本文中的方法步骤也可以同时执行或以不同的次序执行。另外,这些步骤的部分可与来自其它方法的其它步骤的部分一起使用。同样,一个步骤的全部或部分可以是可选的。另外,任何方法的任何步骤可以用模块、电路或用于执行这些步骤的其它手段来执行。
在不偏离本发明的实施方案的精神和范围的情况下,具体实施方案的特定细节可以任何合适方式组合。然而,本发明的其它实施例可涉及与每个单独的方面相关的特定实施例,或者这些单独的方面的特定组合。
除非明确指示有相反的意思,否则叙述“一”或“该”旨在表示“一个或多个”。除非明确指示为相反情况,否则“或”的使用旨在表示“包括性的或”,而不是“排除性的或”。
本文中提及的所有专利、专利申请、公开和描述出于所有目的以引用方式全部并入本文。并非承认它们是现有技术。
以上描述是说明性的且不是限制性的。在所属领域的技术人员阅读了本公开后,本发明的许多变化将变得显而易见。因此,专利保护的范围不应参考以上描述来确定,而是应参考所附权利要求书以及其完整范围或等效物来确定。
Claims (44)
1.一种计算私有集合交集的方法,所述方法包括由第一计算机系统:
定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括不在与对第二计算机系统私有的第二集合(B)的交集(A∩B)中的元素的第一残余子集Aold,其中所述第二集合B包括不在所述交集A∩B中的元素的第二残余子集(Bold);
通过添加具有一个或多个新元素的第一新子集(Ad)来更新所述第一集合A;
基于与所述第二计算机系统的第一通信过程,确定所述第一残余子集Aold与具有已添加到所述第二集合B的一个或多个新元素的第二新子集Bd的第一部分交集(IA,old=Aold∩Bd),其中所述第一计算机系统仅学习所述第二新子集Bd的在所述第一部分交集IA,old中的元素;
从所述第二计算机系统接收第一加密集合(B′d),所述第一加密集合包括表示所述第二新子集Bd的加密元素和所述第二残余子集Bold的至少一些元素;
基于与所述第二计算机系统的第二通信过程,确定所述第一新子集Ad与所述第一加密集合B′d的第二部分交集(IA,new=Ad∩B′d),其中所述第一计算机系统仅学习所述第一加密集合B′d的在所述第二部分交集IA,new中的所述元素;
基于所述第一部分交集IA,old和所述第二部分交集IA,new更新所述交集A∩B;以及
基于更新的交集更新所述第一残余子集Aold。
2.根据权利要求1所述的方法,其中针对多个连续更新周期中的每一个迭代地执行更新所述第一集合A、接收第一加密数据集合、确定所述第一部分交集、接收所述第一加密集合、确定所述第二部分交集、更新所述交集A∩B以及更新所述第一残余子集的操作。
3.根据权利要求1所述的方法,其中确定所述第一部分交集IA,old包括:
从所述第二计算机系统接收包括表示所述第二新子集Bd的加密元素的第二加密集合;以及
使用所述第一加密数据集合以及所述第一残余子集Aold的对应加密表示,确定所述第一部分交集IA,old。
4.根据权利要求3所述的方法,其中通过将散列函数应用于所述第二新子集Bd的所述元素中的每一个并将应用所述散列函数的每个结果升高到对所述第二计算机系统保密的幂(k1)来生成所述第二加密集合。
5.根据权利要求4所述的方法,其中确定所述第一部分交集IA,old包括:
将所述散列函数应用于所述第一新子集Ad的所述元素中的每一个;
将应用所述散列函数的每个结果升高到对所述第一计算机系统保密的幂(k0),从而产生第三加密集合;
将所述第三加密集合发送到所述第二计算机系统;
从所述第二计算机系统接收第一工作集合,所述第一工作集合包括升高到对所述第二计算机系统保密的所述幂k1的所述第三加密集合的每个元素;
将所述第二加密集合的每个元素升高到对所述第一计算机系统保密的所述幂k0,从而产生第二工作集合;以及
将所述第一工作集合的元素和所述第二工作集合的元素进行比较。
6.根据权利要求1所述的方法,还包括:
生成包括表示所述第一新子集Ad的元素的第二加密集合;以及
将所述第二加密集合发送到所述第二计算机系统,
其中所述第二计算机系统使用所述第二加密集合来生成所述第一加密集合B′d。
7.根据权利要求6所述的方法,其中所述第一加密集合B′d包括所述第二新子集Bd与所述第一新子集Ad和所述第二残余子集Bold的交集(Ad∩Bold)的并集。
8.根据权利要求7所述的方法,其中所述第一加密集合B′d还包括一个或多个虚拟元素,使得所述第一加密集合B′d的大小是固定的。
9.根据权利要求1所述的方法,其中所述第一加密集合B′d被接收为二叉树结构,所述二叉树结构包括对应于所述第二新子集Bd和所述第二残余子集Bold的所述元素的加密元素。
10.根据权利要求1所述的方法,其中基于所述第一部分交集IA,old和所述第二部分交集IA,new更新所述交集A∩B包括:
定义更新集合(Iupdate),其中Iupdate=IA,new∪IA,old;以及
确定更新的交集A∩B:=(A∩B)∪Iupdate。
11.根据权利要求10所述的方法,还包括:
将所述更新集合Iupdate发送到所述第二计算机系统。
12.根据权利要求1所述的方法,其中与所述第二计算机系统的所述第二通信过程包括:
接收对表示所述第二集合B的加密树结构的更新集合。
13.根据权利要求1所述的方法,其中所述第一集合的所述元素表示个体的接触者,并且其中所述第二集合的所述元素表示服务的订户。
14.根据权利要求1所述的方法,其中所述第一集合的所述元素表示用户访问的网站,并且其中所述第二集合的所述元素表示所述用户的金融交易。
15.根据权利要求1所述的方法,其中所述第一集合的所述元素表示在第一金融机构处的账户持有人,并且所述第二集合的所述元素表示在第二金融机构处的账户持有人。
16.一种第一计算机系统,包括:
通信接口,所述通信接口被配置成与第二计算机系统通信;
存储器,所述存储器用于存储对所述第一计算机系统私有的第一集合(A);以及
处理器,所述处理器耦合到所述存储器并且被配置成执行根据权利要求1至15中任一项所述的方法。
17.一种计算机可读存储介质,其中存储有程序代码指令,所述程序代码指令在由第一计算机系统的处理器执行时使所述第一计算机系统执行根据权利要求1至15中任一项所述的方法。
18.一种计算私有集合交集的方法,所述方法包括由第一计算机系统:
定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括不在与对第二计算机系统私有的第二集合(B)的交集(A∩B)中的元素的第一残余子集Aold,其中所述第二集合B包括不在所述交集A∩B中的元素的第二残余子集(Bold);
通过添加具有一个或多个新元素(x)的第一新子集(Ad)来更新所述第一集合A;
从所述第二计算机系统接收表示所述第二集合B的二叉树结构,其中基于散列函数将所述第二集合B的每个元素分配到所述二叉树结构中的节点,并且其中加密所述二叉树结构,使得所述第二集合B的每个元素由分配节点中的密文表示;
处理所述第一新子集Ad中的每个新元素x,其中处理每个新元素x包括:
针对所述新元素x标识所述二叉树结构的对应节点;
在所述对应节点为非空的情况下,使用所述对应节点中的所述密文和与所述第二计算机系统的双方计算协议来确定所述新元素x是否匹配分配到所述对应节点的所述集合B的任何一个元素;以及
在所述新元素x匹配分配到所述对应节点的集合B的元素的情况下,将所述新元素x添加到第一部分交集(IA,new);以及
使用所述第一部分交集IA,new更新所述交集A∩B。
19.根据权利要求18所述的方法,其中针对多个连续更新周期中的每一个迭代地执行更新所述第一集合A、接收所述二叉树结构、处理添加集合Ad中的每个新元素x以及使用所述第一部分交集IA,new更新所述交集A∩B的操作。
20.根据权利要求18所述的方法,还包括:
从所述第二计算机系统接收第一加密数据集合,所述第一加密数据集合表示具有已添加到所述第二集合B的一个或多个元素的第二新子集(Bd);
使用所述第一加密数据集合以及所述第一残余子集Aold的对应加密表示,确定所述第一残余子集Aold与所述第二新子集Bd的第二部分交集(IA,old=Aold∩Bd);以及
使用所述第二部分交集IA,old以及所述第一部分交集IA,new更新所述交集A∩B。
21.根据权利要求20所述的方法,其中针对多个连续更新周期中的每一个迭代地执行更新所述第一集合A、接收所述二叉树结构、处理添加集合Ad中的每个新元素x、接收所述第一加密数据集合、确定所述第二部分交集IA,old以及使用所述第二部分交集IA,old以及所述第一部分交集IA,new更新所述交集A∩B的操作。
22.根据权利要求18所述的方法,其中针对所述新元素x标识所述二叉树结构的对应节点包括针对所述二叉树结构的每个层级:
计算所述新元素x的层级特定散列函数;以及
基于所述层级特定散列函数标识所述二叉树结构的所述对应节点。
23.根据权利要求18所述的方法,其中与所述第二计算机系统的确定所述新元素x是否匹配所述对应节点中的集合B的任何元素的所述双方计算协议是使用加性同态加密的安全双方计算协议。
24.根据权利要求18所述的方法,其中所述第一计算机系统是客户端,并且所述第二计算机系统是服务器。
25.根据权利要求24所述的方法,其中所述第一集合A的所述元素表示用户的接触者,并且其中所述第二集合B的所述元素表示服务的订户。
26.根据权利要求24所述的方法,其中所述第一集合A的所述元素表示用户的密码,并且所述第二集合B的所述元素表示已经被破解的密码。
27.一种第一计算机系统,包括:
通信接口,所述通信接口被配置成与第二计算机系统通信;
存储器,所述存储器用于存储对所述第一计算机系统私有的第一集合(A);以及
处理器,所述处理器耦合到所述存储器并且被配置成执行根据权利要求18至26中任一项所述的方法。
28.一种计算机可读存储介质,其中存储有程序代码指令,所述程序代码指令在由第一计算机系统的处理器执行时使所述第一计算机系统执行根据权利要求18至26中任一项所述的方法。
29.一种计算私有集合交集的方法,所述方法包括由第一计算机系统:
定义对所述第一计算机系统私有的第一集合(B);
通过添加具有一个或多个新元素的第一新子集(Bd)来更新所述第一集合B;
更新表示所述第一集合B的二叉树结构,其中基于散列函数将第二集合B的每个元素分配到所述二叉树结构中的节点;
加密所述二叉树结构,使得所述第二集合B的每个元素由分配节点中的密文表示;
将加密的二叉树结构发送到第二计算机系统,其中所述第二计算机系统具有对所述第二计算机系统私有的第二集合A;以及
参与与所述第二计算机系统的安全双方计算协议,所述安全双方计算协议使所述第二计算机系统能够确定所述第一集合B的哪些元素在与所述第二集合A的第二新子集(Ad)的交集(A∩B)中。
30.根据权利要求29所述的方法,还包括:
生成对应于所述第一新子集Bd的所述元素的加密元素集合;以及
将所述加密元素集合发送到所述第二计算机系统,以使所述第二计算机系统能够确定所述第一新子集Bd与所述第二集合A的残余子集(Aold)的交集。
31.根据权利要求29所述的方法,其中针对多个连续更新周期中的每一个迭代地执行更新所述第一集合B、更新所述二叉树结构、加密所述二叉树结构、发送加密的二叉树结构以及参与所述安全双方计算协议的操作。
32.根据权利要求31所述的方法,其中更新所述二叉树结构包括:
确定当前迭代计数;以及
基于所述当前迭代计数,确定是否将所述二叉树结构的所有元素推送到所述二叉树结构的下一层级。
33.根据权利要求29所述的方法,其中加密所述二叉树结构是使用加性同态加密方案执行的,并且其中所述安全双方计算协议使用加性同态加密。
34.根据权利要求29所述的方法,其中所述第一计算机系统是服务器,并且所述第二计算机系统是客户端。
35.根据权利要求29所述的方法,其中所述第二集合A的所述元素表示用户的接触者,并且其中所述第一集合B的所述元素表示服务的订户。
36.根据权利要求29所述的方法,其中所述第二集合A的所述元素表示用户的密码,并且所述第一集合B的所述元素表示已经被破解的密码。
37.一种第一计算机系统,包括:
通信接口,所述通信接口被配置成与第二计算机系统通信;
存储器,所述存储器用于存储对所述第一计算机系统私有的第一集合(A);以及
处理器,所述处理器耦合到所述存储器并且被配置成执行根据权利要求29至36中任一项所述的方法。
38.一种计算机可读存储介质,其中存储有程序代码指令,所述程序代码指令在由第一计算机系统的处理器执行时使所述第一计算机系统执行根据权利要求29至36中任一项所述的方法。
39.一种计算私有集合交集的方法,所述方法包括由第一计算机系统:
定义对所述第一计算机系统私有的第一集合(A),其中所述第一集合A包括多个子集(Ad-t+1、…、Ad-1、Ad),每个子集与多个更新循环中的不同一个相关联,其中t是恒定持续时间并且d是更新循环计数器;
执行与第二计算机系统的私有集合交集过程的第一多个实例,其中所述第二计算机系统具有对所述第二计算机系统私有的第二集合(B),其中所述第二集合B包括多个子集(Bd-t+1、…、Bd-1、Bd),每个子集与所述多个更新循环中的不同一个相关联,并且其中对于所述私有集合交集过程的所述第一多个实例中的每一个,所述第一计算机系统使用选自所述子集Ad-t+1、…、Ad-1的不同子集(Aj)作为输入,并且所述第二计算机系统使用所述子集Bd作为输入;
执行与所述第二计算机系统的私有集合交集过程的第二多个实例,其中对于所述私有集合交集过程的所述第二多个实例中的每一个,所述第一计算机系统使用所述子集Ad作为输入,并且所述第二计算机系统使用所述子集Bd-t+1、…、Bd-1中的不同一个作为输入,并且其中所述第二计算机系统基于所述私有集合交集过程的所述第二多个实例的输出来确定第二部分交集
执行与所述第二计算机系统的所述私有集合交集过程的附加实例,其中对于所述私有集合交集过程的所述附加实例,所述第一计算机系统使用所述子集Ad作为输入,并且所述第二计算机系统使用包括所述子集Bd和所述第二部分交集I1,α的第三集合(B′);
基于所述第一部分交集I0,α和所述第三部分交集I0,β确定交集A∩B。
40.根据权利要求39所述的方法,其中执行所述私有集合交集过程的所述第一多个实例中的每一个包括:
生成所述子集Aj的所述元素的加密表示;以及
将所述子集Aj的所述元素的所述加密表示发送到所述第二计算机系统。
41.根据权利要求39所述的方法,其中针对多个连续更新周期中的每一个迭代地执行以下操作:执行私有集合交集过程的所述第一多个实例、确定所述第一部分交集、执行所述私有集合交集过程的所述第二多个实例、执行所述私有集合交集过程的所述附加实例;确定所述第三部分交集;以及确定所述交集A∩B,其中所述更新循环计数器d针对每个更新周期递增。
42.根据权利要求39所述的方法,其中所述第一集合A的所述元素表示用户已经接触的个体,并且所述第二集合B的所述元素表示诊断患有传染病的个体。
43.一种第一计算机系统,包括:
通信接口,所述通信接口被配置成与第二计算机系统通信;
存储器,所述存储器用于存储对所述第一计算机系统私有的第一集合(A);以及
处理器,所述处理器耦合到所述存储器并且被配置成执行根据权利要求39至42中任一项所述的方法。
44.一种计算机可读存储介质,其中存储有程序代码指令,所述程序代码指令在由第一计算机系统的处理器执行时使所述第一计算机系统执行根据权利要求39至42中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063089359P | 2020-10-08 | 2020-10-08 | |
US63/089,359 | 2020-10-08 | ||
PCT/US2021/033163 WO2022076038A1 (en) | 2020-10-08 | 2021-05-19 | Updatable private set intersection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324778A true CN116324778A (zh) | 2023-06-23 |
Family
ID=81125981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180067200.7A Pending CN116324778A (zh) | 2020-10-08 | 2021-05-19 | 可更新私有集合交集 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230359631A1 (zh) |
EP (1) | EP4226568A1 (zh) |
CN (1) | CN116324778A (zh) |
WO (1) | WO2022076038A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230155815A1 (en) * | 2021-11-12 | 2023-05-18 | Sap Se | Secure integer comparison using binary trees |
CN115001733A (zh) * | 2022-04-15 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 一种数据确定方法、装置、存储介质及终端 |
CN114978658B (zh) * | 2022-05-17 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 数据处理方法及装置 |
CN115333721B (zh) * | 2022-10-13 | 2023-02-03 | 北京融数联智科技有限公司 | 一种隐私集合交集计算方法、装置和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9158925B2 (en) * | 2013-11-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Server-aided private set intersection (PSI) with data transfer |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
US11178117B2 (en) * | 2018-12-18 | 2021-11-16 | International Business Machines Corporation | Secure multiparty detection of sensitive data using private set intersection (PSI) |
US20230401331A1 (en) * | 2020-10-07 | 2023-12-14 | Visa International Service Association | Secure and scalable private set intersection for large datasets |
-
2021
- 2021-05-19 EP EP21878153.2A patent/EP4226568A1/en active Pending
- 2021-05-19 US US18/028,696 patent/US20230359631A1/en active Pending
- 2021-05-19 CN CN202180067200.7A patent/CN116324778A/zh active Pending
- 2021-05-19 WO PCT/US2021/033163 patent/WO2022076038A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20230359631A1 (en) | 2023-11-09 |
WO2022076038A1 (en) | 2022-04-14 |
EP4226568A1 (en) | 2023-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Albrecht et al. | Homomorphic encryption standard | |
Bernstein et al. | Post-quantum cryptography | |
Liu et al. | An efficient privacy-preserving outsourced calculation toolkit with multiple keys | |
EP3506550B1 (en) | Providing security against user collusion in data analytics using random group selection | |
Raman et al. | Distributed storage meets secret sharing on the blockchain | |
CN110214325B (zh) | 数据屏蔽的方法和系统 | |
US10965448B1 (en) | Dynamic distributed storage for scaling blockchain | |
CN111639361A (zh) | 一种区块链密钥管理方法、多人共同签名方法及电子装置 | |
CN116324778A (zh) | 可更新私有集合交集 | |
CN110999207A (zh) | 生成阈值库的计算机实现方法 | |
Yasuda et al. | New packing method in somewhat homomorphic encryption and its applications | |
CN106850656A (zh) | 一种云环境下多用户文件共享控制方法 | |
Li et al. | An efficient blind filter: Location privacy protection and the access control in FinTech | |
EP4181456A1 (en) | Secure integer comparison using binary trees | |
Paterson et al. | Multi-prover proof of retrievability | |
CN116391346A (zh) | 秘密分享的重新分发 | |
Huang et al. | Block-Level Message-Locked Encryption with Polynomial Commitment for IoT Data. | |
CN117235342A (zh) | 基于同态哈希函数和虚拟索引的动态云审计方法 | |
Tosun et al. | FSDS: A practical and fully secure document similarity search over encrypted data with lightweight client | |
Hariss et al. | Cloud assisted privacy preserving using homomorphic encryption | |
Chang | A flexible hierarchical access control mechanism enforcing extension policies | |
Martin et al. | Efran (O):" Efficient Scalar Homomorphic Scheme on MapReduce for Data Privacy Preserving" | |
Wang et al. | Secret sharing scheme with dynamic size of shares for distributed storage system | |
US11809588B1 (en) | Protecting membership in multi-identification secure computation and communication | |
US11874950B1 (en) | Protecting membership for secure computation and communication |
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 |