CN116305206A - 一种安全多方计算方法、装置、电子设备及存储介质 - Google Patents

一种安全多方计算方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116305206A
CN116305206A CN202310226684.6A CN202310226684A CN116305206A CN 116305206 A CN116305206 A CN 116305206A CN 202310226684 A CN202310226684 A CN 202310226684A CN 116305206 A CN116305206 A CN 116305206A
Authority
CN
China
Prior art keywords
data
secret
bit
share
party
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
CN202310226684.6A
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.)
Hangzhou Bodun Xiyan Technology Co ltd
Original Assignee
Hangzhou Bodun Xiyan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Bodun Xiyan Technology Co ltd filed Critical Hangzhou Bodun Xiyan Technology Co ltd
Priority to CN202310226684.6A priority Critical patent/CN116305206A/zh
Publication of CN116305206A publication Critical patent/CN116305206A/zh
Pending legal-status Critical Current

Links

Images

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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供了一种安全多方计算方法、装置、电子设备及计算机可读存储介质,包括:根据第一参与方的第一数据生成第一数据对应的第一秘密份额;基于第一秘密份额生成第一数据对应的第一比特位秘密数据;获取第二参与方的第二比特位秘密数据;基于第一比特位秘密数据和第二比特位秘密数据之间的位运算,确定第一数据与第二数据在目标函数中参与的非线性运算的运算结果。本申请可以在安全多方计算过程中的非线性运算,转换为比特位之间的运算,从而可以通过位运算得到非线性运算的运算结果,由于位运算基于计算机中的逻辑电路中实现,而逻辑电路在处理位运算时运算效率非常高,从而可以提升安全多方计算过程中非线性运算的运算效率。

Description

一种安全多方计算方法、装置、电子设备及存储介质
技术领域
本申请实施例涉及安全多方计算技术领域,尤其涉及一种安全多方计算方法、装置、电子设备及计算机可读存储介质。
背景技术
随着人们隐私保护意识的不断提高,以及相关法律法规的不断完善,社会对数据在流通和使用过程中的安全性要求越来越严苛,在多个参与方参与运算的情况下,为了能够充分保护各方持有的隐私数据,诞生了安全多方计算(Secure Multi-PartyComputation)技术。
通常意义上的安全多方计算技术,是指由多个参与方提供各自的隐私数据,计算同一个函数,实现相应的计算。在计算过程中可以使用复制秘密共享协议等方法,这些方法使各个参与方之间以秘密的形式交换待计算的隐私数据,并通过算术运算对这些秘密形式的数据进行计算,然后对计算得到的秘密形式的运算结果进行解密,得到明文形式的运算结果。
但是,函数中包括线性函数和非线性函数,并分别执行相应的线性运算和非线性运算,在使用算术运算对非线性函数进行计算时,只能通过加减乘除进行求解,往往需要多轮计算不断逼近运算结果,造成基于算术运算求解非线性函数效率较低,从而导致相关技术的安全多方计算方法在处理非线性函数时,计算效率较低。
发明内容
本申请实施例提供一种安全多方计算方法、装置、电子设备及计算机可读存储介质,以解决相关技术的安全多方计算方法在处理非线性函数时,计算效率较低的问题。
第一方面,本申请实施例提供了一种安全多方计算方法,该方法包括:
根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额;
基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成;
获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成;
基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
在一种可选实施方式中,所述根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额,包括:
获取所述第一数据和参与方总量个随机数;所有所述随机数的累加和与所述第一数据相等;
基于所述随机数生成参与方总量个第一秘密份额;其中,所述第一秘密份额与各个参与方具有一一对应关系。
在一种可选实施方式中,所述基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据,包括:
根据所述第一参与方对应的第一秘密份额,以及从第二参与方获取的所述第一参与方对应的第二秘密份额,生成第一秘密数据;其中,所述第二秘密份额由所述第二参与方基于所述第二数据生成;
将所述第二参与方对应的第一秘密份额发送至所述第二参与方,以使得所述第二参与方基于所述第二参与方对应的第一秘密份额和所述第二参与方对应的第二秘密份额,生成第二秘密数据;
基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据。
在一种可选实施方式中,所述基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据,包括:
所述第一参与方将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,得到由所述第一比特秘密份额构成的第一份额秘密数据,将所述第一份额秘密数据发送至中间方;
所述第二参与方将所述第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由所述第二比特秘密份额构成的第二份额秘密数据,将所述第二份额秘密数据发送至所述中间方;
所述中间方基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,将所述第一比特位秘密数据同步至所有参与方。
在一种可选实施方式中,所述将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,包括:
根据所述第一参与方的序号确定所述第一参与方对应的比特秘密份额生成模板;
基于所述比特秘密份额生成模板对所述第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由所述随机数中各个比特位对应的第一比特秘密份额构成的所述第一份额秘密数据。
在一种可选实施方式中,所述基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,包括:
将所述第一份额秘密数据与所述第二份额秘密数据进行加法运算,得到目标比特秘密数据;
基于所述目标比特秘密数据的最高进位和所述目标比特秘密数据,确定第一符号位;
基于所述目标比特秘密数据和所述第一符号位确定所述第一比特位秘密数据。
在一种可选实施方式中,所述基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果,包括:
基于位运算,确定所述第一比特位秘密数据与所述第二比特位秘密数据的二进制差值,确定所述二进制差值的最高位符号;
基于所述最高位符号,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
第二方面,本申请实施例提供了一种安全多方计算装置,该装置包括:
第一秘密份额生成模块,用于根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额;
第一比特位秘密数据生成模块,用于基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成;
第二比特位秘密数据获取模块,用于获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成;
非线性运算模块,用于基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
在一种可选实施方式中,所述第一秘密份额生成模块包括:
随机数获取子模块,用于获取所述第一数据和参与方总量个随机数;所有所述随机数的累加和与所述第一数据相等;
第一秘密份额生成子模块,用于基于所述随机数生成参与方总量个第一秘密份额;其中,所述第一秘密份额与各个参与方具有一一对应关系。
在一种可选实施方式中,所述第一比特位秘密数据生成模块包括:
第一秘密数据生成子模块,用于根据所述第一参与方对应的第一秘密份额,以及从第二参与方获取的所述第一参与方对应的第二秘密份额,生成第一秘密数据;其中,所述第二秘密份额由所述第二参与方基于所述第二数据生成;
第一秘密份额发送子模块,用于将所述第二参与方对应的第一秘密份额发送至所述第二参与方,以使得所述第二参与方基于所述第二参与方对应的第一秘密份额和所述第二参与方对应的第二秘密份额,生成第二秘密数据;
第一比特位秘密数据生成子模块,用于基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据。
在一种可选实施方式中,所述第一比特位秘密数据生成子模块包括:
第一份额秘密数据发送子模块,用于通过所述第一参与方将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,得到由所述第一比特秘密份额构成的第一份额秘密数据,将所述第一份额秘密数据发送至中间方;
第二份额秘密数据发送子模块,用于通过所述第二参与方将所述第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由所述第二比特秘密份额构成的第二份额秘密数据,将所述第二份额秘密数据发送至所述中间方;
第一比特位秘密数据同步子模块,用于通过所述中间方基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,将所述第一比特位秘密数据同步至所有参与方。
在一种可选实施方式中,所述第一份额秘密数据发送子模块包括:
比特秘密份额生成模板确定子模块,用于根据所述第一参与方的序号确定所述第一参与方对应的比特秘密份额生成模板;
第一份额秘密数据生成子模块,用于基于所述比特秘密份额生成模板对所述第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由所述随机数中各个比特位对应的第一比特秘密份额构成的所述第一份额秘密数据。
在一种可选实施方式中,所述第一比特位秘密数据同步子模块包括:
加法运算子模块,用于将所述第一份额秘密数据与所述第二份额秘密数据进行加法运算,得到目标比特秘密数据;
第一符号位确定子模块,用于基于所述目标比特秘密数据的最高进位和所述目标比特秘密数据,确定第一符号位;
第一比特位秘密数据确定子模块,用于基于所述目标比特秘密数据和所述第一符号位确定所述第一比特位秘密数据。
在一种可选实施方式中,所述非线性运算模块包括:
最高位符号确定子模块,用于基于位运算,确定所述第一比特位秘密数据与所述第二比特位秘密数据的二进制差值,确定所述二进制差值的最高位符号;
运算结果确定子模块,用于基于所述最高位符号,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现所述的安全多方计算方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行所述的安全多方计算方法。
在本申请实施例中,根据第一参与方的第一数据生成第一数据对应的第一秘密份额;基于第一秘密份额生成第一数据对应的第一比特位秘密数据;其中,第一比特位秘密数据由第一数据的各个比特位对应的比特位秘密份额构成;获取第二参与方的第二比特位秘密数据;其中,第二比特位秘密数据基于第二参与方的第二数据生成,第二比特位秘密数据由第二数据的各个比特位对应的比特位秘密份额构成;基于第一比特位秘密数据和第二比特位秘密数据之间的位运算,确定第一数据与第二数据在目标函数中参与的非线性函数的运算结果。本申请可以将安全多方计算过程中的非线性函数运算,转换为比特位之间的运算,从而通过位运算得到非线性函数的运算结果,由于位运算基于计算机中的逻辑电路中实现,而逻辑电路在处理位运算时运算效率非常高,有利于提升安全多方计算过程中非线性函数的运算效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请实施例提供的一种安全多方计算方法的步骤流程图;
图2是本申请实施例提供的另一种安全多方计算方法的步骤流程图;
图3是本申请实施例提供的一种复制秘密分享协议示意图;
图4是本申请实施例提供的一种全加器电路示意图;
图5是本申请实施例提供的一种Carry-out电路示意图;
图6是本申请实施例提供的一种混合电路协议示意图;
图7是本申请实施例提供的一种安全多方计算装置结构图;
图8是本申请实施例提供的一个实施例的电子设备的逻辑框图;
图9是本申请实施例提供的另一个实施例的电子设备的逻辑框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
图1是本申请实施例提供的一种安全多方计算方法的步骤流程图,应用于安全多方计算场景中的任一参与方,如图1所示,该方法包括:
步骤101、根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额。
在本申请实施例中,可以在多方参与的情况下进行安全多方计算,其中,安全多方计算(Secure Multi-Party Computation)的研究主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。在多方安全计算场景中,参与方可以包括至少两个,为方便讨论,本申请以两个参与方(第一参与方和第二参与方)的场景为基础对方案进行解释说明,需要注意的是,本方案并不限定参与方的数量。
在本申请实施例中,第一参与方和第二参与方各自持有自身的隐私数据,第一参与方与第二参与方共同持有目标函数,在安全多方计算场景中,要求各个参与方在不向其他参与方暴露自身持有的隐私数据的情况下,使用自身的隐私数据和其他参与方的隐私数据在本地进行目标函数的运算。举例来说,若第一参与方持第一数据,第二参与方持有第二数据,第一参与方和第二参与方需要计算第一数据和第二数据代入目标函数后的运算结果。
第一参与方针对自身持有的第一数据,首先生成第一数据对应的第一秘密份额。以在后续过程中使第一数据以密文的形式在各个参与方中参与运算,而不暴露第一数据的明文。
具体地,可以采用同态加密算法、高级加密标准算法(Advanced EncryptionStandard,AES)、数据加密标准算法(Data Encryption Standard)等加密算法对第一数据进行加密,得到对应的第一秘密份额,本申请实施例对此并不进行具体限定。
步骤102,基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成。
通常情况下,函数中可以包括线性函数和非线性函数,其中,线性函数仅执行线性运算,即加法、减法、乘法和除法的运算,例如,在实数运算领域中,只包含加法和数量乘法二元一次方程就属于线性运算,在计算机中,减法也会转换成加法进行运算,除法会转换成乘法进行运算,因此,减法和除法也属于线性运算。
而非线性函数中则至少包括非线性运算,例如,比较运算、对数运算、开方运算、指数运算、三角函数运算。为了实现非线性运算,通常需要将非线性运算转换成线性运算,例如,对于比较运算,可以将两个参数进行减法运算,根据差值得到比较结果。
进而,在目前主流的多方安全计算方法(例如复制秘密共享协议)中,函数中的线性计算和非线性计算均采用计算机中的算术电路实现。而采用算术电路执行非线性计算的效率较低。
因此,在本申请实施例中,可以先将第一秘密份额转换为第一比特位秘密数据,再通过第一比特位秘密数据的位运算,实现第一数据参与的非线性运算,从而提高运算效率。
具体地,可以由第一参与方将自身持有的第一数据先转换为第一秘密份额,再将第一秘密份额转换为第一比特位秘密数据,其中,第一比特位秘密数据中的每一位与第一数据的二进制形式的每一位对应,第一比特位秘密数据中的一个数据即表示第一数据的二进制形式中的一个比特位的比特位秘密份额。
需要说明的是,由于第一比特位秘密数据是根据第一秘密份额生成的,在本申请实施例中,生成第一比特位秘密数据的过程并不会暴露第一数据,因此,第一比特位秘密数据可以由第一参与方在本端生成并发送至所有其他参与方,也可以由其他参与方在持有完整第一秘密份额的情况下自主生成第一比特位秘密数据。
进一步地,为了进一步保证安全性,各个参与方仅持有第一秘密份额的部分数据,这种情况下,第一比特位秘密数据可以由各个参与方基于自身持有的第一秘密份额合作生成。本申请实施例对第一比特位秘密份额的具体生成方式在此并不进行具体限定。
步骤103,获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成。
由于目标函数中的每一次非限定计算需要至少两个参与方,例如,目标函数中的一个非线性运算需要第一参与方的第一数据和第二参与方的第二数据参与。因此,除了确定出第一数据对应的第一比特位秘密份额之外,还可以获取第二数据对应的第二比特位秘密份额,其中,第二比特位秘密数据由第二数据生成,第二比特位秘密数据由第二数据的各个比特位对应的比特位秘密份额构成。
在本申请实施例中,第二比特位秘密数据的获取方式与第一比特位秘密数据的获取方式类似,本申请实施例不再赘述。
需要说明的是,本质上,第二数据是目标函数中与第一数据参与同一个非线性运算的数据。
步骤104,基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
得到第一比特位秘密数据和第二比特位秘密数据后,可以采用第一比特位秘密数据和第二比特位秘密数据进行位运算,以完成对应的第一数据和第二数据在目标函数中参与的非线性运算,并得到对应的运算结果。
位运算是指直接对二进制位进行操作的运算。其中可以包括但不限于按位与、按位或、按位异或等运算。由于计算机在处理位运算时会调用逻辑电路,而逻辑电路在处理位运算时具有极高的效率,因此通过将非线性运算转化为二进制的位运算,可以使其在逻辑电路中执行,从而提高安全多方计算中处理非线性运算的效率。
以比较运算为例,若第一数据和第二数据在目标函数中参与的非线性运算为比较运算,则可以通过逻辑运算在计算机的逻辑电路中计算第一比特位秘密数据与第二比特位秘密数据之间的二进制差值,再在计算机的逻辑电路中提取二进制差值的符号位,通过符号位即可确定该二进制差值是否小于0,从而确定出第一比特位秘密数据与第二比特位秘密数据之间的大小关系,该大小关系即为对应的第一数据与第二数据之间的大小关系,也就是第一数据与第二数据在目标函数中参与的比较运算的运算结果。
需要说明的是,还可以采用相似的方法,通过逻辑运算将其他非线性运算转化为在逻辑电路中执行的位运算,从而提高其他非线性运算的运算效率,技术人员可以根据实际需要灵活设置各种非线性运算对应的位运算实现方式,本申请实施例不做具体限定。
综上,为本申请实施例提供的一种安全多方计算方法,在本申请实施例中,根据第一参与方的第一数据生成第一数据对应的第一秘密份额;基于第一秘密份额生成第一数据对应的第一比特位秘密数据;其中,第一比特位秘密数据由第一数据的各个比特位对应的比特位秘密份额构成;获取第二参与方的第二比特位秘密数据;其中,第二比特位秘密数据由第二参与方基于第二参与方的第二数据生成,第二比特位秘密数据由第二数据的各个比特位对应的比特位秘密份额构成;基于第一比特位秘密数据和第二比特位秘密数据之间的位运算,确定第一数据与第二数据在目标函数中参与的非线性运算的运算结果。本申请可以将安全多方计算过程中的非线性运算,转换为比特位之间的运算,从而得到非线性运算的运算结果,由于位运算基于计算机中的逻辑电路中实现,而逻辑电路在处理位运算时运算效率非常高,从而可以提升安全多方计算过程中非线性运算的运算效率。
图2是本申请实施例提供的另一种安全多方计算方法的步骤流程图,如图2所示,该方法包括:
步骤201,获取所述第一数据和参与方总量个随机数;所有所述随机数的累加和与所述第一数据相等。
在本申请实施例中,第一参与方可以针对第一数据生成参与方总量个随机数,并使该参与方总量个随机数的累加和,与第一数据相等。
举例来说,若有一组参与方为P1,P2,P3,各个参与方在安全的信道上进行通信,共同计算一个公开的目标函数y=F(x1,x2,x3),xi为参与方Pi所持有的隐私数据,y为目标函数的运算结果,各个参与方计算出的运算结果可以选择恢复给指定参与方。在本申请实施例中,各个参与方可以在本地计算自身持有的隐私数据对应的秘密份额,并交换其它参与方的秘密份额。第一参与方(P1)的隐私数据为x1,可以随机采样3个随机数x11,x12和x13,使得x1=x11+x12+x13
进一步地,为了使本方案能够兼容目前的复制秘密共享协议,以在使用逻辑电路执行非线性运算的同时,还能将目标函数中的线性函数运算放在算术电路上执行。因此,在生成随机数时,需要使随机数与上述第一数据属于相同环上的元素。例如,若第一数据为
Figure BDA0004118715900000111
即x1是环/>
Figure BDA0004118715900000112
上的一个元素,则对应的,生成的三个随机数也可以是环/>
Figure BDA0004118715900000113
上的元素。
由于加密算法是本质上是一种数学运算,秘密数据之间的数学运算最终要在处理器上运行,而处理器上的整数表示是有位数限制的,例如在64位处理器中,int类型的整数用32比特表示,int类型的整数用64比特表示。因此,要求参与的所有秘密数据都要表示在有限域上,才能在处理器中实际进行运算操作。其中,有限域本质上是一个集合,它需要满足封闭性,因此有限域上的元素一般会模上一个素数p(整数域)或者2k(环)。例如在环上,元素的取值范围就是[0,2k-1],且环上的元素满足加法运算和乘法运算,并且加法和乘法运算的结果同样在环内。
该协议基于半诚实安全模型(The Semi-Honest Model),参与方通过该协议进行秘密份额的交换,并执行相应的计算。
步骤202,基于所述随机数生成参与方总量个第一秘密份额;其中,所述第一秘密份额与各个参与方具有一一对应关系。
在本申请实施例中,第一参与方针对自身持有的第一数据,可以基于其对应的随机数,生成参与方总量个第一秘密份额,且每个第一秘密份额对应于一个参与方,其中,每个第一秘密份额由(参与方总量-1)个随机数组合得到。
延续上述示例,在系统包含三个参与方的情况下,基于第一参与方的第一数据生成三个随机数x11,x12和x13,可以基于这些随机数生成三个第一秘密份额{(x11,x12),(x12,x13),(x13,x11)}。其中,第一秘密份额(x11,x12)可以对应于第一参与方,第一秘密份额(x12,x13)可以对应于第二参与方(P2)。
步骤203,根据所述第一参与方对应的第一秘密份额,以及从第二参与方获取的所述第一参与方对应的第二秘密份额,生成第一秘密数据;其中,所述第二秘密份额由所述第二参与方基于所述第二数据生成。
由于每个第一秘密份额对应于一个参与方,第一参与方可以保留自身对应的第一秘密份额(一个数据对应的全部秘密份额也可以称作秘密,全部秘密份额中的一个秘密份额也可以称作秘密碎片),并从各个第二参与方获取由第二参与方生成的第一参与方对应的第二秘密份额,再将自身对应的第一秘密份额和第二秘密份额组合成为第一秘密数据。以在后续计算过程中避免造成某个数据的秘密泄漏,取而代之根据多个数据的部分秘密组合而成的秘密数据进行计算,进一步提升安全多方计算的安全性。其中,秘密份额与参与方的对应关系可以根据秘密份额与参与方的下标确定,例如,第一参与方生成三个下标分别为1、2、3的第一秘密份额,整个系统中共包含三个下表分别为1、2、3的参与方,则下标为1的第一秘密份额可以对应于下标为1的参与方。
延续上述示例,第一数据对应的三个第一秘密份额中,第一参与方对应的第一秘密份额为(x11,x12),若第二参与方持有第二数据,且第二参与方根据第二数据生成三个第二秘密份额为{(x21,x22),(x22,x23),(x23,x21)},第三参与方(P3)可以持有第三数据,第三参与方根据第三数据生成三个第三秘密份额为{(x31,x32),(x32,x33),(x33,x31)},则第一参与方对应的第二秘密份额可以为(x21,x22),第一参与方对应的第三秘密份额可以为(x31,x32),则将每个参与方的隐私数据对应的秘密份额中,对应于第一参与方的秘密份额进行组合后,可以得到第一参与方持有的第一秘密数据{(x11,x12),(x21,x22),(x31,x32)}。
需要说明的是,上述第一秘密数据及其生成过程仅为示例性描述,为一种可能的实施方式,根据实际需要,技术人员可以灵活调整各个随机数的组合方式以生成第一秘密数据,本申请实施例对此并不进行具体限定。
在本申请实施例中,通过上述生成和分享第一秘密份额的过程,可以将第一数据对应的随机数分配至各个参与方中,上述过程可以称为复制秘密分享协议。参照图3,图3示出了本申请实施例提供的一种复制秘密分享协议示意图,如图3所示,若第一数据为12345,在参与方为三个的情况下,第一参与方可以生成随机数1(3512)、随机数2(2100)、随机数3(6733),并通过上述复制秘密分享协议,将随机数1和随机数2保留在自身,将随机数2和随机数3分享至第二参与方,将随机数1和随机数3分享至第三参与方。
步骤204,将所述第二参与方对应的第一秘密份额发送至所述第二参与方,以使得所述第二参与方基于所述第二参与方对应的第一秘密份额和所述第二参与方对应的第二秘密份额,生成第二秘密数据。
在本申请实施例中,每个参与方均可以采用上述方式生成各自持有的数据对应的秘密份额,并将各自的秘密份额中自身对应的部分保留,其余部分发送至对应的参与方中,每个参与方都执行上述操作后,每个参与方都能持有参与方总量个秘密份额,每个参与方可以将持有的所有秘密份额组合从而得到各自的秘密数据。
以第二参与方为例,第二参与方可以自己基于第二数据生成第二参与方对应的第二秘密份额,并从第一参与方获取第二参与方对应的第一秘密份额,在存在更多参与方的情况下,还能从其他参与方获取更多的第二参与方对应的秘密份额,第二参与方可以在本地对这些第二参与方对应的秘密份额进行组合,得到第二秘密数据。
步骤205,基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据。
在本申请实施例中,每个参与方可以生成自身持有的秘密数据对应的比特位秘密数据,但由于自身持有的秘密数据中的秘密份额并不完整,为了生成某个隐私数据对应的比特位秘密数据,需要结合所有参与方持有的秘密份额。
具体地,以生成第一数据对应的第一比特位秘密数据为例,可以采用所有参与方持有的秘密数据,并经过多个参与方之间协同配合,生成第一数据对应的第一比特位秘密数据。
需要说明的是,若系统中仅包含两个参与方,则第二参与方可以表示除第一参与方之外的另一个参与方,若系统中包含两个以上的参与方,则第二参与方可以表示第一参与方之外的所有其他参与方。
可选地,步骤205可以包括:
子步骤2051,所述第一参与方将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,得到由所述第一比特秘密份额构成的第一份额秘密数据,将所述第一份额秘密数据发送至中间方。
在本申请实施例中,第一参与方的第一秘密数据中包含有所有需要参与非线性计算的隐私数据对应的部分秘密份额。由于一个隐私数据等于该隐私数据对应的所有随机数之和,而这些随机数分布于其对应的所有秘密份额之中,因此,可以根据每个参与方持有的该隐私数据对应的秘密份额生成对应的比特秘密份额,在基于所有参与方生成的比特秘密份额计算该隐私数据对应的比特位秘密数据。
具体地,以生成第一数据对应的第一比特位秘密数据为例,可以第一参与方将第一秘密数据中的第一秘密份额的比特位转换为第一比特秘密份额,得到由第一比特秘密份额构成的第一份额秘密数据,将第一份额秘密数据发送至中间方。
在第一份额秘密数据中包含多个秘密子数据,每个秘密子数据对应于第一数据对应的一个随机数中的一个二进制位,这些秘密子数据按照其对应的二进制位在随机数中的次序排列从而形成第一份额秘密数据。
在本申请实施例中,得到第一份额秘密数据后,可以将第一份额秘密数据发送至中间方,由中间方根据第一份额秘密数据和其余份额秘密数据计算第一比特位秘密数据,避免任何一个参与方获得全部的份额秘密数据,进一步提高安全多方计算过程中的安全性。
可选地,在本申请实施例中,可以采用以下子步骤A1至子步骤A2生成第一比特秘密份额。
子步骤A1,根据所述第一参与方的序号确定所述第一参与方对应的比特秘密份额生成模板。
在本申请实施例中,可以预先为每个参与方配置比特秘密份额生成模板,每个参与方生成比特秘密份额时,根据该模板所示的规则对自身持有的秘密数据中的随机数进行处理,即可得到对应的比特秘密份额。
以系统中包含三个参与方为例,比特秘密份额生成总规则可以如下表1所示:
Figure BDA0004118715900000151
Figure BDA0004118715900000161
表1
其中,P1表示第一参与方,以此类推,x11,x12和x13表示第一数据对应的三个秘密碎片(即前述随机数)。对于隐私数据x1,它被拆分为三个秘密碎片分别为x11,x12,x13,且满足x1=x11+x12+x13。每个参与方持有其中的两份秘密碎片,所以说是二元组的形式。上述表1的第二、三、四行,其实就是对第一行的秘密碎片做再一次秘密共享的结果。例如参与方P1,它持有的秘密碎片为x11,x13,它通过对x11,x13再做一次秘密分享,将它们转换为(x11,0),(0,x13),x12因为它不持有,所以第二位设置为(0,0)。
在本申请实施例中,参与方P1对应的比特秘密份额生成模板可以为如下表2所示:
(x11,0) (0,x11) (0,0)
表2
子步骤A2,基于所述比特秘密份额生成模板对所述第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由所述随机数中各个比特位对应的第一比特秘密份额构成的所述第一份额秘密数据。
在本申请实施例中,可以基于比特秘密份额生成模板对第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由随机数中各个比特位对应的第一比特秘密份额构成的第一份额秘密数据。这样,每个参与方可以对第一数据的第一随机数进行比特转换,从而使整个系统得到第一数据的各个随机数对应的份额秘密数据。
举例来说,若将x11转化为二进制数后,该二进制数的比特位包含k个比特位:
Figure BDA0004118715900000162
针对x11的每个二进制位,可以将其二进制表示中的第j个比特位转换为二元数组:/>
Figure BDA0004118715900000163
(0,0),从而得到由x11的每个二进制位对应的二元数组构成的第一比特秘密份额。其中,/>
Figure BDA0004118715900000171
表示x11对应的二进制位中第j个比特位。
子步骤2052,所述第二参与方将所述第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由所述第二比特秘密份额构成的第二份额秘密数据,将所述第二份额秘密数据发送至所述中间方。
在本申请实施例中,针对每个需要参与非线性运算的隐私数据,每个参与方均需要生成该隐私数据的一个随机数的份额秘密数据,例如,第二参与方可以根据第二秘密数据,生成第一数据对应的一个随机数的第二份额秘密数据。
具体地,第二参与方可以将第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由第二比特秘密份额构成的第二份额秘密数据,将第二份额秘密数据发送至中间方。详细的生成过程可以参见上述子步骤A1至A2,本申请实施例不再赘述。
需要说明的是,对于第二参与方而言,在生成第二份额秘密数据的过程中,所需的比特秘密份额生成模板与第一参与方不同,例如,以上述表1中示出的比特秘密份额生成总规则为例,可以确定出第二参与方对应的比特秘密份额生成模板如下表3所示:
(0,0) (x12,0) (0,x12)
表3
则相应的,第二参与方可以将x12转化为第二份额秘密数据,在转换过程中,二进制数的第j个比特位转换为二元数组:(0,0),
Figure BDA0004118715900000172
子步骤2053,所述中间方基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,将所述第一比特位秘密数据同步至所有参与方。
在本申请实施例中,为了进一步提高安全多方计算过程中的安全性,还可以设置中间方,并由中间方对需要参与非线性运算的第一数据的秘密份额对应的份额秘密数据进行汇总,并基于第一数据对应的所有份额秘密数据生成对应的第一比特位秘密数据,以将第一数据转换为比特形式的秘密。
具体地,各个参与方可以在自身生成第一数据的份额秘密数据之后,将自身生成的份额秘密数据发送至中间方,中间方接收到第一数据对应的所有份额秘密数据之后,将所有份额秘密数据相加,得到第一数据对应的第一比特位秘密数据,并将该第一比特位秘密数据发送至需要使用第一数据进行非线性运算的参与方。需要说明的是,对于所有参与非线性运算的隐私数据,均可以采用上述方式生成对应的比特位秘密数据,例如,对于第二数据,可以生成对应的第二比特位秘密数据。
可选地,子步骤2053可以包括:
子步骤B1,将所述第一份额秘密数据与所述第二份额秘密数据进行加法运算,得到目标比特秘密数据。
在本申请实施例中,为了计算第一比特位秘密数据,首先需要对各个份额秘密数据进行加法运算,得到目标比特秘密数据。具体地,可以将第一数据对应的所有份额秘密数据(例如第一份额秘密数据与第二份额秘密数据)进行加法运算,得到目标比特秘密数据。
具体地,若第一份额秘密数据为a1,第二份额秘密数据包括a2和a3,则目标比特秘密数据A可以通过以下公式1计算:
A1+a2+a3(公式1)
需要说明的是,在上述计算目标比特秘密数据A的过程中,各个比特位进行按位相加,除了最低比特位相加之外,其余比特位相加过程中需要考虑进位影响。因此,目标比特秘密数据A的最低比特位只需要满足如下公式2所示的关系即可:
[A]1=[a1]1+[a2]1+[a3]12(公式2)
其中,[A]1为目标比特秘密数据A的最低比特位,[a1]1为a1的最低比特位,[a2]1为a2的最低比特位,[a3]1为a3的最低比特位,mod2表示进行模二加法运算,模二加法是一种二进制的运算,可类似于“异或”运算。
结合前述表1可以知,[a1]1其实可以对应(x11,0),[a2]1可以对应(0,0),由于参与方P1不持有秘密碎片x12,[a3]1对应(0,x13)。参与方P1基于上述公式执行第1个比特位的二进制加法运算,计算的是x11,x12,x13之间的第1个比特位的加法,运算结果目标比特秘密数据也是二元组形式的秘密。
进一步地,第一份额秘密数据与第二份额秘密数据之间的相加可以将对应位置做全加器计算,举例来说,(x11,0)+(0,0)+(0,x13)可以等价于(x11+0+0,0+0+x13),上述加号可以在二进制电路的全加器电路中执行。
参照图4,图4示出了本申请实施例提供的一种全加器电路示意图,如图4所示,A、B、Cin分别对应三个秘密碎片的输入,输出包括比特进位Cout和加法结果S,可以通过以下公式3和公式4进行计算:
Figure BDA0004118715900000191
Figure BDA0004118715900000192
其中,“·”表示比特与运算,即比特之间的乘法运算。
子步骤B2,基于所述目标比特秘密数据的最高进位和所述目标比特秘密数据,确定第一符号位。
在本申请实施例中,目标比特秘密数据可以构成第一比特位秘密数据的数据位,除此之外,还可以确定第一比特位秘密数据的符号位,因此,在得到目标比特秘密数据后,可以采用位运算,基于目标比特秘密数据的最高进位和目标比特秘密数据,确定用于生成第一比特位秘密数据的第一符号位。需要说明的是,目标比特秘密数据的最高进位是指:在根据第一份额秘密数据和第二份额秘密数据计算目标比特秘密数据的过程中,产生的最高进位。
具体地,可以采用如下公式5计算第一符号位:
Figure BDA0004118715900000193
其中,msbi可以表示第一符号位,carryi可以表示目标比特秘密数据的最高进位,[An]1可以表示目标比特秘密数据,
Figure BDA0004118715900000194
表示位运算中的“异或”运算。
进一步地,通过对三个秘密碎片的每一个比特位去做全加器加法,得到每一位的进位比特Cout,再通过carry-out电路来求得最高进位比特。
参照图5,图5示出了本申请实施例提供的一种Carry-out电路示意图,如图5所示,Carry-out电路是一种log(k)时间复杂度的电路,用于在计算目标比特秘密数据的过程中输出其最高进位比特。a1,a2…a8表示每一位做全加器电路计算后得到的进位比特,图中的圆圈表示二进制与运算。
子步骤B3,基于所述目标比特秘密数据和所述第一符号位确定所述第一比特位秘密数据。
得到目标比特秘密数据和第一符号位之后,可以将第一符号位与目标比特秘密数据进行拼接,从而得到所求的第一比特位秘密数据。
需要说明的是,在本申请实施例中,针对第二数据,也可以生成其对应的目标比特秘密数据和第二符号位,从而得到第二数据对应的第二比特位秘密数据。
步骤206,基于位运算,确定所述第一比特位秘密数据与所述第二比特位秘密数据的二进制差值,确定所述二进制差值的最高位符号。
在本申请实施例中,可以根据位运算,计算第一比特位秘密数据与第二比特位秘密数据的二进制差值,并根据该二进制差值的最高位符号,确定第一比特位秘密数据与第二比特位秘密数据之间的大小关系,从而完成第一数据与第二数据之间的非线性运算(比较运算)。
具体地,可以基于位运算,对第一比特位秘密数据与第二比特位秘密数据进行相减操作,由于该运算基于位运算,因此可通过计算机的逻辑电路实现,从而提高第一数据与第二数据进行非线性运算的效率。
在计算二进制差值时,可以固定第一比特位秘密数据与第二比特位秘密数据相减的顺序,按照预设顺序进行相减操作,以便后续根据相减结果确定第一数据和第二数据之间的大小关系。
在本申请实施例中,由于第一比特位秘密数据和第二比特位秘密数据均为密文形式,因此各个参与方可以相互交换所持有的比特位秘密数据,在各个参与方均可以独立完成不同比特位秘密数据之间的高效比较操作,不仅提升了实现目标函数据中非线性运算的效率,同时还保证了高安全性。
步骤207,基于所述最高位符号,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
在本申请实施例中,确定第一比特位秘密数据与第二比特位秘密数据之间的二进制差值的最高位符号之后,可以根据最高符号位确定出第一比特位秘密数据对应的第一数据,与第二比特位秘密数据对应的第二数据之间的大小关系,从而确定第一数据与第二数据在目标函数中参与的非线性运算的运算结果。
举例来说,若第一比特位秘密数据减去第二比特位秘密数据的二进制差值的最高符号位为负号,则说明第一比特位秘密数据对应的第一数据小于第二比特位秘密数据对应的第二数据;若第一比特位秘密数据减去第二比特位秘密数据的二进制差值的最高符号位为正号,则说明第一比特位秘密数据对应的第一数据大于第二比特位秘密数据对应的第二数据。
需要说明的是,针对不同类型的非线性运算,可以采用不同的方式对第一比特位秘密数据和第二比特位秘密数据进行处理,从而得到对应的运算结果。
步骤208,基于复制秘密共享协议确定所述第一数据与所述第二数据在所述目标函数中参与的线性运算的运算结果。
对于目标函数中的线性运算,可以采用复制秘密共享协议进行算数加法和算数乘法运算,在算术电路上完成线性运算。其中,复制秘密共享协议是一个三方半诚实模型协议,秘密值x1属于环
Figure BDA0004118715900000212
上的元素,确定出第一数据x1对应的三个随机数x11,x12和x13之后,可以生成x1的秘密份额,首先通过采样三个随机值来生成x1的秘密碎片,即x1=x11+x12+x13,即,第一数据x1的每个秘密碎片通过一个随机数表示,且所有随机数之和等于第一数据x1本身。对应的第一秘密[x1]={(x11,x12),(x12,x13),(x13,x11)},第一秘密中包含三个第一秘密份额(x11,x12),(x12,x13)和(x13,x11),将第一秘密份额发送至对应的参与方后,各个参与方可以在所持有的秘密份额的基础上执行算术计算协议。
具体地,针对加法运算:第一数据和第二数据对应的秘密有如下公式6示出的性质:
Figure BDA0004118715900000211
其中,[x1]表示第一数据的第一秘密,[x2]表示第二数据的第二秘密,[x1+x2]表示第一数据与第二数据秘密之和,x21、x22和x23表示第二秘密的第二秘密份额,“:=”表示“定义为”,是编程语言里的赋值语句的符号。
针对乘法运算:假设[z]=[x1x2],根据复制秘密共享协议,则第一数据和第二数据秘密乘积[z]可以通过如下[z]1,[z]2和[z]3进行表示,计算方法如下公式7所示:
Figure BDA0004118715900000221
其中,参与方Pi可以在本地通过它持有的隐私数据的秘密份额计算zi,由于复制秘密共享协议要求参与方Pi持有([z]i,[z]i+1),因此参与方Pi需要将它计算得到的[z]i发送给相邻的下一位参与方,以使每个参与方都持有([z]i,[z]i+1)这一乘法运算子结果。α1,α2,α3,它们是环Z2k上的随机值并且满足α123=0,每个参与方知道其中的一个值,可以通过伪随机函数来生成上述各个α,这里的环可以理解为一个闭合的数据集。
在本申请实施例中,上述进行目标函数中非线性运算和线性运算的方法可以称为混合电路协议。参照图6,图6示出了本申请实施例提供的一种混合电路协议示意图,如图6所示,参与方P1持有第一数据x1,参与方P2持有第二数据x2,参与方P3持有第三数据x3,则上述三个参与方可以通过混合电路协议计算F(x1,x2,x3)的结果,其中,F表示目标函数,通过混合电路协议可以将目标函数中的非线性运算在二进制电路中执行,将目标函数中的线性运算在算术电路中执行。
进一步地,由于各个参与方在本端计算出的运算结果实际上是完整运算结果的一部分,因此,各参与方在本端计算出运算结果后(例如针对个参与方在本端计算出的乘法运算结果),还可以将该运算结果公开至其他参与方,以便其他参与方根据所有参与方的运算结果恢复出最终的完整运算结果。
在本申请实施例中,各个参与方在本端生成运算结果后,可以将运算结果分享给其他参与方,具体的分享方式可以包含广播分享和点对点分享,其中广播分享表示将运算结果分享至所有参与方,点对点分享表示将运算结果分享至指定参与方。
具体地,若要将运算结果公开给所有参与方,对于参与方Pi,它需要将所持有的运算结果[y]i发送给其他所有参与方。随后每个参与方在本地通过以下公式8恢复完整运算结果[y]:
[y]=[y]1+[y]2+[y]3(公式8)
若参与方pi-1要将运算结果公开给某个参与方Pi,参与方Pi之外的其他参与方可以将所持有的运算结果发送给参与方Pi,随后参与方Pi在本地通过上述公式8恢复完整运算结果[y]。
以下结合一种示例性的应用场景对本方案进行测试:
在隐私保护机器学习场景中,本方案可以作为底层秘密共享方案用于构建联邦逻辑回归模型。假设数据集为X,标签为Y,逻辑回归模型的参数为w,那么在一次迭代过程中,可以通过以下公式9更新模型参数:
Figure BDA0004118715900000231
其中,f为激活函数,在线性回归模型中,激活函数f可以通过如下公式10定义:
Figure BDA0004118715900000232
在公式9中,参数w和数据集X的内积为线性运算,可以通过复制秘密共享协议在算数电路上实现。公式10涉及到比较运算,即非线性运算,可以通过本申请的方法,将非线性运算转化为位运算,即,将算术电路上的内积结果X×w转换为二进制电路上的秘密,通过基于二进制电路的安全比较来计算二进制差值的最高符号位,从而根据最高符号位判断确定非线性运算的运算结果。
综上,为本申请实施例提供的另一种安全多方计算方法,包括:根据第一参与方的第一数据生成第一数据对应的第一秘密份额;基于第一秘密份额生成第一数据对应的第一比特位秘密数据;其中,第一比特位秘密数据由第一数据的各个比特位对应的比特位秘密份额构成;获取第二参与方的第二比特位秘密数据;其中,第二比特位秘密数据由第二参与方基于第二参与方的第二数据生成,第二比特位秘密数据由第二数据的各个比特位对应的比特位秘密份额构成;基于第一比特位秘密数据和第二比特位秘密数据之间的位运算,确定第一数据与第二数据在目标函数中参与的非线性运算的运算结果。本申请可以在安全多方计算过程中的非线性运算,转换为比特位之间的运算,从而可以通过位运算得到非线性运算的运算结果,由于位运算基于计算机中的逻辑电路中实现,而逻辑电路在处理位运算时运算效率非常高,从而可以提升安全多方计算过程中非线性运算的运算效率。
与上述本发明的安全多方计算方法实施例所提供的方法相对应,参见图7,本发明还提供了一种安全多方计算装置结构图,该装置包括:
第一秘密份额生成模块301,用于根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额;
第一比特位秘密数据生成模块302,用于基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成;
第二比特位秘密数据获取模块303,用于获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成;
非线性运算模块304,用于基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
在一种可选实施方式中,所述第一秘密份额生成模块包括:
随机数获取子模块,用于获取所述第一数据和参与方总量个随机数;所有所述随机数的累加和与所述第一数据相等;
第一秘密份额生成子模块,用于基于所述随机数生成参与方总量个第一秘密份额;其中,所述第一秘密份额与各个参与方具有一一对应关系。
在一种可选实施方式中,所述第一比特位秘密数据生成模块包括:
第一秘密数据生成子模块,用于根据所述第一参与方对应的第一秘密份额,以及从第二参与方获取的所述第一参与方对应的第二秘密份额,生成第一秘密数据;其中,所述第二秘密份额由所述第二参与方基于所述第二数据生成;
第一秘密份额发送子模块,用于将所述第二参与方对应的第一秘密份额发送至所述第二参与方,以使得所述第二参与方基于所述第二参与方对应的第一秘密份额和所述第二参与方对应的第二秘密份额,生成第二秘密数据;
第一比特位秘密数据生成子模块,用于基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据。
在一种可选实施方式中,所述第一比特位秘密数据生成子模块包括:
第一份额秘密数据发送子模块,用于通过所述第一参与方将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,得到由所述第一比特秘密份额构成的第一份额秘密数据,将所述第一份额秘密数据发送至中间方;
第二份额秘密数据发送子模块,用于通过所述第二参与方将所述第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由所述第二比特秘密份额构成的第二份额秘密数据,将所述第二份额秘密数据发送至所述中间方;
第一比特位秘密数据同步子模块,用于通过所述中间方基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,将所述第一比特位秘密数据同步至所有参与方。
在一种可选实施方式中,所述第一份额秘密数据发送子模块包括:
比特秘密份额生成模板确定子模块,用于根据所述第一参与方的序号确定所述第一参与方对应的比特秘密份额生成模板;
第一份额秘密数据生成子模块,用于基于所述比特秘密份额生成模板对所述第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由所述随机数中各个比特位对应的第一比特秘密份额构成的所述第一份额秘密数据。
在一种可选实施方式中,所述第一比特位秘密数据同步子模块包括:
加法运算子模块,用于将所述第一份额秘密数据与所述第二份额秘密数据进行加法运算,得到目标比特秘密数据;
第一符号位确定子模块,用于基于所述目标比特秘密数据的最高进位和所述目标比特秘密数据,确定第一符号位;
第一比特位秘密数据确定子模块,用于基于所述目标比特秘密数据和所述第一符号位确定所述第一比特位秘密数据。
在一种可选实施方式中,所述非线性运算模块包括:
最高位符号确定子模块,用于基于位运算,确定所述第一比特位秘密数据与所述第二比特位秘密数据的二进制差值,确定所述二进制差值的最高位符号;
运算结果确定子模块,用于基于所述最高位符号,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
综上,本申请实施例提供的一种安全多方计算装置,包括:第一秘密份额生成模块,用于根据第一参与方的第一数据生成第一数据对应的第一秘密份额;第一比特位秘密数据生成模块,用于基于第一秘密份额生成第一数据对应的第一比特位秘密数据;其中,第一比特位秘密数据由第一数据的各个比特位对应的比特位秘密份额构成;第二比特位秘密数据获取模块,用于获取第二参与方的第二比特位秘密数据;其中,第二比特位秘密数据由第二参与方基于第二参与方的第二数据生成,第二比特位秘密数据由第二数据的各个比特位对应的比特位秘密份额构成;非线性运算模块,用于基于第一比特位秘密数据和第二比特位秘密数据之间的位运算,确定第一数据与第二数据在目标函数中参与的非线性运算的运算结果。本申请可以在安全多方计算过程中的非线性运算,转换为比特位之间的运算,从而可以通过位运算得到非线性运算的运算结果,由于位运算基于计算机中的逻辑电路中实现,而逻辑电路在处理位运算时运算效率非常高,从而可以提升安全多方计算过程中非线性运算的运算效率。
图8是本申请一个实施例的电子设备600的逻辑框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图8,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电力组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。若屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本申请实施例提供的一种安全多方计算方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图9是本申请一个实施例的电子设备700的逻辑框图。例如,电子设备700可以被提供为一服务器。参照图9,电子设备700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本申请实施例提供的一种安全多方计算方法。
电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(I/O)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现所述的安全多方计算方法。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种安全多方计算方法,其特征在于,所述方法包括:
根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额;
基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成;
获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成;
基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
2.根据权利要求1所述的方法,其特征在于,所述根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额,包括:
获取所述第一数据和参与方总量个随机数;所有所述随机数的累加和与所述第一数据相等;
基于所述随机数生成参与方总量个第一秘密份额;其中,所述第一秘密份额与各个参与方具有一一对应关系。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据,包括:
根据所述第一参与方对应的第一秘密份额,以及从第二参与方获取的所述第一参与方对应的第二秘密份额,生成第一秘密数据;其中,所述第二秘密份额由所述第二参与方基于所述第二数据生成;
将所述第二参与方对应的第一秘密份额发送至所述第二参与方,以使得所述第二参与方基于所述第二参与方对应的第一秘密份额和所述第二参与方对应的第二秘密份额,生成第二秘密数据;
基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据。
4.根据权利要求3所述的方法,其特征在于,所述基于所述第一秘密数据和所述第二秘密数据,生成所述第一比特位秘密数据,包括:
所述第一参与方将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,得到由所述第一比特秘密份额构成的第一份额秘密数据,将所述第一份额秘密数据发送至中间方;
所述第二参与方将所述第二秘密数据中第一数据对应的随机数的比特位转换为第二比特秘密份额,得到由所述第二比特秘密份额构成的第二份额秘密数据,将所述第二份额秘密数据发送至所述中间方;
所述中间方基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,将所述第一比特位秘密数据同步至所有参与方。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一秘密数据中第一数据对应的随机数的比特位转换为第一比特秘密份额,包括:
根据所述第一参与方的序号确定所述第一参与方对应的比特秘密份额生成模板;
基于所述比特秘密份额生成模板对所述第一参与方对应的第一秘密份额中随机数的比特位进行转换,得到由所述随机数中各个比特位对应的第一比特秘密份额构成的所述第一份额秘密数据。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第一份额秘密数据和所述第二份额秘密数据生成所述第一比特位秘密数据,包括:
将所述第一份额秘密数据与所述第二份额秘密数据进行加法运算,得到目标比特秘密数据;
基于所述目标比特秘密数据的最高进位和所述目标比特秘密数据,确定第一符号位;
基于所述目标比特秘密数据和所述第一符号位确定所述第一比特位秘密数据。
7.根据权利要求1所述的方法,其特征在于,所述基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果,包括:
基于位运算,确定所述第一比特位秘密数据与所述第二比特位秘密数据的二进制差值,确定所述二进制差值的最高位符号;
基于所述最高位符号,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
8.一种安全多方计算装置,其特征在于,所述装置包括:
第一秘密份额生成模块,用于根据第一参与方的第一数据生成所述第一数据对应的第一秘密份额;
第一比特位秘密数据生成模块,用于基于所述第一秘密份额生成所述第一数据对应的第一比特位秘密数据;其中,所述第一比特位秘密数据由所述第一数据的各个比特位对应的比特位秘密份额构成;
第二比特位秘密数据获取模块,用于获取第二参与方的第二比特位秘密数据;其中,所述第二比特位秘密数据由所述第二参与方基于所述第二参与方的第二数据生成,所述第二比特位秘密数据由所述第二数据的各个比特位对应的比特位秘密份额构成;
非线性运算模块,用于基于所述第一比特位秘密数据和所述第二比特位秘密数据之间的位运算,确定所述第一数据与所述第二数据在所述目标函数中参与的非线性运算的运算结果。
9.一种电子设备,其特征在于,包括:处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的方法。
CN202310226684.6A 2023-03-06 2023-03-06 一种安全多方计算方法、装置、电子设备及存储介质 Pending CN116305206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310226684.6A CN116305206A (zh) 2023-03-06 2023-03-06 一种安全多方计算方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310226684.6A CN116305206A (zh) 2023-03-06 2023-03-06 一种安全多方计算方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116305206A true CN116305206A (zh) 2023-06-23

Family

ID=86830057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310226684.6A Pending CN116305206A (zh) 2023-03-06 2023-03-06 一种安全多方计算方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116305206A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117520970A (zh) * 2024-01-05 2024-02-06 同盾科技有限公司 基于多方安全计算的符号位确定方法、装置、系统
CN117724854A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117520970A (zh) * 2024-01-05 2024-02-06 同盾科技有限公司 基于多方安全计算的符号位确定方法、装置、系统
CN117520970B (zh) * 2024-01-05 2024-03-29 同盾科技有限公司 基于多方安全计算的符号位确定方法、装置、系统
CN117724854A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及可读存储介质
CN117724854B (zh) * 2024-02-08 2024-05-24 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN116305206A (zh) 一种安全多方计算方法、装置、电子设备及存储介质
CN114301594B (zh) 一种不经意传输方法、多方安全计算平台和用于不经意传输的装置
CN113315631B (zh) 一种数据处理方法、装置和用于数据处理的装置
CN115396101B (zh) 一种基于秘密分享的不经意打乱方法和系统
CN115396100B (zh) 一种基于秘密分享的不经意随机打乱方法和系统
CN112688779B (zh) 一种数据处理方法、装置和用于数据处理的装置
CN113449325B (zh) 一种数据处理方法、装置和用于数据处理的装置
CN115941181B (zh) 一种乱序秘密分享方法、系统和可读存储介质
CN115967491A (zh) 一种隐私求交方法、系统和可读存储介质
CN113254956A (zh) 一种数据处理方法、装置和用于数据处理的装置
CN114884645B (zh) 一种隐私计算方法、装置和可读存储介质
CN112307056A (zh) 一种数据处理方法、装置和用于数据处理的装置
CN112241250A (zh) 一种数据处理方法、装置和用于数据处理的装置
CN115085912A (zh) 一种密文计算方法、装置和用于密文计算的装置
CN115617897B (zh) 一种数据类型转换方法和多方安全计算系统
CN116401423A (zh) 基于安全多方计算的中位数确定方法、装置、设备及介质
CN114885038B (zh) 一种加密协议转换方法、结果获取节点和隐私计算节点
CN114448631B (zh) 一种多方安全计算方法、系统和用于多方安全计算的装置
CN112463332B (zh) 一种数据处理方法、密文计算系统和用于数据处理的装置
CN112468290B (zh) 一种数据处理方法、装置和用于数据处理的装置
CN112583764B (zh) 一种数据处理方法、装置和用于数据处理的装置
CN114996752A (zh) 一种多方隐私求交方法、装置和用于多方隐私求交的装置
CN112580064A (zh) 一种数据处理方法、装置和用于数据处理的装置
CN114448630B (zh) 一种多方安全计算方法、系统和用于多方安全计算的装置
CN112668015B (zh) 一种数据处理方法、装置和用于数据处理的装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination