CN117999763A - 具有第三方服务的保密计算 - Google Patents

具有第三方服务的保密计算 Download PDF

Info

Publication number
CN117999763A
CN117999763A CN202280060511.5A CN202280060511A CN117999763A CN 117999763 A CN117999763 A CN 117999763A CN 202280060511 A CN202280060511 A CN 202280060511A CN 117999763 A CN117999763 A CN 117999763A
Authority
CN
China
Prior art keywords
data set
cryptographically protected
data
computing entity
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
CN202280060511.5A
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN117999763A publication Critical patent/CN117999763A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • 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/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

提供了用于安全多方计算(MPC)协议的系统、设备和方法。第一计算实体可以向服务器发送第一加密保护的数据集,且第二计算实体可以向服务器发送第二加密保护的数据集。服务器会缺少对数据集的明文版本的访问。作为安全MPC协议的一部分,服务器会比较来自第一和第二数据集的加密保护数据元素,以确定关于这些数据集的某些信息,例如确定哪些数据元素被包括在两个集中,并且根据同态加密方案执行同态计算。服务器因此能够确定加密结果。

Description

具有第三方服务的保密计算
相关申请的交叉引用。
本申请涉及并要求2021年8月6日提交的美国非临时专利申请No.17/396,124的优先权,其公开内容通过引用并入本文,如同全文阐述一样。
背景技术
虽然对敏感和/或私有数据的共享可能是合乎需要的,但由于各种安全性和/或私密性考虑却具有争议。一个第一组织可以访问第一敏感和/或私有数据集,并且一个第二组织可以访问第二敏感和/或私有数据集,使得围绕与其他方共享这种数据存在数据私密性、商业敏感性或监管约束。会存在各种情况,其中对这种数据的共享对于数据分析或协作是期望的,但由于数据的敏感/私有性质,会是具有挑战性的。
用于在各方之间共享敏感和/或私有数据集的现有技术具有各种缺点。试图保护数据私有的所谓“数据净化室”实际上会在明文中向第三方平台暴露敏感的和/或私有的数据,从而扩大了对手经由获取访问这种数据的攻击面。已经尝试的其它技术会遭受差的计算性能。因此,可以改进用于在多方之间安全地共享数据的技术。
附图说明
图1示出根据本公开的一个或多个示例性实施例的计算环境,可在其中执行服务器辅助的保密计算。
图2示出根据本公开的一个或多个示例性实施例的计算环境,可在其中执行服务器辅助的私有集合相交计算。
图3示出根据本公开的一个或多个示例性实施例的计算环境,其中实现了用于生成密码保护的数据集的技术。
图4示出根据本公开的一个或多个示例性实施例的计算环境,其中实现了用于生成密码保护的数据集的技术。
图5示出根据本公开的一个或多个示例性实施例的计算环境,其中技术根据协议执行安全多方计算。
图6示出根据本公开的一个或多个示例性实施例的游动图,其中可以实现安全多方计算协议。
图7示出根据本公开的一个或多个示例性实施例的计算环境,其中可以实现安全多方计算协议。
图8示出根据本公开的一个或多个示例性实施例的对用于服务器辅助的安全多方计算的过程的说明性示例。
图9示出根据本公开的一个或多个示例性实施例的可在其上执行一种或多种技术(例如,方法)的示例机器的框图。
下面将参考附图更全面地描述某些实施方式,在附图中示出了各种实施方式和/或方面。然而,各种方面可以以多种不同的形式来实现,并且不应被解释为限于这里所阐述的实施方式。相反,提供这些实施方式使得本公开将是彻底和完整的,并且将本公开的范围完全传达给本领域技术人员。附图中相同的数字始终表示相同的元件。因此,如果一个特征在几个附图中被使用,则在首先出现该特征的那幅附图中用于标识该特征的数字将在后面的附图中使用。
具体实施方式
本文描述的示例实施例提供了用于涉及第三方中间方的安全多方计算(MPC)协议的某些系统、方法和设备。第三方中间方可以以计算资源服务提供商为两个或更多客户机提供服务而得以实现。下面更详细描述的安全MPC协议可被两个或更多个计算实体(例如,客户机)以一种方式将敏感和/或私有数据与第三方服务共享,该种方式同时保持数据的保密性并允许第三方服务执行各种计算(例如,数据分析)而不要求这种服务获取数据的明文版本。
针对第三方服务的安全MPC协议可以在阻止信息共享的各种情况下使用。对于许多使用情况,两方或更多方可以访问其中存在阻止联合分析的数据。这些阻止可以是由于数据的保密性、数据的敏感性、对数据的管理约束等等。例如,在健康护理环境中,研究机构可以使用关于第三方服务的安全MPC协议来从医院网络的患者数据将患者统计资料合计在第三方服务上。统计资料可以被合计,使得医院网络的患者数据从来不会以明文的形式被泄露给第三方服务或研究机构,并且合计的统计资料不会泄露个体患者的个人健康信息,并且遵守所有适用的管理、法律的和保密规则。可以向第三方服务提供多方数据的加密保护版本,使得来自双方(例如,来自研究机构和医院网络的临床数据)的数据对对方和第三方服务处于保密状态。作为另一个示例,定向内容提供商可以使用平台来将定向内容作为活动的一部分提供给用户,并使用安全MPC协议来对结果执行分析以确定定向内容活动的结果。例如,可以基于后续的用户行为来衡量功效,例如增加的参与度或花费。在至少一个实施例中,针对第三方服务的安全MPC协议可以由定向内容提供商和平台使用,以执行分析来确定定向内容活动的功效的合计统计数据,而不泄露关于个体用户的行为信息。
不同类型的加密技术可用于一个数据集的不同部分以允许不同类型的保密计算。例如,用于确定集成员的一列数据可以使用诸如采用了密钥的散列(Hash)消息认证码(HMAC)算法之类的键控单向函数来加密保护,密钥在两个或更多个客户机之间共享并对从两个或更多个客户机接收散列数据集的服务器保密。在这种协议中,服务器可以能够基于两个散列输出匹配来确定何时某一数据元素在两个数据集中,但是服务器将不能确定数据集共用的底层内容。
例如,可基于来自临床研究机构和一个或多个医院网络的记录来确定药物的功效。临床研究机构可以使用HMAC算法来加密保护患者标识符的列。医院网络可以通过对他们的患者的列HMAC化来加密保护他们的医疗记录。这些加密保护的数据集可被发送到服务器,该服务器执行保密计算以确定经历临床试验的患者的住院治疗率,并将该住院治疗率与面向更广泛人群的住院治疗率进行比较。以这种方式,关于哪些个体正在参与临床试验的信息不会被泄露给医院网络和提供隐私保护计算功能的服务器,并且医院网络满足他们根据HIPAA的义务不泄露关于谁曾被准许入医的医疗记录信息。
同态加密(HE)可以结合下面描述的各种技术来使用。同态加密可以指这样一种类型的加密,其中可以对加密的数据执行某些类型的计算,而无需获得相应的明文。同态加密可用于对加密数据执行保密计算。
例如,同态加密方案的非对称密钥变体可以提供用于安全参数n的以下加密API,其中明文m的加密由表示。
keval,ksk,kpk←HE.Keygen(n)
ksk是指用于解密的非对称密钥对的私钥,kpk是指用于加密的非对称密钥对的公钥,keval是指用于执行同态计算的不同公钥的抽象化的评估钥,包括重线性化钥和伽罗瓦(Galois)钥。
同态加密方案可以支持对加密数据的保密计算。例如,在至少一个实施例中,由操作符表示同态加法和由“⊙”操作符表示同态乘法可以由HE方案支持,使得:
根据同态加密方案可以实现各种算术电路,以实现任意功能,包括执行用于数据协作的保密计算的那些功能,等等。这里描述的同态加密(HE)方案可以是分级HE方案,并且可以指部分同态加密方案。部分同态加密方案的一个例子是派利尔(Paillier)密码系统。在各种实施例中,派利尔密码系统允许同态添加密文。在各种实施例中,诸如派利尔或ElGamal加密系统的部分加密方案实现同态加法,但不实现同态乘法。在一些情况下,部分加密方案实现同态乘法但不实现同态加法。
客户机可以生成加密保护的数据集并向服务器提供加密保护的数据而不是明文数据。加密保护技术可以指保密技术,用于确保提供给第三方服务的数据的保密性,包括但不限于使用键控单向函数、保序加密、同态加密及其组合。
上面的描述是为了说明的目的,而不是为了限制。可以存在许多其它实例、配置、过程等,下面将更详细地描述其中的一些。现在将参考附图描述示例性实施例。
示例性过程和使用例
图1示出了根据本公开的一个或多个示例性实施例的可以在其中执行服务器辅助的保密计算的计算环境100。图1描述了向诸如第一客户机计算实体104和第二客户机计算实体106的多个客户机提供保密计算的服务器102。在各种实施例中,图1中所示的各方参与安全多方计算(MPC)协议,其中客户机的数据集从未以明文的形式向其他方揭示,并且客户机的数据集的内容不能由其他方确定。服务器102可以根据安全MPC协议对受密码保护的数据执行保密计算以生成结果。在一些实施例中,由服务器102生成的结果是密码保护的结果(例如,同态和)。在一些实施例中,由服务器102生成的结果不受来自服务器102的密码保护-例如,安全MPC协议的结果可以是计算两个集合相交的基数,在这种情况下,可以使服务器102知道匹配集元素的总数或上限。然而,服务器102将不能确定关于匹配元素的底层内容的信息。
服务器102可以指一个或多个计算机系统,例如结合图9描述的那些。服务器102可以在计算资源服务提供商的情况下实现,并且可以是一个或多个处理器和存储器,由于执行,使所述一个或多个处理器接收和/或处理来自诸如第一客户机计算实体104和/或第二客户机计算实体106的客户机的请求。服务器102可以以网络服务应用程序编程接口(API)请求的形式从客户机接收请求、命令、消息等。服务器102可以包括可执行代码以与其他计算资源通信,诸如可扩展计算服务,其可被用于加速安全多方计算的执行。在一些实施例中,服务器102是一种诚实但好奇的(HBC)计算实体,该计算实体尽管遵循安全MPC协议,但可以尝试或假定会尽可能多地从服务器102接收的信息学习。此外,可以假定服务器102不会以与规定的安全MPC协议不一致的方式与其它计算实体串通。服务器102可以在计算资源服务提供商的情况下实现,并且可以访问大量的计算资源,这些计算资源可被用于促进比客户机以其他方式获得的操作执行更快的操作执行。
第一客户机计算实体104可以指包括诸如结合图9所描述的机器和计算机系统的任何合适的计算实体,以及嵌入式设备和物联网(IoT)设备。第二客户机计算实体106同样可以以类似的方式实现。
在一些实施例中,第一客户机计算实体104和第二计算实体106收集或以其它方式访问私有或敏感数据。在一些情况下,第一计算实体104和第二计算实体106由不同的组织控制,并且各组织所拥有的敏感数据不与其他方共享。服务器102可以用于促进以保持数据的机密性的方式使用来自两个计算实体双方的数据的保密计算。
第一客户机计算实体104和第二计算实体106可以建立共享的秘密108。共享的秘密108可以指在第一客户机计算实体104和第二客户机计算实体106之间共享的密码秘密,例如对称密钥。可以利用各种技术来建立共享的秘密108,诸如基于Diffie-Hellman密钥交换,TLS信号交换处理等。用于建立共享的秘密108的技术会在下面更详细地论述,例如,如下面结合图2-8所描述的。共享的秘密108可用于协调数据被第一客户机计算实体104和第二计算实体106加密保护的方式。例如,用于专有集合交集的数据列可通过将使用共享密钥108的数据元素HMAC化进行加密保护。
图1示出了可以使用下面更详细描述的技术来实现联合学习的示例环境。例如,多个计算实体可以向第三方服务提供被加密保护(例如,使用加密或其它密码技术)的数据集,该第三方服务安全地对加密保护的数据集执行联合计算,同时提供不同的保密保证。端点可被实施为第一客户机计算实体104和/或第二计算实体106。例如,从第三方所拥有的传感器和物联网(IoT)设备收集的数据可被加密保护以保持其顾客的隐私。
本文描述的技术可以由两个或更多个组织使用,以利用第三方对敏感数据的加密保护版本执行联合计算。在至少一个实施例中,第一客户机计算实体104可访问敏感和/或私有数据集的第一集,而第二计算实体106可访问敏感和/或私有数据集的第二集。各方可以商定一个安全MPC协议来执行特定集的计算-例如,各方可以商定安全MPC协议来标识两个数据集共有的元素,并且可使一方或双方获得这些元素(而不是其他元素)。作为第二个例子,可以商定安全MPC协议,使得数据集将被连接,然后仅在连接的子集或其一部分上计算和或者乘积。
加密保护数据,诸如加密保护数据110和/或加密保护数据112,可以以任何适当的方式生成,例如,通过使用HMAC生成多个标签,该多个标签基于第一客户机计算实体104和第二客户机计算实体106之间共享的密钥是单向的或实际上是单向的。数据可以基于其将如何作为安全MPC协议的部分被使用而加密码。例如,可以通过使用HMAC函数或其它合适的键控单向函数来对将被用于执行集成员测试的数据加密保护。作为第二示例,可以根据同态加密方案来加密要通过加法和/或乘法处理的数据。作为另一个例子,可以根据保序加密方案对要相对于其它数据进行比较的数据进行加密。加密保护数据110可以提供密码可验证的机密性保证,其防止第二客户机计算实体106和服务器102推断出底层内容。
服务器102可以使用加密保护数据110和加密保护数据112执行保密计算。服务器102会缺少足够的密码材料来确定受保护的数据集中的一个和/或两个的底层内容。在一些实施例中,服务器102对加密保护的数据集执行连接,以确定连接的密码保护的数据集包括有满足按照被HMAC的数量执行的集成员测定的行的子集。根据至少一个实施例,服务器102缺少足够的密码材料来推断匹配元素的底层内容。根据至少一个实施例,可基于两个或两个以上加密保护的数据集或数据表的连接来执行一个或一个以上计算。例如,通过将两个或多个加密保护的数据表连接在一起,然后将根据同态加密方案加密的上述连接的表的一列的加密保护的元素同态相加在一起,可以计算同态和。作为对加密保护数据110和加密保护数据112执行的一个或多个计算的结果,可以生成加密保护的结果114。加密保护的结果114可以对安全MPC协议的各方商定的任何合适的信息进行编码。例如,加密保护的结果114可以编码如上所述的同态和;连接表的基数;连接表本身(以加密保护的格式);以及更多。
其他示例可包括使用第三方的安全MPC协议,以便于对受政府规章管理的数据进行分析,所述政府规章例如对个人可识别信息(PII)和个人健康信息(PHI)的共享进行控制的健康保险可移动性和可计帐性(HIPAA)。本文所述的技术可用于保密地共享对药物发现、医学成像、发展和理解疾病是有用的数据,并且更准确地预测健康护理结果,而不将患者的PHI或PII数据暴露于其他方。PHI和/或PII数据的加密版本可以以保持PHI和/或PII数据的保密性的方式与第三方服务共享,使得第三方服务无法推断底层PHI和/或PII数据是什么。以这种方式,患者数据不会处于危险中。
图2示出了根据本公开的一个或多个示例性实施例的计算环境200,其中可以执行服务器辅助的私有集合相交计算。在至少一个实施例中,计算环境200包括经由通信网络彼此连接的服务器202、第一客户机计算实体204和第二客户机计算实体206。服务器202、第一客户机计算实体204和第二客户机计算实体206可以参与安全多方计算(MPC)协议,在这其中服务器202基于由第一客户机计算实体204和第二客户机计算实体206提供的数据的加密保护版本来促进计算的执行。服务器202不能确定底层数据的内容,并且参与的客户机不能推断除协议中指定的以外的关于对方数据的底层数据集的任何信息。因此,本文描述的技术提高了计算机系统的数据安全性,籍此,客户机安全地与服务器共享数据集的加密保护版本,以对数据集执行联合计算。由客户机提供的数据被加密保护,使得服务器不能确定它们的内容,由服务器计算的数量被加密保护(例如,加密码),使得服务器不能确定任何中间计算的内容或计算的最终结果。相反,先前的技术要求客户机向第三方提供其数据的明文版本,从而导致敏感数据被无意地或恶意地泄露给非预定方的更大风险。
服务器202可以指一个或多个计算机系统,例如结合图9描述的那些。服务器202可以在计算资源服务提供商的情况下实现,并且可以是一个或多个处理器和存储器,由于执行,使所述一个或多个处理器接收和/或处理来自诸如第一客户机计算实体204和/或第二客户机计算实体206的客户机的请求。服务器202可以以web服务应用程序编程接口(API)请求的形式从客户机接收请求、命令、消息等。服务器202可以包括可执行代码以与其他计算资源通信,诸如可被用于加速安全多方计算的执行的可扩展计算服务。在一些实施例中,服务器202的任务是以概念的方式执行第一数据集和第二数据集中的名字的连接(例如,内部连接),对匹配行的整数值求和,同时保持第一数据集和第二数据集的内容的机密性。服务器202可以被认为是遵循安全MPC协议但可以尝试或可以被假定为尽可能多地从服务器202接收的信息中尽可能多地学习的诚实但好奇(HBC)的计算实体。此外,可以假定服务器202不会以与规定的安全MPC协议的不一致的方式与其它计算实体串通。
第一客户机计算实体204可以指一个或多个计算机系统,并且可以以硬件系统(例如,机器)实现,诸如结合图9所描述的那些硬件系统。在各种实施例中,第一客户机计算实体包括一个或多个处理器和存储可执行指令的存储器,所述可执行指令作为执行的结果使所述一个或多个处理器实现本文所述的各种功能。例如,第一客户机计算实体204可以包括指令以与服务器202通信。第一客户机计算实体204和服务器202可以通过计算机网络彼此通信并建立客户机-服务器关系。然而,在所有实施例中都不必然需要正式建立客户机-服务器关系。第一客户机计算实体204可以访问第一数据集,该第一数据集可以连同第一客户机计算实体204无法访问的且对第一客户机计算实体204保密的第二数据集作为多方计算的一部分被使用,这作为本文描述的安全多方计算协议的一部分。
第二客户机计算实体206可以指一个或多个计算机系统,并且可以以硬件系统(例如,机器)实现,诸如结合图9所描述的那些硬件系统。在各种实施例中,第二客户机计算实体206包括一个或多个处理器和存储可执行指令的存储器,所述可执行指令作为执行的结果使所述一个或多个处理器实现本文所述的各种功能。例如,第二客户机计算实体206可以包括与服务器202通信的指令。第二客户机计算实体206和服务器202可以通过计算机网络彼此通信并建立客户机-服务器关系。然而,在所有实施例中都不必然需要正式建立客户机-服务器关系。第二客户机计算实体206可以访问第二数据集,该第二数据集可以连同第二客户机计算实体206无法访问的且对第二客户机计算实体206保密的第一数据集作为多方计算的一部分被使用,这作为本文描述的案例多方计算协议的一部分。
共享的秘密208可以指在第一客户机计算实体204和第二客户机计算实体206之间共享的密码秘密,例如对称密钥。此外,根据各种实施例,共享的秘密208应对所有其他计算实体(例如服务器202)保密。第一客户机计算实体204和第二客户机计算实体206可以以任何合适的方式建立共享的秘密208。可以使用各种技术来建立共享的秘密208,诸如基于Diffie-Hellman密钥交换、TLS信号交换处理等。建立共享的秘密208的技术会在下面更详细地讨论,例如,如下面结合图3-5所描述的。密钥可以是在第一客户机计算实体204和第二客户机计算实体206之间共享的一类密码材料。
第一客户机计算实体204可以访问第一数据集210。第一数据集210可以指数据库表或其一部分。根据至少一个实施例,第一数据集210被存储在SQL数据库中。第一数据集210可以作为存储器内数据库被存储,或者从持久性存储介质(例如驻留在第一组织的内部私有网络上的数据库系统)中检索。在一些实施例中,第一数据集210被组织成行和列,其可类似于字段和记录。图2所示的第一数据集210包括一列名字(安东尼;布鲁斯;卡罗尔;亨利;娜塔莎;斯蒂芬妮;史蒂夫;维克托),并且可以存在其它数据列(图2中未示出)。第一数据集210的数据可以是任何合适的数据类型,包括但不限于字符串、整数、布尔值、位流等。第一数据集210可以驻留在数据存储器中并且由第一客户机计算实体204经由查询(例如SQL查询)有计划地检索。作为这里描述的安全多方计算协议的一部分,共享的秘密208可以用于对第一数据集210或其一部分进行加密保护。第一数据集210可以包括敏感的、私有的、机密的等信息,这些信息不应被以其他方法泄露给他人,例如第二客户机计算实体206。在一些情况下,第一数据集210包括个人健康信息(PHI),并且禁止第一客户机计算实体204在没有批准的情况下释放这种信息。因此,在至少一个实施例中,第一客户机计算实体204不与服务器202或第二客户机计算实体206以明文格式共享第一数据集210,所述明文格式可由所述实体辨别。
在至少一个实施例中,使用任何合适的键控单向函数生成第一加密保护的数据集212。在各种实施例中,生成键控散列消息认证码(HMAC)。HMAC函数可以接收作为输入的密钥和消息,并基于这种输入生成散列的输出。在某些情况下,可以指定要使用的散列函数和/或散列函数的块大小。例如,诸如安全散列算法3(SHA-3)或MD5之类的密码散列函数可用于第一加密保护的数据集210,从而生成第一加密保护的数据集212。在一些实施例中,共享的秘密和数据集的值被连接以形成散列的消息。例如,共享的秘密可被选择为128位的值,并且存储在第一数据集的每一行中的行值具有128位的最大长度,然后共享的秘密和行值可被连接以形成256位的输入消息而形成256位的密码散列函数。在一些实施例中,行值被填充。
第一加密保护的数据集212可以指第一数据集210的变换版本,该版本被加密保护,使得在没有额外信息的情况下,从第一加密保护的数据集212中无法辨别出明文内容(例如,第一数据集210)。例如,第一计算实体204可通过使用基于散列的消息认证码算法为第一数据集210的每一行生成加密保护的输出且使用共享的秘密208来生成第一加密保护的数据集212。可被使用的HMAC函数的例子是HMAC-SHA256或HMAC-SHA3-512。例如,共享的秘密或密钥可被表示为“k”,且HMAC函数被表示为HMAC(),然后用于第一数据集210的加密保护的值可按以下方式生成:
明文值 相应的加密保护的值
安东尼 HMAC(k,“安东尼”)
布鲁斯 HMAC(k,“布鲁斯”)
卡罗尔 HMAC(k,“卡罗尔”)
亨利 HMAC(k,“亨利”)
娜塔莎 HMAC(k,“娜塔莎”)
斯蒂芬妮 HMAC(k,“斯蒂芬妮”)
史蒂夫 HMAC(k,“史蒂夫”)
维克托 HMAC(k,“维克托”)
作为生成第一加密保护的数据集212的一部分,加密保护值的顺序视使用情况可以、应该、或者必须被混洗或随机化。如图2所示,第一加密保护数据集212可以通过对第一数据集210的值进行HMAC,然后对加密保护的值进行重新排序以使该顺序随机化来生成。加密保护的第一数据集212可以包括一列或多列加密保护的数据元素。例如,列212A可以包括被HMAC化的且混洗的名字列表。
在一些实施例中,第一数据集210通过编码被加密保护。例如,共享的秘密208可用作用于对称密码术的秘密,使得采用共享的秘密208对每行加密。
第一计算实体204可以生成或以其他方式确定第一加密保护数据集212,并将第一加密保护数据集212发送到服务器202,用于在安全多方计算中使用。在各种实施例中,服务器202缺少对共享的秘密208的访问,并且不能确定第一加密保护的数据集212的底层内容或者核实特定值是否包括在第一数据集210中。
第二客户机计算实体206可以访问第二数据集214。第二数据集214可以指数据库表或其一部分。根据至少一个实施例,第二数据集214被存储在SQL数据库中。第二数据集214可以作为内存数据库存储或者从持久性存储介质(例如第二组织的内部网络内的数据库系统)检索。在一些实施例中,第二数据集214被组织成行和列,其可以类似于字段和记录。图2所示的第二数据集214包括两列值{(阿尔弗雷德,1);(巴里,33);(布鲁斯,53);(克拉克,8);(黛安娜,45);(亨利,32);(斯蒂芬妮,16);(维克托,5)}。第二数据集214的数据可以是任何合适的数据类型,包括但不限于字符串、整数、布尔数、位流等。第二数据集214可以驻留在数据存储器中并由第二客户机计算实体206通过查询(例如SQL查询)有计划地检索。作为这里描述的安全多方计算协议的一部分,共享的秘密208可以用于对第二数据集214或其一部分进行加密保护。第二数据集214可以包括敏感的、私有的、机密的等信息,这些信息不应被以其他方法泄露给他人,例如第一客户机计算实体204。第二数据集214可包括个人健康信息(PHI),个人可识别信息(PII),敏感或机密数据(例如,社会保障号码),金融敏感信息等。
加密保护的第二数据集216可以指使用各种密码保护技术生成的第二数据集214的加密保护版本。在一些实施例中,第一客户机计算实体204和第二客户机计算实体206商定使用列来机密地测试集成员。该列可以是在第一数据集210和第二数据集214中描述的姓名列。第二客户机计算实体206可以通过HMAC对姓名列中的每个名字进行HMAC来生成加密保护的数据列。在各种实施例中,相同的技术(例如,HMAC函数)被第一客户机计算实体204使用来加密保护其姓名列,并被第二客户机计算实体206使用来加密保护其姓名列。第二客户机计算实体可以通过根据同态加密方案对数据列的每个数据元素进行同态加密来对第二数据集214的附加部分进行加密保护。这里描述的同态加密(HE)方案可以是分级HE方案,并且可以指部分同态加密方案。部分同态加密方案的一个例子是派利尔(Paillier)或ElGamal密码系统。
在至少一个实施例中,通过对姓名列进行HMAC并根据同态加密方案对数据有效载荷列进行加密来生成加密保护的第二数据集216。在一些实施例中,根据同态加密方案使用非对称密钥对的公钥对数据有效载荷值进行加密,其中非对称密钥对的私钥由第二客户机计算实体206保密,并且对于第一客户机计算实体204和服务器202是不可访问的。上面提及的公钥可以表示为pB(具有相应的私钥sB),并且HE()可以表示根据同态加密方案的同态加密函数。第二数据集214的加密保护的值可按以下方式生成:
明文值 相应的加密保护的值
(阿尔弗雷德,1) (HMAC(k,“阿尔弗雷德”),HE(pB,1))
(巴里,33) (HMAC(k,“巴里”),HE(pB,33))
(布鲁斯,53) (HMAC(k,“布鲁斯”),HE(pB,53))
(克拉克,8) (HMAC(k,“克拉克”),HE(pB,8))
(黛安娜,45) (HMAC(k,“黛安娜”),HE(pB,45))
(亨利,32) (HMAC(k,“亨利”),HE(pB,32))
(斯蒂芬妮,16) (HMAC(k,“斯蒂芬妮”),HE(pB,16))
(维克托,5) (HMAC(k,“维克托”),HE(pB,5))
作为生成加密保护的第二数据集216的一部分,加密保护值的顺序可以被混洗或随机化。如图2所示,加密保护的第二数据集216可以通过对每行加密保护(例如,通过对姓名HMAC化并对整数同态加密)并重新排序加密保护的值以随机化该顺序来生成。例如,加密保护的数据集216可以包括被HMAC的姓名的列216A和被同态加密的整数的列216B。
第二数据集214的列可以以任何适当的方式被加密保护,包括通过使用与加密保护的第一数据集210有关的上文论述的键控单向函数和密码散列函数。
第二计算实体206可生成或以其他方式确定加密保护的第二数据集216,并将加密保护的第二数据集216发送给服务器202,以便在安全多方计算中使用。在各种实施例中,服务器202缺少对共享的秘密208的访问,并且不能确定加密保护的第二数据集216的底层内容,或者核实特定值是否包括在第二数据集214中。
在各种实施例中,作为安全多方计算协议的一部分,服务器202通过一个或多个消息(例如,HTTP POST)从第一计算实体204获得第一加密保护的数据集212,并从第二计算实体206获得第二加密保护的数据集216。如上所述,服务器202会缺少对共享的秘密208的访问。服务器202会因此没有从第一客户机计算实体204获得加密保护值的一列或多列的第一集合,并且没有从第二客户机计算实体206获得加密保护值的一列或多列的第二集合。服务器202会缺少对足够的密码材料的访问以确定生成加密保护值的方式(例如,服务器202会不能确定第一列是否使用HMAC函数进行加密保护,以及另一列是否使用同态加密进行加密保护)。
在至少一个实施例中,服务器202包括一个或多个处理器和存储可执行指令的存储器,由于执行,所述可执行指令使得所述一个或多个处理器执行由第一客户机计算实体204和第二客户机计算实体206指定和商定的一组计算。例如,该计算可以包括根据加密保护的姓名列来连接数据集,并确定交叉的整数值之和。服务器202可以基于加密保护的数据集执行各种类型的连接操作,例如内部连接、完全外部连接、左外部连接、右外部连接等。两列加密保护数据可以根据等价关系连接,其中连接的数据集包括基于加密保护值在两列中的条目。客户机可以指定用于检测集成员的一个或多个列。例如,第一加密保护数据集212的加密保护姓名列可以包括进行HMAC化的值,该HMAC化的值可以与加密保护的第二数据集216的加密保护姓名列进行比较。如果两个HMAC化的值相等,则表示集合相交,尽管应当注意,服务器202缺少足够的密码材料来确定与匹配的底层明文值有关的附加信息。例如,服务器202可以确定加密保护值HMAC(k,“布鲁斯”)包括在第一加密保护数据集212和加密保护数据集216中,但缺少附加信息来确定“布鲁斯”是包括在两个数据集中的姓名。
可以由使用第一加密保护的数据集212和加密保护的第二数据集216以执行连接操作的服务器202来计算或以其它方式确定连接的加密保护的数据集218。在图2中,第一数据集210和第二数据集214对于四个姓名-“布鲁斯”;“维克托”;“斯蒂芬妮”和“亨利”相交,因此,在各种实施例中,这些姓名的HMAC将存在于服务器202能够访问的两个加密保护数据集中。基于HMAC匹配,服务器202能够确定集合相交并连接这些加密保护的数据集以确定加密保护的连接的数据集218。
连接的加密保护的数据集218可用于执行附加的计算。在至少一个实施例中,连接的加密保护的数据集218包括加密保护的第二数据集216的子集,该子集基于第一加密保护数据集212和加密保护第二数据集216中的匹配元素的私有集合相交来定义。注意,例如,“克拉克”被包括在第二数据集214中,且未包括在第一数据集210中,并且因此,对于“Clark”的条目在连接的加密保护的数据集218中不存在。
在一些实施例中,根据安全多方计算协议对一个或多个列执行计算。例如,协议可以要求服务器202根据用于生成加密保护的第二数据集的第二列的同态加密方案来计算连接的加密保护的数据集218的第二列的同态和。第二客户机计算实体206可以规定同态加密方案作为建立安全多方计算协议的参数的一部分。
例如,如图2所示,服务器202可以访问对整数值53,5,16和32的同态加密量,这些同态加密量对应于包括在两个数据集中的姓名的数据有效载荷。在各种实施例中,同态加密方案支持同态相加,这允许加密量被同态相加在一起以产生同态和,该同态和可以由第二计算实体206使用相应的私钥sB来解密。
在至少一个实施例中,同态加密方案的非对称密钥变体可以提供用于安全参数n的以下加密API,其中明文m的加密由表示。
keval,ksk,kpk←HE.Keygen(n)
根据至少一个实施例,ksk是指用于解密的非对称密钥对的私钥,kpk是指用于加密的非对称密钥对的公钥,并且keval是指评估密钥,该评估密钥是用于执行同态计算的不同公钥的抽象,包括重线性化密钥和伽罗瓦(Galois)密钥。用于同态加密和解密的非对称密钥对也可以标注为上文的pB和sB
在各种实施例中,用于对加密保护的第二数据集216的数据有效载荷加密的同态加密方案可以支持对加密数据的一个或多个计算或评估API。例如,在至少一个实施方案中,HE方案支持同态加法,使得:
因此,服务器202可以执行HE计算220,以计算加密量的同态和,以代表客户机确定私有集合相交。
如图2所示
同态和222-如根据图2的实施例中所示的出的可由服务器202计算并传输到第二客户机计算实体206。图2所示的HE密钥224可以指sB或可用于解密同态和220的对称密钥。第二客户机计算实体206可以解密同态和以确定明文和:
因此,第二客户机计算实体206能够从服务器202接收私有集合相交之和的加密版本。服务器202缺少足够的信息来确定明文和,并且第二客户机计算实体206缺少足够的信息来确定第二数据集214的哪些成员被用于计算所述和。因此,使用图2中描述的技术增强数据隐私—服务器202不具有对第一数据集210或第二数据集214的明文版本的访问;第一客户机计算实体204不能推断关于第二数据集214的任何信息;并且第二客户机计算实体206不能推断姓名共有的整数列的和,但是不能推断关于哪些姓名被包括在第一数据集210和第二数据集214中的任何信息。
用于实现同态加密API和评估API的技术可以与E.Crockett的“ALow-DepthHomomorphic Circuit for Logistic Regression Model Training”中所描述的技术相一致,该文献通过引用结合于此。
图3示出根据本公开的一个或多个示例性实施例的计算环境300,其中实现了用于生成加密保护的数据集的技术。计算环境300可以结合图4和5讨论的系统和方法来实现。
在至少一个实施例中,图3描绘了计算环境300,其中实现了用于生成加密保护的数据集的技术。客户机计算实体302可生成加密保护的数据集,并将加密保护的数据集提供给服务器304。
客户机计算实体302可以指一个或多个计算机系统,并且可以硬件系统(例如,机器)实现,诸如结合图9所描述的那些硬件系统。在各种实施例中,客户机计算实体302包括一个或多个处理器和存储可执行指令的存储器,所述可执行指令作为执行的结果使所述一个或多个处理器实现本文所述的各种功能。例如,客户机计算实体302可包括指令来与数据库306通信以获得数据集308,生成加密保护的数据集,并将加密保护的数据集发送给服务器304。
数据库306可以指数据库系统或数据库服务。虽然图3中描绘了数据库306,但可以根据图3所描述的技术使用其它类型的数据存储,包括但不限于非结构化数据存储,密钥值存储等。数据库306可以支持一个或多个接口,这些接口可以被客户机计算机系统302使用来提交对数据的查询并获得这种数据。例如,数据库306可以被实现为SQL数据库,SQL数据库支持数据库查询以在数据库306中创建、读取、更新和删除数据。在各种实施例中,数据库306由表组织,且每个表又可具有定义数据库表所支持的列或字段的表模式。表中的数据条目可以被称为数据库表的行或记录,并且可以编码各个字段的值。在各种实施例中,字段值可以是任何合适的数据类型,包括但不限于字符串、整数,布尔值、位流等。数据库表可以具有被指定为主关键字(PK)列的列,其中主关键字列的每个值是唯一的,或者可以其他方式用于唯一地标识数据库表的特定行。
数据集308可以指数据库306的数据。例如,数据集308可以是从客户机计算实体302提交的查询获得的数据库306的数据库表的子集。数据集308可以是数据库306的任何合适的分区。在一些实施例中,数据集308可以是从根据查询(例如,SQL JOIN)将两个数据库表操作连接在一起的数据库获得的数据集。数据集308可包括一行或多行数据-例如,如图3所示,数据集308可以包括表示为x1,x2,..xm的m行的数据。在至少一些实施例中,这些值是唯一值。例如,图2所示的第一数据集可以与这里描述的数据集308相一致。在一些实施例中,数据库306是客户机计算实体302可经由专用网络访问的数据存储。例如,组织可以将敏感数据存储在数据库306上,该数据库306可通过专用内联网访问,该专用内联网对该组织是可访问的,但对公众一般是不可访问的。在一些实施例中,服务器304不能直接访问数据库306。
在各种实施例中,客户机计算实体302向数据库306提交一个或多个请求(例如,SQL查询)并从数据库306获得数据集308。数据集308可包括一个或多个列。一些或所有列可以被指定用于以私有方式(例如,机密方式)测试集合成员,使得服务器304执行集合成员测试,同时缺少足够的信息来确定被用于共有集合成员测试的任何元素的底层内容。在至少一个实施例中,图3中描绘的数据元素308A是数据集308的说明性行值。数据元素308A和共享的秘密310可用于计算加密保护的数据元素312。
根据至少一个实施例,客户机计算实体302包括存储可执行代码的存储器,所述可执行代码作为由一个或多个处理器执行的结果,使所述一个或多个处理器生成加密保护的数据集。根据至少一个实施例,可以根据下面更详细描述的技术并根据图3来生成加密保护的数据集。
在至少一个实施例中,客户机计算实体302存储或以其它方式访问共享的秘密310。共享的秘密310可以指在客户机计算实体302和一个或多个其它计算实体之间共享的密码的秘密,例如对称密钥,所述一个或多个其它计算实体控制将被用于安全多方计算的数据。共享的秘密310会对服务器304是不可访问的或以其他方式对服务器304保密,换言之,服务器304无法访问共享的秘密310。客户机计算实体和另一计算实体可以以任何合适的方式商定共享的秘密310。例如,两个计算实体(这里称为A方和B方)可以公开地就质数p和基数g达成一致,基数g是模p的原根。这些量可以是公开的,并且不必保密。A方和B方还可以分别生成私钥a和b,并使私钥对其他方保密。具有私钥a的A方可以生成A=gamod p(A=ga模运算p)并将A发送给具有私钥b的B方。B方接收A并随后计算Abmod p。同样,B方计算B=gbmod p并将B发送给A方,A方随后计算Bamod p。由于Abmod p=gabmod p=gbamod p=Bamodp,共享的秘密gabmod p在上述双方之间建立,未获得所述多个私钥的至少一个的其他方无法对上述双方进行访问,即使它们能够窃听A方和B方之间的通信。
通常,且根据至少一个实施例,共享的秘密310可以是在多个计算实体之间共享的秘密值,并且对于执行涉及私有集合相交的安全多方计算的服务器304是不可访问的。例如,当安全多方计算涉及由相应方分别拥有的三个敏感/私有数据集的私有集合相交时,共享的秘密310可以在三方之间共享。较大的计算实体组可以共同商定共享的秘密310,或者使用其它协议来安全地建立和共享秘密值k。可以使用各种技术来建立共享的秘密310,诸如基于Diffie-Hellman密钥交换,TLS信号交换过程等。
根据至少一个实施例,数据集308的数据元素(例如,数据元素308A)和共享的秘密310可用于计算加密保护的数据元素312。在至少一个实施例中,使用散列消息认证码(HMAC)算法生成加密保护的数据元素。在图3中,根据至少一个实施例,基于明文数据元素x1和共享的秘密以下列方式生成加密保护的数据元素312:
HMAC(k,x1)
同样,通过使用相同的HMAC函数和相同的共享的秘密k:HMAC(k,x2),可以为第二明文数据元素x2生成第二加密保护的数据元素。在至少一个实施例中,使用任何合适的键控单向函数来生成加密保护的数据元素。例如,诸如KMAC256的键控密码散列函数和从安全散列算法3(SHA-3)导出的其它键控散列函数可用于加密保护的数据元素308A,从而生成加密保护的数据元素312。在一些实施例中,连接共享的秘密310和数据元素308A以形成作为对单向函数的输入的消息。例如,共享的秘密310可被选择为128位值,并且数据元素308A被填充(如必要)为128位值,然后共的享秘密310和(可能被填充的)数据元素被连接以形成256位输入消息,并且被作为输入提供给256位密码散列函数。在一些实施例中,数据元素308A可以在本机被定尺寸为128位,并且不需要填充。上述示例本质上仅仅是说明性的,并且在本公开的范围内考虑了用于对数据元素进行加密保护(例如,使用数据元素的其他大小和大小的组合)的技术。在一些实施例中,密码盐可用作散列或以其它方式加密保护的消息的一部分。
在一些实施例中,数据元素308A通过加密被加密保护。例如,共享的秘密310可用作对称密码术的秘密,使得加密保护的数据元素312是通过使用秘密密钥310加密数据元素308A而生成的密文。
图3描述了如何对第一数据元素x1进行加密保护以生成第一加密保护的数据元素312。可以以类似的方式对第二数据元素x2进行加密保护。例如,可以基于明文数据元素x2和共享的秘密以下列方式生成第二加密保护数据的元素:
在各种实施例中,通过对来自数据集308的多个数据元素进行加密保护来确定加密保护的数据元素的数组314。通过以并行或多线程方式为数据集308计算加密保护的数据元素,可以以并行方式生成加密保护的数据元素数组314。在至少一个实施例中,数据元素x1,..,xm被加密保护以产生包括加密保护的数据元素HMAC(k,x1),…HMAC(k,xm)的加密保护的数据元素数组314。在各种实施例中,以与数据集308相同的顺序组织加密保护的数据元素314的数组。
在各种实施例中,加密保护的数据元素的数组314被混洗(shuffled)以产生加密保护的数据集316。加密保护的数据集316可以指加密保护的数据元素的数组,其中数组内元素的顺序已经被混洗或随机化,使得加密保护的数据集316中元素的顺序与数据集308中数据元素的顺序不相关或实际上不相关。
因此,加密保护的数据集316可作为安全多方计算协议的一部分被客户机计算实体302发送给服务器304。加密保护的数据集316可以在缺乏机密性保证的通信信道上传输。例如,可以在通信信道上连同数字签名或消息摘要一起发送加密保护的数据集316,所述数字签名或消息摘要向接收方(例如,服务器304)提供用于确定实际接收的数据的真实性和完整性的机制。以这种方式,即使另一方能以某种方式恶意或无意地访问加密保护的数据集316,也不包括协议的安全性。加密保护的数据集316可用于根据诸如结合图1,2和8所描述的协议来执行安全多方计算。
图4示出了根据本公开的一个或多个示例性实施例的计算环境400,其中实现了用于生成加密保护的数据集的技术。计算环境400可以结合图3和5论述的系统和方法来实现。
在至少一个实施例中,图4描述了一种计算环境400,其中实现了生成加密保护的数据集的技术。客户机计算实体402可以生成加密保护的数据集,并将该加密保护的数据集提供给服务器404。加密保护的数据集可以如在安全多方计算协议中使用,安全多方计算协议对客户机计算实体402之外的安全多方计算的各方不应以明文格式进行访问的机密数据执行计算。
根据至少一个实施例,客户机计算实体402是指按硬件系统(例如,机器)实现的一个或多个计算机系统,所述硬件系统诸如结合图9所描述的那些。在各种实施例中,客户机计算实体402包括一个或多个处理器和存储可执行指令的存储器,作为执行的结果,所述可执行指令使一个或多个处理器实现本文所述的各种功能。例如,客户机计算实体402可包括与服务器404通信以实现安全多方计算协议的指令。客户机计算实体402和服务器404可以通过计算机网络彼此通信并建立客户机-服务器关系。然而,在所有实施例中都不一定需要正式建立客户机-服务器关系。客户机计算实体402可以访问数据集,该数据集可以作为多方计算的一部分与客户机计算实体402不可访问并且对客户机计算实体402保密的不同数据集一起使用,作为本文描述的安全多方计算协议的一部分。
数据库406可以根据结合图3描述的技术来实现。例如,数据库406可以包括一个或多个表,并且可以通过查询或请求来访问以从数据库406获得数据。数据集408可以指从数据库406获得的数据的一部分,例如,响应查询或请求,诸如对SQL数据库服务器的SQL查询。在各种实施例中,客户机计算实体402可以访问数据库406,但是服务器404和参与安全多方计算协议的其它计算实体缺少对数据库406的访问。
在各种实施例中,数据集408是指从数据库406获得的数据。数据集408可以包括来自一个或多个数据库表的数据,所述数据库表可以通过根据查询将两个数据库表连接来获得。图4示出了包括数据的数据集408的说明性示例,所述数据应当用作安全多方计算协议的一部分,但不以明文格式暴露给其它计算实体。例如,根据至少一个实施例,yi被用作私有集合相交的一部分,以针对另一个私有数据集来测试集合成员,并且ri包括当且仅当在行i相交的情况下应被计算的数据。
数据集408的第一行可以包括第一数据元素408A和第二数据元素408B。共享的秘密410可以与结合图1和2所描述的那些一致。第一数据元素408A可指数据集408的第一列的字段值y1,..,yn。例如,第一数据元素y1和共享的秘密k可以用于以下列方式生成加密保护的数据元素412:
HMAC(k,y2)
加密保护的数据元素412可以使用本公开全文描述的其它合适的技术来生成,例如其中描述的使用其它键控单向函数或密码散列的例子。
第二数据元素408B可以指数据集408的第二列的字段值r1,..,rn。第二数据列可以包括敏感的或私有的数据,该数据须经通过服务器404的计算(例如,加法或乘法)。在各种实施例中,第二数据元素408B被加密保护,以防止服务器404和其它计算实体访问第二数据元素408B的明文值或内容。
在各种实施例中,根据同态加密方案对第二数据元素408B进行加密。这里描述的同态加密(HE)方案可以是分级HE方案,并且可以指部分同态加密方案。例如,在至少一个实施例中可以使用Cheon-Kim-Kim-Song(CKKS)HE方案。在各种实施例中,部分HE方案实现同态加法和同态乘法,以及其它运算,例如通过标量明文的循环旋转和加法/乘法。
第二数据元素408B可以根据HE方案使用诸如公钥416之类的密码密钥来加密。可以使用非对称和对称加密变体。对于对称加密,相同的密钥被用于加密和解密,并且对诸如服务器404的其它方保密。对于对称加密,公钥pk用于加密,并且相应的私钥sk用于解密,且对诸如服务器404的其它方保密。
在至少一个实施例中,根据HE方案使用私钥416对第二数据元素408B进行加密,以产生加密保护的数据元素418。注意,可以使用各种技术对数据进行加密保护-例如,使用HMAC或密码散列函数可以对第一加密保护的数据元素412进行加密保护以保护第一数据元素408A,并且使用HE加密函数可以对第二加密保护的数据元素418进行加密保护以保护第二数据元素408B。如图4所示,HE加密函数HE()可用于在公钥416下加密第二数据元素408B,例如,以下列方式:
HE(pk,r1)
数据集408可以包括使用HE方案也被加密保护了的另外的数据列。在各种实施例中,确定用于行数据的信息元组。例如,用于来自数据集408的行数据的信息元组可以根据以下形式:
(HMAC(k,y1),HE(pk,ri),..)
可以为数据集408的每一行生成元组,以产生加密保护元组的数组414。加密保护元组的数组414可被混洗以具有随机顺序,例如,如结合图3所论述的,以产生加密保护的数据集420。加密保护的数据集420可以被视为加密保护数据元素的矩阵,这些加密保护元素被组织在被HMAC的数据元素(例如HMAC(k,yi))的第一列中、具有同态加密的数据元素(例如HE(pk,ri))的第二列中,等等。混洗可以指用于随机化行的顺序从而使得数据行在数据集408中显现的顺序实际上不能基于加密保护的数据集420中的行的顺序来确定的技术。
例如,使用结合图3论述的技术,可以根据安全多方计算协议将加密保护的数据集420发送给服务器404。在一些实施例中,客户机计算实体402向服务器404发送配置和/或元数据,其指示在安全多方计算中如何使用加密保护的数据集420的每一列。例如,客户机计算实体402可以提供元数据,指定将使用第一列的加密保护数据元素(例如,经HMAC的数据元素)来确定私有集合相交,并指定如果第二列的加密保护数据元素(例如,同态加密数据元素)是交集的一部分,则将它们相加在一起。
图5示出了根据本公开的一个或多个示例性实施例的计算环境500,其中的技术根据协议执行安全多方计算。计算环境500可以结合图1-4论述的系统和方法来实现。
服务器502可以指一个或多个计算机系统,例如结合图1,2,8和9所描述的那些计算机系统。服务器502可以在计算资源服务提供商的情况下实现,并且可以是一个或多个处理器和存储器,作为执行的结果,所述处理器和存储器使得所述一个或多个处理器接收和/或处理来自诸如结合图3和4所述的客户机计算实体之类的客户机的请求。服务器502可以以网服务应用程序编程接口(API)请求的形式从客户机接收请求、命令、消息等。服务器502可以包括可执行代码以与其他计算资源通信,诸如可扩展计算服务,其可被用于加速安全多方计算的执行。在一些实施例中,服务器102的任务是概念性地执行第一数据集和第二数据集中的名称的连接(例如,内部连接),对匹配行的整数值求和,同时保持第一数据集和第二数据集的内容的机密性。
在至少一个实施例中,服务器502根据三方MPC协议从第一计算实体接收第一加密保护的数据集504,并从第二计算实体接收第二加密保护的数据集506。由服务器502接收或以其它方式获得的数据可以是加密保护格式,使得服务器502缺乏足够的信息来确定如何确定服务器502接收的加密保护的数据的底层内容。
服务器502可从第一加密保护的数据集504获得第一加密保护的数据元素504A,并从第二加密保护的数据集506获得第二加密保护的数据元素506A。在至少一个实施例中,从加密保护的数据集中选择加密保护的数据元素的顺序可以是无关紧要的,因为加密保护的数据元素的顺序已被随机化。
服务器502可以执行计算代码以将第一加密保护数据元素504A与第二加密保护数据元素506A进行比较508。该比较可以是保密比较,因为其比较加密保护的数据元素且不涉及服务器502访问明文数据元素。第一加密保护数据元素504A和第二加密保护数据元素506A之间的匹配(例如,相同)表示在第一数据集和第二数据集中元素间的相交,即,两个数据集之间存在公共元素。然而,服务器502缺少足够的密码材料或其它信息来确定匹配元素的明文内容。如果两个加密保护数据元素504A和506A不匹配,则可以通过比较加密保护的数据集的其它数据元素来继续搜索集合相交,直到检测到匹配。然而,如果数据元素504A和506A匹配(例如,彼此相同),则可以摘取第三加密保护数据元素510A。第二加密保护数据元素506A和第三加密保护数据元素510A可以源自同一行的数据或以其它方式彼此关联。安全MPC协议可以指示如何基于指示集合相交的第二加密保护数据元素506A来获得第三加密保护数据元素510A。例如,加密保护的数据集506可以包括多列,其中第二加密保护数据元素506A和第三加密保护数据元素510A位于同一行中。
在各种实施例中,将每个加密保护的数据元素HMAC(k,x1…n)与每个数据元素HMAC(k,y1…m)进行比较以检测匹配。在一些实施例中,可以应用适当的优化来减少需要作出少于n*m次比较的比较的数量。例如,可以对经HMAC的值的向量进行排序,以便于在O(n log n)时间内进行更快的比较。对于每个匹配,可以记录相应的加密保护数据元素HE(pkB,rk),其中:
HMAC(k,yk)=HMAC(k,xi)for 1≤i≤n
可以获得加密保护数据元素的子集510。可以根据安全MPC协议基于任何合适类型的集合相交来定义子集510,包括但不限于内部连接、完全外部连接、完全右连接和完全左连接。图5示出了一个非限制性的例子,其中内部连接被用于标识应该被包括在子集510中的加密保护的数据元素。
下面提供确定子集510的说明性示例:
考虑具有第一加密保护的数据集的示例(例如,如图2所示):
加密保护的姓名列
1 HMAC(k,“娜塔莎”)
2 HMAC(k,“亨利”)
3 HMAC(k,“斯蒂芬妮”)
4 HMAC(k,“史蒂夫”)
5 HMAC(k,“安东尼”)
6 HMAC(k,“卡罗尔”)
7 HMAC(k,“布鲁斯”)
8 HMAC(k,“维克托”)
以及第二加密保护的数据集:
加密保护的姓名列 加密保护的值列
1 HMAC(k,“布鲁斯”) HE(pkB,53)
2 HMAC(k,“克拉克”) HE(pkB,8)
3 HMAC(k,“维克托”) HE(pkB,5)
4 HMAC(k,“斯蒂芬妮”) HE(pkB,16)
5 HMAC(k,“阿尔弗雷德”) HE(pkB,1)
6 HMAC(k,“巴里”) HE(pkB,33)
7 HMAC(k,“黛安娜”) HE(pkB,45)
8 HMAC(k,“亨利”) HE(pkB,32)
从上表可以看出,第二加密保护的数据集的第一、第三、第四和第八条目相交。服务器502可以比较两个数据集的经HMAC的姓名,并在加密保护的姓名列上执行两个数据集的内部连接来确定:
加密保护的姓名列 加密保护的值列
HMAC(k,“布鲁斯”) HE(pkB,53)
HMAC(k,“维克托”) HE(pkB,5)
HMAC(k,“斯蒂芬妮”) HE(pkB,16)
HMAC(k,“亨利”) HE(pkB,32)
加密保护的值列可以对应于图5所示的子集510。
可以从子集510计算同态和512。同态和可以以对子集510中每个加密保护数据元素进行同态相加的形式计算。继续上面的例子,服务器502可以通过对同态加密的值执行同态加法(表示为+)来计算同态和:
通过对同态加密元素的同态相加计算的同态和512等于明文元素的同态加密和:
HE(pkb,r1+r3+r4…)
同态和512可以由服务器502根据安全MPC协议发送到客户机计算实体514。在各种实施例中,客户机计算实体514向服务器502提供第二加密保护的数据集506,并访问与用于同态加密数据集值r1,..rm的公钥pkB相对应的私钥pkB。在一些实施例中,使用对称密钥密码术,其中客户机计算实体514使用相同的密钥用于同态加密和解密,并且对称密钥对服务器502保密。客户机计算实体514可接收经加密的同态和512并对同态和进行解密以确定安全MPC协议的结果。例如,结果可以是第一和第二明文数据集之间存在匹配的所有行的数据值的总和。应注意,客户机计算实体514仅被提供和,且不具有关于哪些行被用于计算和的任何额外信息。在大的数据集中,会存在这种大量的组合,以致客户机计算实体514不能确切地确定在计算中使用了哪些行,并且因此,第一和第二数据集之间的集合相交对于参加安全MPC协议的所有方来说都是非公开的。
图6示出了根据本公开的一个或多个示例性实施例的其中可以实现安全多方计算协议的游动图600。图6可以在本文描述的各种计算环境的情况下实现,包括结合图1-5和8论述的那些环境。
安全MPC协议可以包括第一计算实体602,第二计算实体604和服务器606。这些计算实体可被实现为诸如结合图9描述的那些计算机系统。在至少一个实施例中,每个计算实体由单独的组织控制。第一计算实体602可以由具有第一组私有/敏感数据的第一组织来控制,所述第一组私有/敏感数据不应被第二计算实体604和服务器606以明文格式访问。第二计算实体604可以由具有第二组私有/敏感数据的第二组织来控制,所述第二组私有/敏感数据不应被第一计算实体602和服务器606以明文格式访问。
在至少一个实施例中,第一计算实体和第二计算实体604在彼此之间建立服务器606不知道(例如,不可访问的)的共享的秘密608。可以通过生成器参数的交换来建立秘密,使得共享的秘密可以使用(a)第一计算实体的第一私钥与第二计算实体的第二公钥来计算;或者(b)第一计算实体的第一公钥与第二计算实体的第二私钥来计算。
第一计算实体可获得第一数据集610。第一数据集可以指具有不应被与其他计算实体分享的敏感/私有信息的数据库表或数据库表的部分。第一数据集可以包括成员列。成员列可以指应当以隐私保护方式对照第二计算实体604的对应成员列进行比较的数据的列或列表。隐私保护可以根据安全MPC协议来定义-例如,在一些情况下,可以将在两个数据集中发现的重叠元素告知一个或两个客户机。在一些情况下,当对重叠元素执行计算时,对重叠元素不公开,例如对重叠元素求和,对重叠元素执行逻辑回归,等。
第一计算实体可以HMAC第一数据集的成员列612。HMAC函数可以指用于对成员列的内容进行加密保护的一种类型的键控单向函数的说明性示例。在各种实施例中,可以使用任何合适的键控单向函数来加密保护第一数据集的数据,使得接收键控单向函数的输出的任何一方都不能实际上反向设计产生输出的输入。成员列的每个数据元素可以分别被进行HMAC。在各种实施例中,成员列的数据元素以单向或有效地单向方式并且至少部分地基于共享的秘密608来变换。例如,共享的秘密608可用作与成员列的数据元素并排的输入,来产生被HMAC的输出。
在各种实施例中,第一计算实体对成员列的每个数据元素进行HMAC,然后随机化HMAC输出的顺序。一旦所有成员列都已经被HMAC并且所有数据列都被加密(如果适用的话),则所得到的数据行被混洗并随机化以形成第一加密保护的数据集。第一加密保护的数据可以从第一计算实体602发送到服务器606。在各种实施例中,第一计算实体602规定列的使用-例如,第一计算实体602还可以发送指示被HMAC的成员列应当被用于测试集合成员的元数据。第一计算实体602可保留关于成员列的底层内容的信息(例如,其是否包括姓名、社会安全码、信用卡或其它类型的数据),且此类信息可为服务器606所未知。
作为安全MPC协议的一部分,第二计算实体604可获得第二数据集616。第二数据集可以是通过数据库查询请求获得的数据库表或数据库表的部分。可以将数据库表组织成行和列。在至少一个实施例中,第二数据集包括至少两列——成员列和数据列。成员列可指第二计算实体604希望结合来自第一计算实体602的数据集使用的私有/敏感数据的第一列,但内容应根据安全MPC协议对其它方保密。相同的功能可用于为第一计算实体602和第二计算实体604加密保护成员列。例如,第二计算实体604可以HMAC其成员列618。
第二数据集还可以包括一个或多个数据列。第二计算实体604可以通过单独加密数据列的每个数据元素来同形加密数据列620。所得到的密文可以由第二计算实体604使用安全MPC协议的其他方不可访问的秘密(例如,私钥)来解密。
第二计算实体604可因此产生被随机化/混洗的两列或更多列的加密保护的数据元素,以产生被发送给服务器606的第二加密保护的数据集622。
服务器606可以分别从第一计算实体602和第二计算实体604接收第一加密保护的数据集和加密保护的第二数据集。服务器606可以根据安全MPC协议执行一组多方计算。作为示例,安全MPC协议可以指示服务器606执行两个加密保护的数据集的内部连接,然后计算数据列的和。其它类型的计算可由服务器606执行。
在至少一个实施例中,在图6中描绘了私有集合相交的和,其中服务器606通过标识与第二加密保护的数据集的第二成员列的对应加密保护数据元素相匹配的第一加密保护数据集的第一成员列的每个加密保护数据元素来确定被HMAC的列624的私有集合相交。加密保护的数据集可以由单独方提供给服务器606,使得从一个客户机接收的加密保护的数据集不与另一客户机共享(例如,具有对共享的秘密608的访问的客户机不具有对由任何其他客户机生成的加密保护的数据集的访问)。
为了执行私有集合相交和,服务器606可以在标识匹配列之后执行同态计算626。可对私有集合相交的结果执行HE计算。例如,HE计算可以包括计算相交行的每个加密保护数据列的同态和。应当注意,在安全MPC协议下不需要客户机向服务器606提供关于在每列中提供什么类型的内容的任何信息-例如,服务器606可以不知道加密保护的成员列是否对姓名、社会安全号码、信用卡等进行编码,或者加密保护的数据列是否对金融信息、健康记录、整数、浮点等进行编码。
作为安全MPC协议的一部分,服务器606可将经计算的HE结果(例如,HE和)发送628给第二计算实体604。如上所述,在各种实施例中,根据HE方案,第二计算实体604可访问可用于对量加密和解密的密码材料。被接收的HE结果可因此由第二计算实体630解密以获得明文结果,并且因此,明文结果(例如,明文和)被第二计算实体604获知且不被服务器606和第一计算实体602知道。
安全MPC协议可以规定附加信息。在一些实施例中,安全MPC协议可以规定服务器606将提供第一计算实体602信息,诸如相交集的基数(例如,发送相交集的基数632)。由第一计算实体602和第二计算实体604商定的安全MPC协议可以指定一个或多个计算结果以提供给第一计算实体602。例如,可以向第一计算实体602提供匹配元素的经HMAC的值-在这样的实施例中,第一计算实体和第二计算实体均被提供对方缺少的信息:在这种情况下,向第一计算实体提供匹配HMAC,第一计算实体可以使用该匹配HMAC来标识匹配成员;并且向第二计算实体提供私密集合交集而不是匹配的特定集合成员。因此,在至少一个实施例中,使用安全MPC协议来促进一条信息与另一条信息的交换。
图7示出了根据本公开的一个或多个示例性实施例的其中可以实现安全多方计算协议的计算环境700。图7可以在本文描述的各种计算环境的情况下实现,包括结合图1-6论述的那些情况。
图7描述了可以使用加密保护的数据集执行的计算的说明性示例。图7中,第一数据集702可由第一组织拥有/控制,并且包括涉及顾客的信息及销售信息。第一组织可以认为销售数据是不希望与其他人共享的敏感/私有信息。同样,第二数据集704可以由第二组织拥有/控制,并且包括与其顾客有关的信息。第一组织会希望将其销售数据保密,且第二组织会希望将其观众人数数据保密。
可建立安全MPC协议来计算广告活动的功效以及看到广告活动的顾客是否更可能进行购买。安全MPC协议可以以下列方式且根据至少一个实施例来实现:
在至少一个实施例中,为两个数据集标识成员列。第一和第二组织可以商定用于顾客列的命名规范,从而以相同方式对同一顾客进行编码(例如,通过使用顾客的社会保障号码来唯一地标识该顾客)。成员列可使用由双方商定的共享的秘密被HMAC。
在至少一个实施例中,作为安全MPC协议的一部分,使用各种技术(例如,HMAC,OPE,HE技术)对第一数据集702加密保护,行被混洗或随机化,然后被发送给服务器。同样,第二数据集704如图7所示被加密保护,被混洗,并被发送给同一服务器。服务器可通过比较两个加密保护的顾客列中的经HMAC的值来标识匹配,使用私有集合相交706来标识顾客的相交。可对两个加密保护的数据集执行内部连接,以产生仅包括顾客在两个数据集中的行的输出数据集-在图7中,这些将包括{艾伦、加西亚、哈里斯和杰克逊}。
接下来,服务器可以取得内部连接的结果,并解密和计算表示销售额的同态和708,如图7所示,行702A-D的加密销售值可被同态相加,以产生等于的同态加密和/>该加密的和可被提供给数据集704的拥有人,该拥有人随后能对同态加密和进行解密并确定销售中的2,056美元可以归因于看到广告活动的顾客。可在安全MPC协议中规定是否向第一组织提供关于广告活动对哪些顾客造成销售的信息-例如,第二组织可能希望这种信息是私有的,使得第一组织不知道其顾客的观看习惯。在一些实施例中,可以向第一组织提供集的基数或每位看过广告的顾客的平均销售额,或可用于确定广告活动的功效的其它度量标准。同样,安全MPC协议可以规定何种信息(如有的话)是第二组织可获得的。
在一些实施例中,可以使用保序加密方案(OPE)来代替HE方案或者与HE方案结合来提供附加信息。保序加密方案可以指一种确定性地产生保持明文的数字排序的密文的加密方案的类型。例如,如果使用OPE方案加密整数“918”,则其密文将在值上大于加密较小的整数“716”生成的密文。“OPE”可以是一种密码技术,其允许数据集中或跨数据集的数据元素的相对值相互比较。例如,在图7中,可以根据OPE方案对销售额进行加密。服务器可以使用加密的量来标识具有最大、最小和中值销售值的数据集702的行,而不访问底层销售值。
图8示出了根据本公开的一个或多个示例性实施例的用于服务器辅助多方计算的过程800的说明性示例。在至少一个实施例中,过程800(或本文所述的任何其它过程,或其变体和/或组合)中的一些或全部可在存储了计算机可执行指令的一个或多个计算机系统的控制下被执行,并且可被实现为代码(例如,计算机可执行指令,一个或多个计算机程序,或一个或多个应用程序)通过硬件、软件或其组合在一个或多个处理器上共同地执行。代码,在至少一个实施例中,以包括可由一个或多个处理器执行的多个计算机可读指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质,在至少一个实施例中,是非暂时性计算机可读介质。在至少一个实施例中,可用于执行过程800的计算机可读指令中的至少一些不是仅使用暂时的信号(例如,传播的瞬态电或电磁传输)来存储的。非暂时性计算机可读介质不一定包括暂时性信号的收发器内的非暂时性数据存储电路(例如,缓冲器,高速缓存和队列)。过程800可以在本公开其他处描述的各种系统和方法的情况下实现,例如结合图1,2和9论述的那些系统和方法。在至少一个实施例中,过程800或其一部分由计算资源服务提供商实现。
在至少一个实施例中,过程800包括获得第一加密保护数据集的步骤802,该第一加密保护数据集包括第一列经HMAC的值。第一加密保护数据集可以通过服务器从使用与第二计算实体共享的秘密的第一客户机计算实体接收或以其它方式获得,以生成HMAC值。加密保护的数据元素可以与本公开通篇描述的那些数据元素一致,包括结合图1-7论述的那些数据元素。虽然图8描述了HMAC算法的使用,但是可以使用诸如键控加密散列函数的其它合适的键控单向函数来代替HMAC或与HMAC结合使用。第一加密保护的数据集可以包括其它加密保护列。密码保护技术(例如,键控单向函数、保序加密和同态加密)可用于对数据集或其列进行加密保护。
在至少一个实施例中,过程800包括获得第二加密保护的数据集的步骤804,该第二加密保护的数据集包括根据同态加密(HE)方案加密的第二列经HMAC的值和第三组的值。加密保护的数据可以被组织成加密保护的数据元组,该加密保护的数据元组包括经HMAC的集合成员和同态加密的相应值。CKKS HE方案是HE方案的一个例了。第二加密保护数据集可以由服务器从使用与第一计算实体共享的秘密的第二客户机计算实体接收或以其他方式获得,以生成HMAC值。加密保护的数据元素可以与本公开通篇描述的那些数据元素一致,包括结合图1-7论述的那些数据元素。虽然图8描述了HMAC算法的使用,但是可以使用诸如键控加密散列函数的其它合适的键控单向函数来代替HMAC或与HMAC结合使用。
在至少一个实施例中,过程800包括一种设置以基于第一和第二列连接806第一和第二数据集。连接可以指用于组合两个或更多个数据集或表的列以产生连接的数据集或表的关系代数操作。连接可以包括但不限于:内部连接、完全外连接、完全右连接和完全左连接。在至少一个实施例中,执行过程800的系统标识第一列和第二列共有的经HMAC的值,并包括来自连接的加密保护数据集中的那些行的数据。在一些情况下,在多个列上执行私密集合相交-例如,加密保护的给定的姓名和姓氏的列可以由两个计算实体提供,并且加密保护的给定的姓名和姓氏可均被要求相匹配以作为交集计数。
在至少一个实施例中,过程800包括根据HE方案对所连接的数据集执行保密计算的步骤808。在至少一个实施例中,诸如结合图7所述的那些,加密保护的表被连接并用于基于第三列(例如,销售列)计算和。在一些实施例中,保密计算还包括逻辑,例如执行加密保护的数据元素的比较,所述加密保护的数据元素是使用保序加密方案加密的,所述保序加密方案保持底层内容的机密性,但是允许系统执行过程800基于它们的密文确定两个明文的相对值。
在至少一个实施例中,过程800包括向第二计算实体提供保密计算的加密结果的步骤810。加密结果可以基于计算一个或多个HE操作以同态相加、相乘等密文来生成。第二计算实体可以拥有或以其他方式具有对可用于解密加密结果的密钥的访问权。以这种方式,明文结果对于执行保密计算的系统/服务器是保密的。
图1-7的方法、处理流程或使用例的一个或多个操作可以在上文被描述为由用户设备执行,或者更具体地,由在设备上执行的一个或多个程序模块、应用程序等执行。然而,应当理解,图1-7的方法、处理流程或使用例的任何操作可以至少部分地由一个或多个其它设备以分布式方式执行,或者更具体地,由在这类设备上执行的一个或多个程序模块、应用程序等来执行。此外,应当理解,响应于对被提供为应用程序、程序模块等的一部分的计算机可执行指令的执行而执行的处理在本文描述中可以互换地由应用程序或程序模块本身或由应用程序、程序模块等在其上执行的设备执行。虽然图1-7的方法、处理流程或使用例在示例性设备的情况下进行描述,但应理解,这种操作可以结合许多其它设备配置来实现。
在图1-7的说明性方法、处理流程和使用例中所描述和描绘的操作可以如本公开的各种示例性实施例中所期望的以任何合适的顺序(诸如所描绘的顺序)来实行或执行。此外,在某些示例性实施例中,可以并行地执行操作的至少一部分。此外,在某些示例性实施例中,可以执行比图1-7所示的操作更少,更多或不同的操作。
虽然已描述了本公开的具体实施例,但是本领域的普通技术人员将认识到,许多其他修改和替换实施例在本公开的范围内。例如,关于特定设备或组件描述的任何功能和/或处理能力可由任何其它设备或组件来执行。此外,虽然已经根据本公开的实施例描述了各种示例性实现和体系结构,但是本领域的普通技术人员将理解,对这里描述的示例性实现和体系结构的多种其他修改也在本公开的范围内。
以上参考根据示例性实施例的系统、方法、装置和/或计算机程序产品的框图和流程图来描述本公开的某些方面。应当理解,框图和流程图中的一个或多个块,以及框图和流程图中的块的组合可以分别通过执行计算机可执行程序指令来实现。同样,框图和流程图的一些块可能不必以所呈现的顺序执行,或者根据一些实施例可能根本不需要执行。此外,在某些实施例中可以存在除了在框图和/或流程图的框中所示的那些之外的附加组件和/或操作。
因此,框图和流程图的块支持用于执行指定功能的装置的组合,用于执行指定功能的元件或步骤的组合,以及用于执行指定功能的程序指令装置。还将理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行指定功能、元件或步骤的基于硬件的专用计算机系统或专用硬件和计算机指令的组合来实现。
本文提供的实施例不意味着是限制性的。
图9示出了机器(例如,服务器202)的示例框图。在一些实施例中,机器(例如,服务器202)可以作为独立设备操作,或者可以连接(例如,联网)到其它机器。在网络化部署中,机器(例如,服务器202)可以以服务器、客户机机器的身份操作,即这两者均处于服务器-客户机网络环境中。在一个示例中,机器(例如,服务器202)可以在Wi-Fi直接、对等(P2P)(或其它分布式)网络环境中充当对等机器。机器(例如,服务器202)可以是可佩戴设备或能够执行指令(顺序的或以其他方式)的任何机器,所述指令指定将由所述机器采取的动作。此外,虽然仅示出了单个机器,但是术语“机器”还应被认为包括单独或联合执行一组(或多组)指令以执行本文所论述的任何一个或多个方法的机器的任何集合,例如云计算、作为服务的软件(SaaS)、或其它计算机群集配置。图9所示服务器202可以经由网络926与第一客户机计算实体204和第二客户机计算实体206通信,以使用客户机提供的加密保护数据执行服务器辅助的安全多方计算,例如根据结合图1-8所描述的技术。
如本文所述,实例可包括或可对逻辑或多个组件、模块或机制进行操作。模块是能够在操作时执行指定操作的有形实体(例如,硬件)。模块包括硬件。在一个示例中,硬件可以被具体地配置为执行特定操作(例如,硬连线)。在另一实例中,硬件可包括可配置执行单元(例如,晶体管,电路等)和包含指令的计算机可读媒体,其中指令配置执行单元以在操作时执行特定操作。该配置可以在执行单元或加载机构的指导下进行。因此,当设备操作时,执行单元通信地耦合到计算机可读介质。在该示例中,执行单元可以是多于一个模块的成员。例如,在操作中,执行单元可以由第一指令集配置,以便在一个时间点实现第一模块,并且可以由第二指令集重新配置,以便在第二时间点实现第二模块。
机器(例如,计算机系统)900可以包括所示组件的任何组合。例如,机器(例如,服务器202)可包括硬件处理器902(例如,中央处理单元(CPU),图形处理单元(GPU),硬件处理器核心或其任何组合),主存储器904和静态存储器906,其中的一些或全部可经由互连(例如,总线)908彼此通信。机器(例如,服务器202)还可以包括电源管理设备932,图形显示设备910,字母数字输入设备912(例如,键盘)和用户接口(UI)导航设备914(例如,鼠标)。在一个示例中,图形显示设备910,字母数字输入设备912和UI导航设备914可以是触摸屏显示器。机器(例如,服务器202)可另外包括存储设备(例如,驱动单元)916,信号生成设备918和耦合到天线930的网络接口设备/收发器920。机器(例如,服务器202)可包括输出控制器934,诸如串行(例如,通用串行总线(USB),并行或其它有线或无线(例如,红外(IR),近场通信(NFC)等)连接,以与一个或多个外围设备(例如,打印机,读卡器,其它传感器等)通信或控制这些外围设备。
存储设备916可以包括机器可读介质922,其上存储有一组或多组数据结构或指令924(例如,软件),所述一组或多组数据结构或指令924包含本文所述的任何一个或多个技术或功能或所述任何一个或多个技术或功能使用。指令924还可以完全或至少部分地驻留在主存储器904内,静态存储器906内,或者在机器(例如,服务器202)执行指令期间驻留在硬件处理器902内。在一个示例中,硬件处理器902、主存储器904、静态存储器906或存储设备916中的一个或任何组合可以构成机器可读介质。
虽然机器可读介质922被示为单个介质,但是术语“机器可读介质”可以包括被配置为存储一个或多个指令924的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。
各种实施例可以完全或部分地以软件和/或固件来实现。该软件和/或固件可以采取包含在非暂时性计算机可读存储介质中或其上的指令的形式。然后,可以由一个或多个处理器读取和执行这些指令,以实现这里描述的操作的执行。指令可以是任何合适的形式,例如但不限于源代码,编译代码,解释代码,可执行代码,静态代码,动态代码等。这种计算机可读介质可以包括用于以一种被一个或多个计算机可读的形式存储信息的任何有形非暂时性介质,例如但不限于只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存等。
术语“机器可读介质”可以包括能够存储,编码或携带由机器(例如,服务器202)执行的指令并且使得机器(例如,服务器202)执行本公开的任何一个或多个技术的任何介质,或者能够存储,编码或携带由这种指令使用的或与这种指令相关联的数据结构的任何介质。非限制性机器可读介质的例子可包括固态存储器以及光和磁介质。在一个实例中,海量机器可读介质包括具有多个具有静止质量的粒子的机器可读介质。海量机器可读介质的具体实例可包括非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)或电可擦除可编程只读存储器(EEPROM))和闪存装置;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
指令924还可以通过通信网络926使用传输介质经由网络接口设备/收发器920使用多个传输协议(例如,帧中继,因特网协议(IP),传输控制协议(TCP),用户数据报协议(UDP),超文本传输协议(HTTP)等)中的任何一个来发送或接收。示例性通信网络可以包括局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络、无线数据网络(例如,电气和电子工程师协会(IEEE)802.11标准族,称为IEEE 802.16标准族,称为/>IEEE 802.15.4标准族,以及对等(P2P)网络等。在一个示例中,网络接口设备/收发器920可以包括一个或多个物理插孔(例如,以太网,同轴电缆或电话插孔)或一个或多个天线以连接到通信网络926。在一个示例中,网络接口设备/收发器920可以包括多个天线,以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种进行无线通信。术语“传输介质”应被认为包括能够存储、编码或携带由机器(例如,服务器202)执行的指令的任何无形介质,并且包括数字或模拟通信信号或其它无形介质以促进这种软件的通信。
抗预像函数包括单向函数(即,虽然函数对当前值计算在计算上不会困难,但不会是从当前值确定先前值的计算平凡的函数),其与函数的先前值具有递推关系。单向隶属函数可以不是数学上证明/证明为单向的,但是具有使函数抗预像的计算复杂度特性。单向函数(也称为“有效单向函数”)包括但不限于:密码散列函数,诸如消息认证码(例如,基于散列的消息认证码(HMAC));密钥导出函数,诸如PBKDF2和bcrypt(例如,带有密码至少部分基于明文和密钥的口令);以及其它安全随机化函数,其可以但不必须具有大于它们的范围(可能的输出)的域(可能的输入组)。用于各种实施例的其它合适的函数(被称为“f”)包括但不限于,将至少一个明文和密钥作为输入并且具有抗预像(给定一值y,随机生成输入x使得f(x)=y的概率低于指定的阈值)性能,抗第二预像(给定输入x1,随机生成不同于x1的另一个输入x2,使得f(x1)=f(x2)的概率低于指定阈值)性能和/或抗碰撞(两个不同输入导致相同输出的的概率小于指定阈值)性能。适用于产生用于数据的标识符的单向函数包括满足抗碰撞(即,对于不同的x1和x2,f(x1)=f(x2)的概率低于阈值)特性的函数。根据本公开的技术可用的其它散列函数包括但不限于在国家标准和技术研究所(NIST)特殊出版物800-107,修订版1“Recommendation for Applications Using Approved HashAlgorithms”中描述的函数,其通过引用并入本文。
以上描述和示出的操作和过程可以按照各种实现方式中所期望的任何合适的顺序来实行或执行。另外,在某些实现中,可以并行地执行操作的至少一部分。此外,在某些实现中,可以执行少于或多于所描述的操作。
词语“示例性”在本文中用于表示“用作例子、实例或说明”。这里描述为“示例性的”的任何实施例不一定被解释为比其它实施例优选或有利。这里使用的术语“计算设备”,“用户设备”,“通信站”,“站”,“手持设备”,“移动设备”,“无线设备”和“用户设备”(UE)是指无线通信设备,例如蜂窝电话,智能电话,平板电脑,网书,无线终端,膝上型计算机,飞蜂窝(femtocell),高数据速率(HDR)订户站,接入点,打印机,销售设备点,接入终端或其它个人通信系统(PCS)设备。所述设备可以是移动的或固定的。
如本文中所使用的,术语“通信”旨在包括发送,或接收,或既发送又接收。当描述组织数据由一个设备发送和由另一个设备接收时,这在权利要求中特别有用,但仅需要这些设备之一的功能就可以侵犯权利要求。类似地,当仅要求那些设备之一的功能时,两个设备之间的双向数据交换(两个设备在交换期间发送和接收)可被描述为“通信”。这里关于无线通信信号使用的术语“通信”包括发送无线通信信号和/或接收无线通信信号。例如,能够传送无线通信信号的无线通信单元可包括向至少一个其它无线通信单元发送无线通信信号的无线发射机,和/或从至少一个其它无线通信单元接收无线通信信号的无线通信接收机。
如本文所用,除非另有说明,使用序数形容词“第一”、“第二”、“第三”等来描述一个共同的对象仅表示相同对象的不同实例正被提及且不旨在暗示如此描述的对象必须在时间上、空间上、排序上或以任何其它方式处于给定序列中。一些实施例可以结合各种设备和系统使用,例如,个人计算机(PC),台式计算机,移动计算机,膝上型计算机,笔记本计算机,平板计算机,服务器计算机,手持计算机,手持设备,个人数字助理(PDA)设备,手持PDA设备,车载设备,非车载设备,混合设备,车辆设备,非车辆设备,移动或便携式设备,消费设备,非移动或非便携式设备,无线通信站,无线通信设备,无线接入点(AP),有线或无线路由器,有线或无线调制解调器,视频设备,音频设备,音频-视频(A/V)设备,有线或无线网络,无线区域网,无线视频区域网(WVAN),局域网(LAN),无线LAN(WLAN),个人区域网(PAN),无线PAN(WPAN)等。
一些实施例可以连同下列设备进行使用:单向和/或双向无线通信系统、生物医学传感器、可穿戴设备或传感器、蜂窝无线电话通信系统、移动电话、蜂窝电话、无线电话、个人通信系统(PCS)设备、包括无线通信设备的PDA设备、移动或便携式全球定位系统(GPS)设备、包括GPS接收器或收发器或芯片的设备、包括RFID元件或芯片的设备、多输入多输出(MIMO)收发器或设备、单输入多输出(SIMO)收发器或设备、多输入单输出(MISO)收发器或设备、具有一个或多个内部天线和/或外部天线的设备、数字视频广播(DVB)设备或系统、多标准无线电设备或系统、有线或无线手持设备,例如,智能电话,无线应用协议(WAP)设备等。
一些实施例可以与一种或多种类型的无线通信信号和/或遵循一种或多种无线通信协议的系统结合使用,例如,射频(RF,红外(IR),频分复用(FDM),正交FDM(OFDM),时分复用(TDM),时分多址(TDMA),扩展TDMA(E-TDMA),通用分组无线业务(GPRS),扩展GPRS,码分多址(CDMA),宽带CDMA(WCDMA),CDMA 2000,单载波CDMA,多载波CDMA,多载波调制(MDM),离散多音(DMT),蓝牙,全球定位系统(GPS),Wi-Fi,Wi-Max,ZigBee,超宽带(UWB),全球移动通信系统(GSM),2G,2.5G,3G,3.5G,4G,第五代(5G)移动网络,3GPP,长期演进(LTE),LTE增加型,增强型数据速率GSM演进(EDGE)等。其它实施例可被用于各种其它设备,系统和/或网络中。
示例1可以是一种系统,包括:一个或多个处理器;以及存储可执行指令的存储器,所述可执行指令由于被所述一个或多个处理器执行,使得所述系统:从第一计算实体获得第一加密保护的数据集,所述第一加密保护的数据集包括使用键控单向函数并且基于第一密码秘密生成的加密保护数据元素的第一列,其中所述第一密码秘密在所述第一计算实体和第二计算实体之间共享;从所述第二计算实体获得第二加密保护的数据集,所述第二加密保护的数据集包括:使用所述键控单向函数并基于所述第一密码秘密生成的加密保护数据元素的第二列;以及根据同态加密方案加密的加密保护数据元素的第三列,其中所述第三列的明文对于系统是不可访问的;执行对所述第一加密保护的数据集和所述第二加密保护的数据集的保密比较,以标识包括所述第三列的子集的被连接的加密保护的数据集;根据所述同态加密方案计算所述第三列的子集的加密结果;以及将所述加密结果提供给所述第二计算实体,其中所述第二计算实体能够访问可用于解密所述加密结果的第二密钥。
实例2可包括实例1的系统和/或本文中的一些其它实例,其中同态加密方案是根据ElGamal密码系统来实现的。
实例3可以是实例1的系统和/或本文中的一些其它实例,其中所述指令包含进一步的指令,所述指令由于被所述一个或多个处理器执行,使所述系统向所述第一计算实体提供所述子集的基数。
示例4可以是示例1的系统和/或本文的一些其它示例,其中用于执行对第一加密保护的数据集和第二加密保护的数据集的保密比较以标识所述第三列的子集的指令包括下面的指令,该下面的指令被一个或多个处理器执行使得所述系统执行:对位于第一列的第一行的第一加密保护数据元素与位于第二列的第二行的第二加密保护数据元素进行比较;并且将所述第三列的第二行包括在所述子集中。
示例5可以是计算机实现的方法,包括:在第三计算实体处:从第一计算实体获得第一加密保护的数据集,该第一加密保护的数据集包括基于在所述第一计算实体和第二计算实体之间共享的密码材料而生成的第一集合;从所述第二计算实体获得第二加密保护的数据集,该第二加密保护的数据集包括:基于所述密码材料生成的第二集合;以及根据与所述第二集合对应的同态加密方案生成的多个加密数据元素;基于所述第一加密保护的数据集和所述第二加密保护的数据集执行连接,以标识收集的一个或多个加密数据元素;根据同态加密方案,使用所述收集的一个或多个加密数据元素执行一个或多个保密计算;以及将所述一个或多个计算的加密结果提供给所述第二计算实体。
示例6可以是示例5的方法和/或本文中的一些其它示例,其中基于第一加密保护的数据集和第二加密保护的数据集执行连接包括:标识位于所述第一集合的第一行的第一加密保护数据元素;标识位于所述第二集合的第二行的第二加密保护数据元素;确定所述第一加密保护数据元素与所述第二加密保护数据元素匹配;并且将位于所述多个加密数据元素的第二行的加密数据元素添加到所述集合。
实例7可以是实例5的方法和/或本文中的一些其它实例,其中所述一个或多个保密计算包含由所述第一计算实体和所述第二计算实体商定的一组同态计算。
实例8可以是示例5的方法和/或本文中的一些其它实例,其中进一步基于基于散列的消息认证码(HMAC)算法来产生所述第一集合。
实例9可以是示例5的方法和/或本文中的一些其它示例,其中同态加密方案包括部分同态加密方案。
示例10可以是示例5的方法和/或本文中的一些其它示例,其中所述连接是基于所述第一集合和第二集合之间的等价关系对所述第一数据集和第二数据集的内部连接。
实例11可以是示例5的方法和/或本文中的一些其它示例,其进一步包括:基于对所述收集的一个或多个加密数据元素来确定第二结果;以及将所述第二结果提供给所述第一计算实体。
实例12可以是示例5的方法和/或本文中的一些其它示例,其进一步包括:从第三计算实体获得第三加密保护的数据集,所述第三加密保护的数据集包括基于所述密码材料产生的第四列,其中所述密码材料进一步与所述第三计算实体共享;以及进一步基于所述第三加密保护的数据集执行所述连接。
示例13可以是存储可执行指令的非暂时性计算机可读存储介质,所述可执行指令由于被计算机系统的一个或多个处理器执行,使所述计算机系统至少:与第二计算机系统建立第一密码秘密;获取包括多行数据元素的第一数据集;通过至少以下步骤确定加密保护的第一数据集:使用所述第一密码秘密加密保护所述第一数据集的第一部分;并且使用第二密码秘密并根据同态加密方案对所述第一数据集的第二部分进行同态加密;对所述多行进行混洗;向第三计算机系统并根据多方计算(MPC)协议提供所述加密保护的第一数据集,以使第三计算机系统基于所述第一加密保护的数据集和由第二计算机系统生成的第二加密保护的数据集执行一个或多个保密计算,其中:所述第二加密保护的数据集也是基于所述第一密码秘密生成的;所述第三计算机系统缺少对第一密码秘密的访问;获得基于所述第一加密保护的数据集和所述第二加密保护的数据集执行的所述一个或多个保密计算的加密结果;并对所述加密结果进行解密来得到明文结果。
示例14可以是示例13的非暂时性计算机可读存储介质和/或本文中的一些其它实例,其中使用密码秘密对所述第一数据集的至少一部分进行加密保护的指令包括下面的指令,该下面的指令由于被执行使得计算机系统:根据MPC协议确定所述数据集的第一部分被用于测试集成员;以及使用键控单向函数和密码秘密对所述第一部分的数据元素进行加密保护。
示例15可以是示例13的非暂时性计算机可读存储介质和/或本文中的一些其它示例,其中所述指令由于被所述计算机系统的一个或多个处理器执行,进一步使系统:确定所述第一数据集的第二部分用于根据MPC协议执行加法或乘法中的至少一个;以及基于所述第一数据集的第二部分被用于执行加法或乘法中的至少一个的确定,对所述第一数据集的第二部分进行同态加密。
示例16可以是示例15的非暂时性计算机可读存储介质和/或本文中的一些其它示例,其中同态加密方案实现同态相加而非同态相乘,或同态相乘而非同态相加。
示例17可以是示例13的非暂时性计算机可读存储介质和/或本文中的一些其它示例,其中所述指令由于被所述计算机系统的一个或多个处理器执行,进一步使系统:从所述第三计算机系统获得一个或多个加密保护的结果;确定明文数据元素;使用密码秘密来加密保护明文数据元素以确定加密保护的数据元素;并且确定所述加密保护的数据元素与所述一个或多个加密保护的结果中的一个加密保护结果相匹配,从而表示所述明文数据元素被包括在所述第一数据集和用于生成第二加密保护的数据集的第二明文数据集中。
示例18可以是示例13的非暂时性计算机可读存储介质和/或本文中的一些其它示例,其中:所述第二密码秘密被与所述第二计算机系统共享;并且根据MPC协议使所述第二计算机系统可获得所述加密结果。
示例19可以是示例18的非暂时性计算机可读存储介质和/或本文的一些其它示例,其中所述第二密码秘密是对称密钥,并且所述第三计算机系统缺少对所述第二密码秘密的访问。
示例20可以是示例13的非暂时性计算机可读存储介质和/或本文的一些其它示例,其中所述指令由于被所述计算机系统的一个或多个处理器执行,进一步使得所述系统从所述第三计算机系统获得保密计算的明文结果。
示例21可以是示例13的非暂时性计算机可读存储介质和/或本文的一些其它示例,其中所述同态加密方案使用ElGamal密码系统实现同态加法。
示例22可以包括一个或多个非暂时性计算机可读介质,所述非暂时性计算机可读介质包括指令,所述指令使得电子设备在由所述电子设备的一个或多个处理器执行所述指令时执行在示例1-21的任一个中描述的或与示例1-21的任一个相关的方法、或本文描述的任何其他方法或过程的一个或多个要素。
示例23可包括装置,该装置包括逻辑、模块和/或电路,以执行在示例1-21的任一个中描述的或与示例1-21的任一个相关的方法、或本文描述的任何其他方法或过程的一个或多个元素。
示例24可包括在示例1-21的任一个中描述的或与示例1-21的任一个相关的方法、技术或过程,或部分的所述方法、技术或过程。
示例25可以包括一种装置,该装置包括:一个或多个处理器和一个或多个计算机可读介质,该一个或多个计算机可读介质包括指令,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行示例1-21的任一个中描述的或与示例1-21的任一人相关的方法、技术或过程,或部分的所述方法、技术或过程。
应当理解,上述描述是为了说明的目的,而不是要进行限制。
尽管已经描述了本公开的具体实施例,但是本领域普通技术人员将认识到,许多其他修改和替换实施例也在本公开的范围内。例如,关于特定设备或组件所描述的任何功能和/或处理能力可以由任何其它设备或组件来执行。此外,虽然已经根据本公开的实施例描述了各种示例性实现和体系结构,但本领域普通技术人员将理解,对本文描述的示例性实现和体系结构的多种其他修改也在本公开的范围内。
本文所公开的程序模块,应用程序等可包括一个或多个软件组件,包括例如软件对象、方法,数据结构等。每个这样的软件组件可以包括计算机可执行指令,其响应于执行,使得本文描述的功能的至少一部分(例如,本文描述的示例性方法的一个或多个操作)将被执行。
软件组件可以用各种编程语言中的任何一种来编码。示例性的编程语言可以是低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可以要求在由硬件体系结构和/或平台执行前通过汇编器转换成可执行机器代码。
另一种示例性编程语言可以是跨多个体系结构可移植的高级编程语言。包括高级编程语言指令的软件组件可需要在执行前由解释器或编译器转换成中间表示形式。
编程语言的其它示例包括但不限于宏语言,shell或命令语言,作业控制语言,脚本语言,数据库查询或搜索语言,或报告书写语言。在一个或多个示例实施例中,包括以上述多个示例的编程语言之一的形式的指令的软件组件可以由操作系统或其他软件组件直接执行,而不必先被转换成另一种形式。
软件组件可以被存储为文件或其它数据存储结构。相似类型或功能相关的软件组件可以存储在一起,例如存储在特定目录,文件夹或库中。软件组件可以是静态的(例如,预先建立或固定的)或动态的(例如,在执行时创建或修改)。软件组件可以调用或通过多种机制中的任何一种被其他软件组件调用。被调用的或调用软件组件可以包括其他定制开发的应用软件,操作系统功能(例如,设备驱动程序,数据存储(例如,文件管理)例程,其他公共例程和服务等),或第三方软件组件(例如,中间件,加密,或其他安全软件,数据库管理软件,文件传输或其他网络通信软件,数学或统计软件,图像处理软件和格式转换软件)。
与特定解决方案或系统相关联的软件组件可以驻留在单个平台上并在其上执行,或者可以分布在多个平台上。多个平台可以与多于一个硬件供应商、底层芯片技术或操作系统相关联。此外,与特定解决方案或系统相关联的软件组件最初可以用一种或多种编程语言来编写,但是可以调用用另一种编程语言编写的软件组件。
计算机可执行程序指令可被加载到专用计算机或其它特定机器、处理器或其它可编程数据处理装置上以产生特定的机器,使得在计算机、处理器或其它可编程数据处理装置上执行这些指令致使在任何适用流程图中指定的一个或多个功能或操作被执行。这些计算机程序指令还可以存储在计算机可读存储介质(CRSM)中,执行程序指令时可以指导计算机或其它可编程数据处理设备以特定方式操作,使得存储在计算机可读存储介质中的指令产生包括实现在任何流程图中指定的一个或多个功能或操作的指令装置的制品。计算机程序指令还可以被加载到计算机或其它可编程数据处理设备上,以使得在计算机或其它可编程设备上执行一系列操作元素或步骤,从而产生计算机实现的过程。
可以在本文描述的任何设备中存在的附加类型的CRSM可以包括,但不限于,可编程随机存取存储器(PRAM),SRAM,DRAM,RAM,ROM,电可擦除可编程只读存储器(EEPROM),闪存或其它存储器技术,光盘只读存储器(CD-ROM),数字多功能盘(DVD)或其它光学存储、磁带盒,磁带,磁盘存储或其它磁存储设备,或可用于存储信息并可被访问的任何其它介质。任何上述的组合也包括在CRSM的范围内。或者,计算机可读通信介质(CRCM)可包括计算机可读指令,程序模块或在数据信号内传输的其它数据,例如载波或其它传输。然而,如本文所用,CRSM不包括CRCM。
虽然已用语言针对结构特征和/或方法动作描述了实施例,但是应当理解,本公开不一定限于所描述的具体特征或动作。相反,具体特征和动作被公开为实现实施例的示例性形式。条件语言,例如“可以”,“可以”,“可以”,“可能”或“会”,除非在所使用的上下文中另外具体说明或另外理解,通常旨在传达某些实施例可以包括,而其它实施例不包括某些特征、元素和/或步骤。因此,这种条件语言通常不用于暗示特征、元素和/或步骤以任何方式对于一个或多个实施例是需要的,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定这些特征、元素和/或步骤是否在任何特定实施例中被包括或要被执行的逻辑。此外,除非另有说明或从上下文中清楚地看出,短语“基于”是指“至少部分地基于”,而不是“仅基于”。
术语“集合”(例如,“一组项目”)或“子集”的使用(除非上下文另有说明或矛盾)应被解释为包括一个或多个成员的非空集。此外,除非上下文另有说明或矛盾,相应集合的术语“子集”不一定表示该相应集合的真子集,而是子集和相应集合可以相等。
连词语言,例如形式的短语“A,B和C中的至少一个”或“A,B和C中的至少一个”,除非另有具体说明或与上下文明显矛盾,否则结合上下文的使用通常理解为表示项目、术语等可以是或者A或B或C,或者A和B和C的集合的任何非空子集。例如,在对具有三个成员的集合的说明性实例中,连词短语“A,B和C中的至少一个”和“A,B和C中的至少一个”是指以下集合中的任一个:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连词语言通常不旨在暗示某些实施例需要A的至少一个、B的至少一个和C的至少一个的每一个都存在。此外,除非上下文另有说明或矛盾,否则术语“多个”表示复数状态(例如,“多个项目”表示多个项目)。以多个表示的项目的数量至少是两个,但当被明确地表示或通过上下文进行了表示,可以是更多个。

Claims (15)

1.一种计算机实现的方法,包括:
在第三计算实体:
从第一计算实体获取第一加密保护的数据集,所述第一加密保护的数据集包括基于在所述第一计算实体和第二计算实体之间共享的密码材料生成的第一集合;从所述第二计算实体获得第二加密保护的数据集,所述第二加密保护的数据集包括:
基于所述密码材料生成的第二集合;和
根据与第二集合对应的同态加密方案生成的多个加密数据元素;
基于所述第一加密保护的数据集和所述第二加密保护的数据集执行连接,标识收集的一个或多个加密数据元素;
根据所述同态加密方案,使用所述收集的一个或多个加密数据元素执行一个或多个保密计算;和
将所述一个或多个计算的加密结果提供给所述第二计算实体提供。
2.如权利要求1所述的方法,其中基于所述第一加密保护的数据集和所述第二加密保护的数据集执行所述连接包括:
识别位于所述第一集合的第一行的第一加密保护数据元素;
识别位于所述第二集合的第二行的第二加密保护数据元素;
确定所述第一加密保护数据元素与所述第二加密保护数据元素相匹配;和
将位于所述多个加密数据元素的第二行的加密数据元素添加到所述集合。
3.如权利要求1-2中任一项所述的方法,其中所述一个或多个保密计算包括由所述第一计算实体和所述第二计算实体商定的一组同态计算。
4.如权利要求1所述的方法,其中所述第一集合进一步基于基于散列的消息认证码(HMAC)算法生成。
5.如权利要求1所述的方法,其中所述同态加密方案包括部分同态加密方案。
6.如权利要求1-5中任一项所述的方法,其中所述连接是基于所述第一集合和所述第二集合之间的等价关系对所述第一数据集和所述第二数据集的内部连接。
7.如权利要求1-6中任一项所述的方法,还包括:
从第三计算实体获得第三加密保护的数据集,所述第三加密保护的数据集包括基于所述密码材料生成的第四列,其中所述密码材料还与所述第三计算实体共享;和
进一步基于所述第三加密保护的数据集执行所述连接。
8.一种存储可执行指令的非暂时性计算机可读存储介质,所述可执行指令由于被计算机系统的一个或多个处理器执行,使所述计算机系统至少:与第二计算机系统建立第一密码秘密;
获取包括多行数据元素的第一数据集;
至少通过以下方式确定加密保护的第一数据集:
使用所述第一密码秘密对所述第一数据集的第一部分进行加密保护;并
使用第二密码秘密并根据同态加密方案对所述第一数据集的第二部分进行同态加密;
对所述多行进行混洗;
向第三计算机系统并根据多方计算(MPC)协议提供所述加密保护的第一数据集,以使所述第三计算机系统基于所述第一加密保护的数据集和由所述第二计算机系统生成的第二加密保护的数据集执行一个或多个保密计算,其中:
基于所述第一密码秘密还生成所述第二加密保护的数据集;和
所述第三计算机系统缺少对所述第一密码秘密的访问;
获得基于所述第一加密保护的数据集和所述第二加密保护的数据集执行的所述一个或多个保密计算的加密结果;并
对所述加密结果进行解密以获得明文结果。
9.如权利要求8所述的非暂时性计算机可读存储介质,其中使用所述密码秘密对所述第一数据集的至少一部分进行加密保护的所述指令包括以下指令,该以下指令由于被执行使得所述计算机系统:
根据MPC协议,确定所述数据集的第一部分用于测试集成员;以及
使用键控单向函数和密码秘密对所述第一部分的数据元素进行加密保护。
10.如权利要求8-9中任一项所述的非暂时性计算机可读存储介质,其中所述指令由于被所述计算机系统的所述一个或多个处理器执行,进一步使所述系统:
确定所述第一数据集的第二部分用于根据MPC协议执行加法或乘法中的至少一个;以及
基于所述第一数据集的第二部分被用于执行加法或乘法中的至少一个的确定,对所述第一数据集的第二部分进行同态加密。
11.如权利要求10所述的非暂时性计算机可读存储介质,其中所述同态加密方案实现同态相加而非同态相乘,或同态相乘而非同态相加。
12.如权利要求8-11中任一项所述的非暂时性计算机可读存储介质,其中所述指令由于被所述计算机系统的一个或多个处理器执行,进一步使所述系统:
从所述第三计算机系统获得一个或多个加密保护的结果;
确定明文数据元素;
使用所述密码秘密来加密保护明文数据元素以确定加密保护的数据元素;并且
确定所述加密保护的数据元素与所述一个或多个加密保护的结果中的一个加密保护的结果相匹配,从而表示所述明文数据元素被包括在所述第一数据集和用于生成所述第二加密保护的数据集的第二明文数据集中。
13.如权利要求8-12中任一项所述的非暂时性计算机可读存储介质,其中:
所述第二密码秘密被与所述第二计算机系统共享;并且
并且根据MPC协议使所述第二计算机系统可获得所述加密结果。
14.如权利要求13所述的非暂时性计算机可读存储介质,其中所述第二密码秘密是对称密钥,并且所述第三计算机系统缺少对所述第二密码秘密的访问。
15.如权利要求8-14中任一项所述的非暂时性计算机可读存储介质,其中所述指令由于被所述计算机系统的一个或多个处理器执行,进一步使得所述系统从所述第三计算机系统获得所述保密计算的明文结果。
CN202280060511.5A 2021-08-06 2022-08-05 具有第三方服务的保密计算 Pending CN117999763A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/396,124 2021-08-06
US17/396,124 US11687667B2 (en) 2021-08-06 2021-08-06 Privacy-preserving computing with third-party service
PCT/US2022/039503 WO2023014929A1 (en) 2021-08-06 2022-08-05 Privacy-preserving computing with third-party service

Publications (1)

Publication Number Publication Date
CN117999763A true CN117999763A (zh) 2024-05-07

Family

ID=83149462

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280060511.5A Pending CN117999763A (zh) 2021-08-06 2022-08-05 具有第三方服务的保密计算

Country Status (5)

Country Link
US (1) US11687667B2 (zh)
CN (1) CN117999763A (zh)
DE (1) DE112022003853T5 (zh)
GB (1) GB2623040A (zh)
WO (1) WO2023014929A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7411526B2 (ja) * 2020-09-25 2024-01-11 株式会社日立製作所 情報処理システム及び情報処理方法
US11803432B1 (en) 2022-06-13 2023-10-31 Snowflake Inc. Data clean rooms using defined access
CN116383848B (zh) * 2023-04-04 2023-11-28 北京航空航天大学 一种三方安全计算防作恶方法、设备及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8526603B2 (en) 2011-07-08 2013-09-03 Sap Ag Public-key encrypted bloom filters with applications to private set intersection
US9158925B2 (en) * 2013-11-27 2015-10-13 Microsoft Technology Licensing, Llc Server-aided private set intersection (PSI) with data transfer
WO2015077964A1 (en) 2013-11-28 2015-06-04 Telefonaktiebolaget L M Ericsson (Publ) Methods, apparatuses and user equipment for hybrid automatic repeat request transmission
US10333696B2 (en) * 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
WO2017187207A1 (en) * 2016-04-29 2017-11-02 Privitar Limited Computer-implemented privacy engineering system and method
US11494506B2 (en) * 2018-04-19 2022-11-08 Google Llc Security measures for determination of private set intersections

Also Published As

Publication number Publication date
US11687667B2 (en) 2023-06-27
DE112022003853T5 (de) 2024-05-23
US20230053566A1 (en) 2023-02-23
WO2023014929A1 (en) 2023-02-09
GB202401195D0 (en) 2024-03-13
GB2623040A (en) 2024-04-03

Similar Documents

Publication Publication Date Title
Xu et al. Achieving searchable and privacy-preserving data sharing for cloud-assisted E-healthcare system
US11687667B2 (en) Privacy-preserving computing with third-party service
US9569771B2 (en) Method and system for storage and retrieval of blockchain blocks using galois fields
US9361479B2 (en) Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9252942B2 (en) Method and system for secure multiparty cloud computation
US20190354714A1 (en) Health file access control system and method in electronic medical cloud
Green et al. Outsourcing the decryption of {ABE} ciphertexts
Cirani et al. Enforcing security mechanisms in the IP-based internet of things: An algorithmic overview
US11165558B2 (en) Secured computing
US11356241B2 (en) Verifiable secret shuffle protocol for encrypted data based on homomorphic encryption and secret sharing
US20140189792A1 (en) Method and system for electronic content storage and retrieval using galois fields and informaton entropy on cloud computing networks
US10075301B2 (en) Relational encryption for password verification
US11368296B2 (en) Communication-efficient secret shuffle protocol for encrypted data based on homomorphic encryption and oblivious transfer
US11133922B1 (en) Computation-efficient secret shuffle protocol for encrypted data based on homomorphic encryption
US11368281B2 (en) Efficient distributed secret shuffle protocol for encrypted database entries using dependent shufflers
WO2016115663A1 (en) Method and apparatus for heterogeneous data storage management in cloud computing
Ali et al. Verifiable online/offline multi-keyword search for cloud-assisted industrial internet of things
CN111062052A (zh) 一种数据查询的方法和系统
US11411725B2 (en) Efficient distributed secret shuffle protocol for encrypted database entries using independent shufflers
Hammami et al. Using homomorphic encryption to compute privacy preserving data mining in a cloud computing environment
Rauthan et al. Vrs-db: Computation exploration on encrypted database
US20150071435A1 (en) Identity based encryption
US20240171374A1 (en) Encoding data for homomorphic computation and performing homomorphic computation on encoded data
Niu et al. A data-sharing scheme that supports multi-keyword search for electronic medical records
Yu et al. Outsourced ciphertext-policy attribute-based encryption with partial policy hidden

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