CN111027086B - 一种私有数据保护方法和系统 - Google Patents
一种私有数据保护方法和系统 Download PDFInfo
- Publication number
- CN111027086B CN111027086B CN201911297040.6A CN201911297040A CN111027086B CN 111027086 B CN111027086 B CN 111027086B CN 201911297040 A CN201911297040 A CN 201911297040A CN 111027086 B CN111027086 B CN 111027086B
- Authority
- CN
- China
- Prior art keywords
- data
- computing
- calculation
- node
- execution environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000004364 calculation method Methods 0.000 claims abstract description 206
- 238000012545 processing Methods 0.000 claims abstract description 137
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 claims abstract description 52
- 238000003860 storage Methods 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 16
- 238000012549 training Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000012986 modification Methods 0.000 description 12
- 230000004048 modification Effects 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 8
- 238000004220 aggregation Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000007405 data analysis Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000011835 investigation Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000010977 jade Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- 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
技术领域
本说明书涉及数据处理领域,特别涉及一种多方计算过程中的私有数据保护方法、系统、装置以及可读存储介质。
背景技术
随着信息科技的发展,数据作为其拥有方的重要资源,数据隐私愈来愈受到人们的重视。而现今多方数据联合使用已经成为常态,多方计算是一种可以允许多个数据拥有者在互不信任的情况下进行协同计算的方法。
但是,多方计算过程中数据的隐私仍然存在泄漏的风险,因此,有必要提供一种多方计算过程中的私有数据保护方法。
发明内容
本说明书实施例的一个方面提供一种多方计算过程中的私有数据保护方法。所述方法由一个或多个处理器在可信执行环境中执行。所述方法包括:可以获取一个以上计算节点的计算数据。可以验证计算数据,以确保计算数据仅能被预设算法处理一次和/或计算数据的唯一性。可以将各计算节点的计算数据基于预设算法进行处理,获得处理结果。可以输出所述处理结果,以使中心节点能够基于所述处理结果进行多方计算中的后续计算工作。
本说明书实施例的另一个方面提供一种私有数据保护方法。所述方法由某计算节点中的一个或多个处理器执行。所述方法包括:可以与执行多方计算相关的计算程序以获得计算数据。可以将所述计算数据加密后发送给可信执行环境以进行处理。
本说明书实施例的另一个方面提供一种多方计算过程中的私有数据保护系统,所述系统位于可信执行环境中,所述系统包括获取模块、第一处理模块以及第一发送模块。所述获取模块,可以用于获取一个以上计算节点的计算数据。所述验证第一处理模块,可以用于验证计算数据,以确保计算数据仅能被预设算法处理一次和/或计算数据的唯一性。所述第一处理模块,可以用于将各计算节点的计算数据基于预设算法进行处理,获得处理结果。所述第一发送模块,可以用于输出所述处理结果,以使中心节点能够基于所述处理结果进行多方计算中的后续计算工作。
本说明书实施例的另一个方面提供一种私有数据保护系统。所述系统包括第二处理模块和第二发送模块。所述第二处理模块,可以用于执行与多方计算相关的计算程序以获得计算数据。所述第二发送模块,可以用于将所述计算数据加密后发送给可信执行环境以进行处理。
本说明书实施例的另一个方面提供一种多方计算过程中的私有数据保护装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现多方计算过程中的私有数据保护方法。
本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行多方计算过程中的私有数据保护方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的多方计算系统的应用场景示意图;
图2是根据本说明书一些实施例所示的多方计算过程中的私有数据保护方法的示例性流程图;
图3是根据本说明书一些实施例所示的远程验证机制的示例性框图;
图4是根据本说明书一些实施例所示的验证计算数据的示例性流程图;
图5是根据本说明书一些实施例所示的私有数据保护方法的示例性流程图;
图6是根据本说明书一些实施例所示的多方计算过程中的私有数据保护系统的模块图;以及
图7是根据本说明书一些实施例所示的私有数据保护系统的模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
当前,数据隐私愈来愈受到人们的重视,而现今多方数据联合计算(或简称为多方计算)已经成为一种常态。在多方数据联合计算中如何保护用户的数据隐私至关重要。一种保护数据隐私的思路是采用分布式数据联合计算,用户数据不再集中在某个中心,而是允许训练数据分散在各个参与方,各个参与方得出计算结果后,将计算结果汇总或处理后发送至另一节点进行后续处理。多方数据联合计算,可以在用户数据不离开各自节点的前提下,完成多方协同分析、处理和结果发布等。多方计算可以应用于各种场景,涉及但不限于金融业、制造业、医疗业等。数据使用方面涉及数据安全查询、联合数据分析、机器模型联合训练及预测等。
联邦学习(Federated Learning)是谷歌提出的一种用于解决机器学习训练中的数据隐私问题的学习方式。联邦学习是一种分布式机器学习训练方案,其核心做法是服务端将初始模型分发给多个计算节点(例如,手机、pad、计算机等),每个计算节点使用各自本地的用户数据训练初始模型,得到更新后的模型数据(例如,梯度值),然后将模型数据进行加密后发送给服务端。服务端在接收到多个计算节点的模型数据后,对模型数据进行聚合,再利用聚合后的结果对模型进行更新。服务端将更新后的模型重新发送给各个计算节点,开始下一轮的迭代。
在上述方案中,核心问题是如何在保证模型数据不泄漏的前提下得到模型数据的聚合结果,即,服务端只能知道最终的聚合结果,不能知道各个计算节点发送的具体模型数据。如何解决这一问题是保护用户隐私数据的关键,因为如果得到了具体的模型数据,那么则有可能通过反推得到用户数据。而这一问题,也正是多方计算信息安全的一个核心问题,如何保证在计算结果不泄漏的前提下得到汇总或处理后的结果对于保护用户数据隐私至关重要。因此,为了保证在多方计算过程中的数据隐私安全,本说明书一些实施例提出一种多方计算过程中的私有数据保护方法,该方法基于可信执行环境(TEE,Trusted ExecutionEnvironment),利用可信执行环境提供的与不可信环境隔离的安全计算环境,在可信执行环境中对各个计算节点的计算数据进行聚合,然后再发送给服务端,使得服务端在接收到聚合数据后无法得知各个计算节点的计算数据,增加倒推用户数据的难度,提高多方计算过程中私有数据的安全性。应当理解,上述例子仅作为示例,不应理解为对本方案限制。以下通过对附图的描述阐述本说明书披露的技术方案。
图1是根据本说明书一些实施例所示的多方计算系统的应用场景示意图。如图1所示,所述多方计算系统100可以包括中心节点110、计算节点120、可信节点130以及网络140。
中心节点110可以是带有数据获取、存储、计算和/或发送功能的设备,例如,计算机、智能手机、pad等。中心节点110可以用于基于接收到的计算数据执行多方计算中的后续计算工作。例如,中心节点110可以通过网络140获取可信节点130上的信息和/或数据(例如,处理结果),然后基于获取到的信息和/或数据执行多方计算中的后续计算工作。中心节点110可以是本地的或远程的。在一些实施例中,中心节点110可以设置在一个计算机、智能手机或pad中。在一些实施例中,中心节点110可以在云端平台实施。仅作为示例,云端平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多云等或其任意组合。
计算节点120可以是带有数据获取、存储、计算和/或发送功能的设备,例如,计算机、智能手机、pad等。计算节点120可以用于参与多方计算,基于本地用户数据计算得到计算数据。计算节点120可以基于网络140将所述计算数据发送给可信节点130。在一些实施例中,计算节点120可以是本地的或远程的。在一些实施例中,计算节点120可以设置在一个计算机、智能手机或pad中。在一些实施例中,计算节点120可以在云端平台实施。仅作为示例,云端平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多云等或其任意组合。
可信节点130可以是带有数据获取、存储、计算和/或发送功能的设备,例如,计算机、智能手机、pad等。可信节点130可以与其他节点(例如,中心节点110、计算节点120)独立或共存。例如,可信节点130可以与中心节点110设置于一台计算机中;可信节点130也可以与中心节点110分别位于不同的设备中,如,可信节点130可以位于一台计算机中,中心节点110可以位于一个智能手机中。可信节点130可以通过网络(例如,网络140)从计算节点120处获取信息和/或数据。例如,可信节点130可以从计算节点120处获取计算数据。可信节点130可以部署有可信执行环境,可信节点130可以在可信执行环境中基于预设算法(例如,加法、乘法、减法等)对获取的计算数据进行处理,得到处理结果。可信执行环境可以包括Software Guard Extensions、Secure Encrypted Virtualization或TrustZone等。
网络140可以促进信息和/或数据的交换。在一些实施例中,系统100的一个或者多个节点(例如中心节点110、计算节点120和可信节点130)可以通过网络140传送信息至系统100的其他节点。例如,中心节点110可以通过网络140从可信节点130中获取处理结果。在一些实施例中,网络140可以是任意形式的有线或者无线网络,或其任意组合。仅作为范例,网络140可以是有线网络、光纤网络、远程通信网络、内部网络、互联网、局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、城域网(MAN)、广域网(WAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络、近场通讯(NFC)网络、全球移动通讯系统(GSM)网络、码分多址(CDMA)网络、时分多址(TDMA)网络、通用分组无线服务(GPRS)网络、增强数据速率GSM演进(EDGE)网络、宽带码分多址接入(WCDMA)网络、高速下行分组接入(HSDPA)网络、长期演进(LTE)网络、用户数据报协议(UDP)网络、传输控制协议/互联网协议(TCP/IP)网络、短讯息服务(SMS)网络、无线应用协议(WAP)网络、超宽带(UWB)网络、移动通信(1G、2G、3G、4G、5G)网络、Wi-Fi、Li-Fi、窄带物联网(NB-IoT)、红外通信网络等中的一种或多种组合。在一些实施例中,网络140可包括一个或者多个网络接入点。例如,网络140可包括有线或无线网络进接点比如基站和/或互联网交换点(图中未示出)。通过该网络接入点,系统100的一个或多个节点可以连接至网络140以交换信息和/或数据。
图2是根据本说明书一些实施例所示的多方计算过程中的私有数据保护方法的示例性流程图。流程200可以由处理设备(例如,可信节点130)执行。该可信节点可以部署有可信执行环境。例如,流程200可以以程序或指令的形式存储在可信节点130中,所述程序或指令在可信执行环境中被执行时,可以实现流程200。如图2所示,流程200可以包括:
步骤202,获取一个以上计算节点的计算数据。步骤202可以由获取模块610执行。
在一些实施例中,参与多方计算的计算节点(例如,计算节点120)可以是计算机、智能手机或pad等不同的设备。例如,参与多方计算的一些计算节点可以是计算机,一些计算节点可以是智能手机,一些计算节点可以是pad或其他智能设备。在一些实施例中,所述计算数据可以是参与多方计算的各个计算节点使用各自的用户数据计算得到的数据。例如,对于金融行业的应用场景,风控与征信是金融业管理风险的重要手段,则所述计算数据可以是计算节点计算的金融信贷数据。再如,对于医疗业,医疗数据对于病人来说是非常重要的隐私数据,医疗数据的敏感性决定了其难以与其他用户进行信息数据交换或共享,则计算数据可以是计算节点计算的医疗数据。再例如,对于制造业的应用场景,制造业的数字化改造为各类制造企业带来了更精准、更先进的工艺,以及更优良的产品,则计算数据可以是制造业整体供给数据、生成数据、设备数据、设备维修数据等各类数据。
在一些实施例中,所述计算数据可以用于模型训练、数据分析、信息查询等。例如,以模型训练为例,所述计算数据可以是计算节点以用户数据基于多方计算的算法训练本地模型得到的模型梯度。再例如,以信息查询为例,所述计算数据可以是计算节点以用户数据基于多方计算的算法计算得到的征信报告。
在一些实施例中,获取模块610可以通过网络(例如,网络140)获取所述计算数据,所述计算数据是经过加密的。在获取所述计算数据后,可以通过第一处理模块620对加密的计算数据进行解密。所述计算数据的加密方式可以包括公开密钥加密技术、数字证书、对称加密、非对称加密等其中的一种或其组合。在一些实施例中,所述计算数据可以拷贝至加密存储器中后,由获取模块610与所述加密存储器通信获取。
在一些实施例中,在获取一个以上计算节点的计算数据之前,还可以执行身份验证步骤。所述身份验证可以是对执行流程200的处理设备(例如,可信节点130)进行身份验证。进行身份验证的目的是确保节点的行为可信任。作为示例,可以采用以下方式进行身份验证:可以获取计算节点的验证请求;可以基于所述可信执行环境生成与可信执行环境中运行程序相关的证明信息;可以将所述证明信息发送给所述计算节点。所述证明信息包括可信执行环境中运行的程序信息及其签名结果。所述计算节点可以通过所述证明信息进行验证。关于身份验证的更多说明,可以在本说明书的其他部分找到,例如,图3的相关说明中。
步骤204,将各计算节点的计算数据基于预设算法进行处理,获得处理结果。步骤204可以由第一处理模块620执行。
在一些实施例中,第一处理模块620可以对计算数据按照需求选择预设算法进行处理。所述预设算法可以包括加、减、乘、除等或更加复杂计算方法。例如,第一处理模块620可以将从计算数据进行求和,得到聚合结果。
在一些实施例中,若获取的计算数据经过加密,还可以先对所述计算数据进行解密,之后再按照预设算法对所述计算数据进行处理。例如,通过网络(例如,网络140)传输的计算数据可以是经过加密的,通过获取模块610与加密存储器通信获取的计算数据可能是未经过加密的。
在一些实施例中,在将各计算节点的计算数据基于预设算法进行处理,得到处理结果之前,还可以执行验证计算数据步骤,以确保所述计算数据仅能被预设算法处理一次。所述验证计算数据步骤可以由第一处理模块620执行,作为示例,可以采用以下方式验证计算数据:可以获取计算数据中的第一标识;可以在区块链上搜索所述第一标识及其使用状态信息;可以基于所述使用状态信息确定所述计算数据是否被使用过。通过验证计算数据中的第一数据标识,可以确保计算数据仅能被预设算法处理一次,从而避免重放攻击等潜在威胁。重放攻击,可以理解为攻击者不停的发送某个计算数据。例如,攻击者可能会伪造多个假数据,然后和一个真实的计算数据掺杂在一起,多次发送给可信执行环境进行处理,进而通过计算数据试探出用户数据。而第一标识可以确保每一个计算数据只会被处理一次,当假数据和真实计算数据掺杂在一起多次发送给可信执行环境时,第一标识的唯一性可以识别出后续多次发送的与假数据掺杂在一起的计算数据,从而避免重放攻击。关于第一标识的更多说明,可以在本说明书的其他部分找到,例如,图4的相关说明。
在一些实施例中,所述执行验证计算数据步骤还可以包括:可以获取计算数据中的第二标识,确定被预设算法处理的各计算数据的第二标识是否互异。互异标识各个计算数据的第二标识互不相同,即所述第二标识唯一。第二标识基于其唯一性可以用于防止攻击者对计算数据进行复制攻击。关于第二标识的更多说明,可以在本说明书的其他部分找到,例如,图4的相关说明。
在一些实施例中,当计算数据相关的第一标识指示计算数据未被使用且第二标识与其他计算计算数据相关的第二标识互异,则可确定计算数据验证通过,可以对其基于预设算法进行处理。在一些实施例中,在将各计算节点的计算数据基于预设算法进行处理,得到处理结果之后,还可以执行计算数据使用状态更改步骤,以确保所述计算数据仅能被预设算法处理一次。所述计算数据使用状态更改步骤可以由第一处理模块620执行,作为示例,可以采用以下方式更改计算数据使用状态:将已处理的计算数据的使用状态更改为已使用,并将其使用状态与其第一标识关联后写入区块链。将使用状态与第一标识关联写入区块链,可以利用区块链的不可篡改、不可丢失特性,有效地保证计算数据仅能被预设算法处理一次,进而有效地避免重放攻击等潜在威胁。关于计算数据的更多描述可以在本说明书的其他部分找到,例如,图4的相关说明。
步骤206,输出所述处理结果,以使中心节点能够基于所述处理结果进行多方计算中的后续计算工作。步骤206可以由第一发送模块630执行。
在一些实施例中,多方计算的中心节点(例如,中心节点110)可以是计算机、智能手机或pad等不同的设备,该中心节点可以基于接收到的处理结果进行后续计算工作。在一些实施例中,中心节点可以单独的设置于一个智能设备(例如,计算机、智能手机等),中心节点也可以与其他节点(例如,可信节点130)设置于同一个智能设备中。中心节点也可以在云端平台(例如,私有云、公有云、混合云等)实施。
在一些实施例中,所述后续计算工作可以是基于所述处理结果更新机器学习模型。例如,在模型训练时,所述处理结果可以是对计算节点计算得到的梯度值的聚合结果,所述后续计算工作可以是所述中心节点基于梯度值的聚合结果更新模型。在一些实施例中,所述后续计算工作可以是基于所述处理结果进行数据分析。例如,在信息查询时,所述处理结果可以是计算节点计算得到的信贷记录评分,所述后续计算工作可以基于所述处理结果生成所述信贷记录评分对应的用户或企业的征信报告。在一些实施例中,可以通过第一发送模块630将所述处理结果通过网络(例如,网络140)将所述处理结果发送给中心节点。
应当注意的是,上述有关流程200的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程200进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如步骤204和步骤206可以并行等。
图3是根据本说明书一些实施例所示的远程验证机制的示例性框图。在一些实施例中,可以在图3所示的示例框图结构中实现节点的身份验证。所述节点的身份验证可以包括以下步骤:
步骤302,获取计算节点的验证请求。
在一些实施例中,为了向参与多方计算的计算节点证明执行计算数据处理的节点(例如,可信节点130)是安全可信的,可以向计算节点证明预先约定的程序正在执行且被可信执行环境所保护。其证明方式可以为获取所述计算节点的验证请求。所述验证请求用于验证在可信执行环境中的程序是可信的。所述验证请求可以为获取模块610通过网络(例如,网络140)从计算节点(例如,计算节点120)获取。
在一些实施例中,可信节点可以将计算数据处理相关的程序信息事先公开在一个面对计算节点的平台上,则参与多方计算的计算节点都可以从所述平台上获取程序信息。所述程序信息可以用于对可信节点的身份信息进行验证。在一些实施例中,所述事先公开的程序信息可以是程序源代码,也可以是源代码编译后的结果,又或者是基于前述任一种或组合的映射值,所述映射算法可以具有难以倒推的性质,以起到一定保护数据完整性的作用,例如所述映射算法可以是hash运算。
步骤304,基于所述可信执行环境生成与可信执行环境中运行程序相关的证明信息。
在一些实施例中,在可信环境中运行程序可以是对所述计算数据进行处理的程序。所述程序可以与发送、接收、计算、存储信息和/或数据(例如,验证请求、计算数据)相关。在一些实施例中,所述证明信息可以包括可信执行环境中运行的程序信息及其签名结果。所述程序信息包括运行的程序的代码的编译结果和/或所述编译结果的哈希值,所述程序信息可以由可信执行环境的硬件生成。所述签名结果可以是基于可信执行环境的私钥生成。所述签名结果可以是由可信执行环境的私钥对所述程序信息(例如,编译结果的哈希值)进行签名的结果。在一些实施例中,所述证明信息在所述可信执行环境中生成。
仅作为示例,结合Intel公司推出的一种可信执行环境SGX(Software GuardExtensions)为例说明证明信息可以如何生成。为了向某一方节点(例如,计算节点)证明当前的某个程序(例如,可信执行环境中运行程序)正在被SGX中的Enclave保护,部署于可信节点上的SGX通过提供能够反映当前平台Enclave的可信性和签名的凭证(例如,证明信息),使得请求验证的节点可以通过验证凭证信任SGX的程序是可信的受到保护的,之后请求验证的节点可以向该程序提供秘密信息和需要保护的数据(例如,计算数据)。在一种证明方式中,可以引入一个特殊的Quoting Enclave。Quoting Enclave可以创建平台认证的签名密钥EPID(例如,可信执行环境的私钥),在Enclave系统运行时,只有Quoting Enclave才能访问到该密钥。假设计算节点(例如,计算节点120)需要对目的节点(例如,可信节点130)进行身份验证,目的节点可以向目的节点的硬件请求产生一个报告结构REPORT(例如,可信执行环境中运行的程序信息),Quoting Enclave首先会通过REPORT验证目的节点是否运行于同一平台,验证通过后,由Quoting Enclave将REPORT封装成一种QUOTE结构,该结构的主要组成包括REPORT和Enclave的更多信息,然后Quoting Enclave使用密钥EPID对QUOTE结构进行签名,得到证明信息(例如,可信执行环境中运行的程序信息及其签名结果),然后将证明信息发送给请求验证的节点(计算节点)进行验证。
步骤306,将所述证明信息发送给所述计算节点。
在一些实施例中,可以通过第一发送模块630将所述证明信息通过网络(例如,网络140)发送给所述计算节点,以使所述计算节点基于所述证明信息进行身份验证。在对所述证明信息进行验证之前,所述计算节点可以从预设的平台上获取需要验证的程序的代码(如,可信节点事先面相计算节点公开的用于处理计算数据的程序代码)。计算节点可以基于所述程序的代码得到编译结果和/或所述编译结果的哈希值。在进行验证时,计算节点可以将所述编译结果和/或所述编译结果的哈希值与所述证明信息进行比较,若所述编译结果和/或所述编译结果的哈希值与证明信息中经过签名的程序信息一致,则可以认为身份验证通过。关于计算节点验证证明信息的更多内容,可以参见文中其他地方的相关描述,例如图5的相关说明。
应当注意的是,上述有关流程300的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程300进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如步骤302和步骤304可以并行等。
图4是根据本说明书一些实施例所示的验证计算数据的示例性流程图。在一些实施例中,流程400可以由处理设备(例如,可信节点130)执行。如图4所示,流程400可以包括:
步骤402,获取计算数据中的第一标识。步骤402可以由获取模块610执行。
在一些实施例中,所述第一标识可以是一串数字、一段文字、一段语音等。所述第一标识用于对所述计算数据进行验证。所述第一标识唯一,可以通过所述第一标识来验证计算数据的唯一性。每一个计算数据对应一个第一标识。可以理解,各个计算节点每一轮计算得到的计算数据对应的第一标识均不相同。例如,参与多方计算的共有100个计算节点,在第一轮计算中,100个计算节点的计算数据中的第一标识可以分别为1-100,各个计算节点的计算数据所拥有的第一标识各不相同。在第二轮计算中,100个计算节点的计算数据的第一标识可以分别为101-200,不仅这一轮计算中各个计算节点的计算数据的第一标识各不相同,与前面计算轮次中计算数据的计算标识也均不相同。
在一些实施例中,所述第一标识可以由任何一个节点或程序生成。例如,第一标识可以由计算节点生成,也可以由中心节点、可信节点或其他以外设备生成后传输给计算节点,计算节点可以将计算数据与相应的第一标识绑定传输。第一标识用于与所述计算数据的计算状态相关联,从而利用第一标识的唯一性来确保所述计算数据仅能被计算一次。在一些实施例中,第一标识被生成后,可以将其使用状态(或称为对应计算数据的计算状态)初始化为未使用,之后将第一标识与其使用状态关联存储至区块链,以利用区块链上的数据不可被篡改来保证第一标识及其使用状态的完整性。
在一些实施例中,可信节点接收到来自各计算节点的计算数据的同时,可以获取一并传输过来的第一标识。
步骤404,在区块链上搜索所述第一标识及其使用状态信息。步骤404可以由第一处理模块620执行。
在一些实施例中,可以基于所述第一标识记录关联的计算数据的使用状态。所述使用状态信息可以包括已使用或未使用。在一些实施例中,可以在区块链上直接搜索所述第一标识,然后基于所述第一标识确定其使用状态信息。例如,第一标识为001,则可以先查找到001,再确定其对应的使用状态信息。在一些实施例中,对应于同一个第一标识的使用状态可以有多个,则可以获取区块链上该第一标识的全部使用状态。
步骤406,基于所述使用状态信息确定所述计算数据是否被使用过。步骤404可以由第一处理模块620执行。
在一些实施例中,所述使用状态信息与所述计算数据是否被使用相关联。使用状态信息为已使用,可以对应所述计算数据被使用过;使用状态为未使用,可以对应所述计算数据未被使用过。在一些实施例中,使用所述计算数据可以是对所述计算数据的任意操作,包括但不限于数据计算、排序、筛选(如被选中或被丢弃)、加密、解密等。在一些实施例中,使用所述计算数据可以包括利用所述计算数据进行数据融合计算、利用所述计算数据进行模型训练、传输所述计算数据中的一种或其任意组合。在一些实施例中,在区块链中对应于同一个第一标识的使用状态可以有多种,则以其最新的状态为准。例如,在区块链上搜索到第一标识001,其在2019年5月13日15:02时刻的使用状态为未使用,其在2019年6月2日17:00时刻的使用状态为已使用,则可确定该第一标识对应的计算数据已经被使用。
在一些实施例中,在将各计算节点的计算数据基于预设算法进行处理,得到处理结果之前,还可以验证计算数据中的第二标识是否互异。第二标识可以是一串数字、一段文字、一段语音等。在一些实施例中,第二标识可以是由计算节点(例如,计算节点120)生成的随机数,计算节点可以将第二标识跟随计算数据一并发送。第二标识可以用于防止攻击者对计算数据进行复制。例如,攻击者在获取到一个计算数据a1后,一般来说,计算节点在发送计算数据时会将计算数据加密,攻击者可能难以对拦截的计算数据a1解密从而直接获得计算数据明文。此时,攻击者可能会将该计算数据a1复制N(例如,10000)份发送给可信节点,可信节点如果不进行基于标识信息的计算数据验证,则会按照预设的算法处理计算数据得到处理结果,攻击者再次拦截得到最终的处理结果后,将最终的计算结果进行逆运算(如可信节点的处理算法为相加,攻击者可使用求平均获得计算数据),得到的结果可能会很接近计算数据a1,进而使得攻击者可能猜测出计算数据a1的真实值。若在计算数据中添加了第二标识,可信节点则可以验证出计算数据中的重复数据,避免攻击者复制计算数据。
若计算数据被未被使用过,则可执行步骤408,否则,执行步骤410。
步骤408,将计算数据基于预设算法进行处理,获得处理结果。步骤404可以由第一处理模块620执行。
在一些实施例中,将所述计算数据基于预设算法进行处理,包括但不限于基于预设算法对所述计算数据进行融合、计算、排序、丢弃等。例如,可以基于预设算法对所述计算数据进行求和,得到聚合结果。将对所述计算数据进行求和得到聚合结果的过程放在可信节点上进行,只有可信节点将聚合结合发送给中心节点,可以避免在基于计算数据进行多方计算中的后续工作时直接得到计算节点发送的计算数据,增加基于计算数据倒推用户数据的难度,保证用户数据的隐私安全。再例如,可以随机丢弃若干份的计算数据,再对剩余的计算数据进行处理,以获得所述处理结果。随机丢弃若干份的计算数据,可以用于防止攻击者仿冒计算节点的计算数据进行攻击。例如,攻击者可能会仿造K个假数据,并且这K个假数据的值都是一样的,如K个假数据的值都是1,将这K个假数据求和得到和值K。然后将和值K和一个拦截的真实计算数据一起求和后发送给可信执行环境,进而在可信执行环境对接收到的计算数据进行处理后,通过处理结果减去值K来试图推出用户真实的计算数据。若攻击者在接收到计算数据后,随机丢弃若干份的计算数据,攻击者就难以通过最终的处理结果减去K值来推出用户的真实计算数据。
在一些实施例中,在将所述计算数据基于预设算法进行处理,获得处理结果之前,还可以验证接收到的计算数据是否大于设定份数。在一些实施例中,为了确保计算数据的使用效果,可以根据需求设定接收到的计算数据大于一定份数后再对计算数据进行处理。例如,在使用所述计算数据进行模型训练时,往往模型训练都需要足够多的训练样本,因此,为了保证模型训练的效果,可以设定在接收到的计算数据大于设定份数时再将所述计算数据基于预设算法进行处理。仅作为示例,所述设定份数可以是10000。可以理解,计算数据足够多时,任意丢弃若干份进行计算(如丢弃的份数远小于总数),既可以保护数据安全,又不会影响最终的模型训练结果。关于将计算数据基于预设算法进行处理,获得处理结果的更多描述可以在本说明书的其他部分找到,例如,图2的相关说明。
步骤410,丢弃所述第一标识对应的计算数据。
在一些实施例中,当确定出所述第一标识对应的计算数据已经使用过,则可以不对改计算数据做任何处理,直接丢弃。
应当注意的是,上述有关流程400的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程400进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如步骤408和步骤410顺序可以更换,步骤408和步骤410可以并行等。
图5是根据本说明书一些实施例所示的私有数据保护方法的示例性流程图。流程500可以由处理设备(例如,计算节点120)执行。流程500可以以程序或指令的形式存储在计算节点120中,所述程序或指令在计算节点120被执行时,可以实现流程500。如图5所示,流程500可以包括:
步骤502,执行与多方计算相关的计算程序以获得计算数据。步骤502可以由第二处理模块710执行。
在一些实施例中,相关的计算程序可以是一组指示计算机执行与多方计算任务相关的指令。例如,相关的计算程序可以与分布式机器学习模型训练相关的指令。在执行所述多方计算时,可以由第二处理模块710对计算节点本地的用户数据进行计算。计算节点可以是计算机、智能手机或pad等不同的设备。用户数据可以是金融信贷数据、医疗数据、制造设备数据等。执行多方计算可以是对用户数据进行各种类型的计算。例如,加、减、乘、除等运算,计算数据可以是加、减、乘、除等运算的计算结果。执行多方计算也可以是对用户数据执行模型训练计算,计算数据可以是将用户数据输入到模型中,计算得到的模型数据(例如,模型的梯度)。关于计算数据的更多描述可以在本说明书的其他部分找到,例如,图2的相关说明。
步骤504,将所述计算数据加密后发送给可信执行环境以进行处理。步骤504可以由第二发送模块720执行。
在一些实施例中,可以采用多种方式对所述计算数据进行加密。加密方式可以包括公开密钥加密技术、数字证书、对称加密、非对称加密等其中的一种或其组合。加密后,第二发送模块720可以通过网络(例如,网络140)将计算数据发送给可信执行环境(例如,可信节点130)以进行处理。对所述计算数据进行处理可以包括对所述计算数据进行解密、验证、计算、排序、丢弃等处理。
在一些实施例中,在将计算数据发送给可信执行环境前,还可以执行身份验证步骤。所述身份验证步骤可以包括:可以请求可信执行环境发送证明信息,所述证明信息用于验证所述可信执行环境中的程序的可信性。可以接收可信执行环境发送的证明信息,所述证明信息包括可信执行环境中运行程序的程序信息及其签名结果。在一些实施例中,可以将证明信息中的签名结果发送给第三方验签,所述第三方是可信任的。例如,当所述可信执行环境为SGX时,所述第三方为Intel服务方;当所述可信执行环境为TrustZone时,所述第三方为Arm服务方。可以理解,所述可信执行环境可以由所述第三方生产制造,第三方可以拥有可信执行环境私钥对应的公钥。将签名结果发送给第三方,若第三方验签成功则可确定该证明信息是由其可信执行环境生成。在一些实施例中,第三方可以将验签得到的程序信息发送给请求验证的计算节点,计算节点可以比较证明信息中的程序信息是否与预先获取的程序信息一致。例如,可以比较程序信息的编译结果和/或编译结果的哈希值与预先获取的程序信息的编译结果和/或哈希值是否一致。若证明信息通过验证签名确定其为可信,并且程序信息比较一致,则可以确定身份信息验证成功。计算节点则可将其计算数据发送给可信节点。
在一些实施例中,将所述计算数据加密后发送给可信执行环境以进行处理可以包括:将第一标识与所述计算数据加密后发送给可信执行环境。所述第一标识可以由计算节点或可信执行环境(例如,可信节点130中部署的可信执行环境)或其他设备(例如,中心节点110)生成。所述第一标识唯一,用于确保所述计算数据只会被使用过一次。第一标识可以与计算数据关联,以通过第一标识记录计算数据的使用状态。可以将第一标识与所述计算数据的使用状态写入区块链中,从而基于区块链的不可篡改、不可丢弃特性确保所述计算数据仅会被使用一次。在一些实施例中,可以将所述第一标识与计算数据的使用状态写入可信执行环境中。
在一些实施例中,所述将计算数据加密后发送给可信执行环境以进行处理,包括:将第二标识与所述计算数据加密后发送给可信执行环境。所述第二标识为随机生成,并且所述第二标识唯一。
在一些实施例中,将所述第一标识和/或第二标识与所述计算数据加密,可以是分别对所述第一标识、第二标识和所述计算数据加密,也可以是将所述第一标识和/或第二标识与所述计算数据聚合后进行加密。所述聚合可以是包括拼接、串联、组合等可进行恢复原来状态的聚合方式,以使可信节点在验证计算数据后,可以将计算数据与第一标识和/或第二标识分离。关于身份验证和计算数据的更多描述,可以在本说明书的其他部分找到,例如,图2至图4的相关说明。
应当注意的是,上述有关流程500的描述仅仅是为了示例和说明,而不限定本申请的适用范围。对于本领域技术人员来说,在本申请的指导下可以对流程500进行各种修正和改变。然而,这些修正和改变仍在本申请的范围之内。例如,对本说明书有关流程步骤的改变,如步骤502和步骤504顺序可以更换,步骤502和步骤504可以并行等。
图6是根据本说明书一些实施例所示的多方计算过程中的私有数据保护系统的模块图。所述系统可以获取计算数据以及对计算数据进行处理,并将处理得到的处理结果发送给中心节点进行后续计算工作。如图6所示,所述系统可以包括获取模块610、第一处理模块620以及第一发送模块630。
获取模块610可以获取计算数据。
在一些实施例中,获取模块610可以获取一个以上计算节点的计算数据。所述计算数据可以是各计算节点计算出来的不对外公开的数据,且经过加密。加密方式可以包括公开密钥加密技术、数字证书、对称加密、非对称加密等其中的一种或其组合。在一些实施例中,获取模块610可以通过网络从参与多方计算的计算节点处获取计算数据。
第一处理模块620可以将各计算节点的计算数据基于预设算法进行处理,获得处理结果。
在一些实施例中,第一处理模块620对各计算节点的计算数据按照需求,基于预设算法进行处理,以获得处理结果。例如,第一处理模块620可以按照预设的加密算法对各计算数据进行解密,得到处理结果。也可以按照预设的聚合算法对各计算数据进行求和,得到聚合结果。在一些实施例中,第一处理模块620可以先对计算数据进行验证,再将所述计算数据基于预设算法进行处理。对所述计算数据进行验证,可以确定所述计算数据是否被使用过,以及所述计算数据是否重复。在一些实施例中,第一处理模块620在对计算数据进行处理,得到处理结果之后,还可以更改与所述计算数据关联的第一标识在区块链上对应的使用状态。所述使用状态包括已使用和/或未使用。
第一发送模块630可以输出处理结果。
在一些实施例中,第一发送模块630可以将处理结果输出,以便中心节点进行后续处理。在一些实施例中,第一发送模块630还可以向参与多方计算的各计算节点发送证明信息。所述证明信息包括可信执行环境中运行的程序信息及其签名结果;所述签名结果基于可信执行环境的私钥生成。所述程序信息包括运行在可信执行环境中的程序的编译结果和/或所述编译结果的哈希值。
关于多方计算过程中的私有数据保护系统的各模块的具体描述,可以参考本申请流程图部分,例如,图2至图4的相关说明。
图7是根据本说明书一些实施例所示的私有数据保护系统的模块图。所述系统可以执行多方计算以获得计算数据,并将计算数据加密后发送给可信执行环境以进行处理。如图7所示,所述系统可以包括第二处理模块710和第二发送模块720。
第二处理模块710可以执行与多方计算相关的计算程序以获得计算数据。
在一些实施例中,第二处理模块710可以基于预设的多方计算算法对其所拥有的用户数据进行计算,得到计算数据。例如,第二处理模块710可以将其所拥有的用户数据输入到模型中,并基于模型中的算法计算得到模型数据,例如,模型的梯度值。在一些实施例中,第二处理模块710可以对获得的计算数据进行加密,加密方式可以包括公开密钥加密技术、数字证书、对称加密、非对称加密等其中的一种或其组合。在一些实施例中,第二处理模块710可以生成第一标识和/或第二标识,并将第一标识和/或第二标识与所述计算数据进行聚合,并加密。
第二发送模块720将计算数据发送给可信执行环境。
在一些实施例中,第二发送模块720可以将计算数据通过网络发送给可信执行环境。在一些实施例中,第二发送模块720可以将加密后的计算数据和第一标识发送给可信执行环境。在一些实施例中,第二发送模块720可以将加密后的计算数据和第二标识发送给可信执行环境。在一些实施例中,第二发送模块720可以将加密后的计算数据、第一标识和第二标识发送给可信执行环境。
关于私有数据保护系统的各模块的具体描述,可以参考本申请流程图部分,例如,图2至图5的相关说明。
应当理解,图6和/或图7所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于多方计算过程中的私有数据保护系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,例如,图6中披露的获取模块610、第一处理模块620和第一发送模块630可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,获取模块610、第一处理模块620可以是两个模块,也可以是一个模块同时具有获取和处理功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)通过在多方计算系统中建立可信节点来对计算节点计算得到的计算数据进行处理得到处理结果,然后再发送处理结果给中心节点进行后续计算,避免了将计算数据直接发送至中心节点,在中心节点无法得知具体的计算数据的情况下,有效地增加了通过处理结果倒推用户数据的难度,保证多方计算过程中的用户数据隐私安全。(2)对可信节点进行身份验证,确保在可信节点处执行的计算数据处理程序为实现约定好的程序,且执行过程不被篡改,进一步的保证在可信节点处不会泄露计算数据,保证在多方计算过程中的用户数据隐私安全。(3)在可信节点处对计算数据进行验证,防止攻击者通过伪造、复制计算数据等方式来获取真实计算数据,进一步保证多方计算过程中的数据隐私安全。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (22)
1.一种多方计算过程中的私有数据保护方法,所述方法由一个或多个处理器在可信执行环境中执行,所述方法包括:
获取一个以上计算节点的计算数据;
验证计算数据,以确保计算数据仅能被预设算法处理一次和/或计算数据的唯一性;
将各计算节点的计算数据基于预设算法进行处理,获得处理结果;
输出所述处理结果,以使中心节点能够基于所述处理结果进行多方计算中的后续计算工作;
其中,
验证计算数据,以确保计算数据仅能被预设算法处理一次,包括:
获取计算数据中的第一标识;
在区块链上搜索所述第一标识及其使用状态信息;
基于所述使用状态信息确定所述计算数据是否被使用过;
验证计算数据,以确保计算数据的唯一性,包括:
获取计算数据中的第二标识;
确定被预设算法处理的各计算数据的第二标识是否互异。
2.根据权利要求1所述的方法,在获取计算节点的计算数据前,还包括进行身份验证的步骤,其包括:
获取计算节点的验证请求;
基于所述可信执行环境生成与可信执行环境中运行程序相关的证明信息;
将所述证明信息发送给所述计算节点。
3.根据权利要求2所述的方法,所述证明信息包括可信执行环境中运行的程序信息及其签名结果;所述签名结果基于可信执行环境的私钥生成。
4.根据权利要求1所述的方法,所述获取一个以上计算节点的计算数据,包括:
通过网络获取经过加密的计算数据;
对加密的计算数据进行解密。
5.根据权利要求1所述的方法,在将各计算节点的计算数据基于预设算法进行处理,获得处理结果前,还包括验证接收到的计算数据是否大于设定份数。
6.根据权利要求1或5所述的方法,所述将各计算节点的计算数据基于预设算法进行处理,获得处理结果,包括:
随机丢弃若干份数的计算数据;
基于预设算法对剩余计算数据进行处理,以获得所述处理结果。
7.根据权利要求1所述的方法,在将各计算节点的计算数据基于预设算法进行处理,获得处理结果后,还包括将已处理的计算数据的使用状态更改为已使用,并将其使用状态与其第一标识关联后写入区块链。
8.一种多方计算过程中的私有数据保护系统,所述系统位于可信执行环境中,所述系统包括获取模块、第一处理模块以及第一发送模块;
所述获取模块,用于获取一个以上计算节点的计算数据;
所述第一处理模块,用于验证计算数据,以确保计算数据仅能被预设算法处理一次和/或计算数据的唯一性;以及用于将各计算节点的计算数据基于预设算法进行处理,获得处理结果;其中,
为了验证计算数据,以确保计算数据仅能被预设算法处理一次,所述第一处理模块用于:获取计算数据中的第一标识;在区块链上搜索所述第一标识及其使用状态信息;基于所述使用状态信息确定所述计算数据是否被使用过;
为了验证计算数据,以确保计算数据的唯一性,所述第一处理模块用于:获取计算数据中的第二标识;确定被预设算法处理的各计算数据的第二标识是否互异;
所述第一发送模块,用于输出所述处理结果,以使中心节点能够基于所述处理结果进行多方计算中的后续计算工作。
9.根据权利要求8所述的系统,为在获取计算节点的计算数据前,进行身份验证,其中:
所述获取模块,进一步用于获取计算节点的验证请求;
所述第一处理模块,进一步用于基于所述可信执行环境生成与可信执行环境中运行程序相关的证明信息;
所述第一发送模块,进一步用于将所述证明信息发送给所述计算节点。
10.根据权利要求9所述的系统,所述证明信息包括可信执行环境中运行的程序信息及其签名结果;所述签名结果基于可信执行环境的私钥生成。
11.根据权利要求8所述的系统,为获取一个以上计算节点的计算数据,所述获取模块进一步用于:
通过网络获取经过加密的计算数据;
对加密的计算数据进行解密。
12.根据权利要求8所述的系统,在将各计算节点的计算数据基于预设算法进行处理,获得处理结果前,所述第一处理模块进一步用于验证接收到的计算数据是否大于设定份数。
13.根据权利要求8或12所述的系统,为将各计算节点的计算数据基于预设算法进行处理,获得处理结果,所述第一处理模块进一步用于:
随机丢弃若干份数的计算数据;
基于预设算法对剩余计算数据进行处理,以获得所述处理结果。
14.根据权利要求8所述的系统,在将各计算节点的计算数据基于预设算法进行处理,获得处理结果后,所述第一处理模块进一步用于将已处理的计算数据的使用状态更改为已使用,并将其使用状态与其第一标识关联后写入区块链。
15.一种多方计算过程中的私有数据保护装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1~7任一项所述的方法。
16.一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行如权利要求1~7任一项所述的方法。
17.一种私有数据保护方法,所述方法由某计算节点中的一个或多个处理器执行,所述方法包括:
执行与多方计算相关的计算程序以获得计算数据;
将第一标识和第二标识中的至少一个与所述计算数据加密后发送给可信执行环境以进行处理;
其中,所述第一标识由计算节点或可信执行环境或其他设备生成,并连同所述计算数据的使用状态写入区块链,以便用于所述可信执行环境能够在区块链上搜索所述第一标识及其使用状态信息,并基于所述使用状态信息确定所述计算数据是否被使用过,进而确保计算数据仅能被预设算法处理一次;
所述第二标识为随机生成,以便用于所述可信执行环境能够确定被预设算法处理的各计算数据的第二标识是否互异,进而确保计算数据的唯一性。
18.根据权利要求17所述的方法,在将计算数据发送给可信执行环境前,还包括身份验证的步骤,其包括:
请求可信执行环境发送证明信息;
接收可信执行环境发送的证明信息;
将证明信息中的签名结果发送给第三方验签;
比较证明信息中的程序信息与预先获取的程序信息是否一致;
若第三方验签成功且比较结果为一致,则确定身份验证成功。
19.一种私有数据保护系统,所述系统包括第二处理模块和第二发送模块:
所述第二处理模块,用于执行与多方计算相关的计算程序以获得计算数据;
所述第二发送模块,用于将第一标识和第二标识中的至少一个与所述计算数据加密后发送给可信执行环境以进行处理;
其中,所述第一标识由计算节点或可信执行环境或其他设备生成,并连同所述计算数据的使用状态写入区块链,以便所述可信执行环境能够在区块链上搜索所述第一标识及其使用状态信息,并基于所述使用状态信息确定所述计算数据是否被使用过,进而确保计算数据仅能被预设算法处理一次;
所述第二标识为随机生成,以便所述可信执行环境能够确定被预设算法处理的各计算数据的第二标识是否互异,进而确保计算数据的唯一性。
20.根据权利要求19所述的系统,在将计算数据发送给可信执行环境前,所述第二处理模块进一步用于身份验证,其包括:
请求可信执行环境发送证明信息;
接收可信执行环境发送的证明信息;
将证明信息中的签名结果发送给第三方验签;
比较证明信息中的程序信息与预先获取的程序信息是否一致;
若第三方验签成功且比较结果为一致,则确定身份验证成功。
21.一种多方计算过程中的私有数据保护装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求17~18任一项所述的方法。
22.一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行如权利要求17~18任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911297040.6A CN111027086B (zh) | 2019-12-16 | 2019-12-16 | 一种私有数据保护方法和系统 |
PCT/CN2020/123996 WO2021120862A1 (zh) | 2019-12-16 | 2020-10-27 | 一种私有数据保护方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911297040.6A CN111027086B (zh) | 2019-12-16 | 2019-12-16 | 一种私有数据保护方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111027086A CN111027086A (zh) | 2020-04-17 |
CN111027086B true CN111027086B (zh) | 2021-04-20 |
Family
ID=70209196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911297040.6A Active CN111027086B (zh) | 2019-12-16 | 2019-12-16 | 一种私有数据保护方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111027086B (zh) |
WO (1) | WO2021120862A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111027086B (zh) * | 2019-12-16 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 一种私有数据保护方法和系统 |
CN111614679B (zh) * | 2020-05-22 | 2021-07-27 | 深圳前海微众银行股份有限公司 | 联邦学习资格恢复方法、设备及可读存储介质 |
CN113239367B (zh) * | 2020-07-07 | 2024-05-31 | 上海超算科技有限公司 | 一种核电网络化协同计算环境下的标识数据加密存取方法 |
CN111859360B (zh) * | 2020-07-10 | 2024-08-23 | 深圳市洞见智慧科技有限公司 | 一种安全的多设备联合数据计算系统、方法及装置 |
CN112395642B (zh) * | 2020-11-20 | 2024-02-13 | 湖南智慧政务区块链科技有限公司 | 一种安全多方隐私计算方法、装置、设备及存储介质 |
CN112287377A (zh) * | 2020-11-25 | 2021-01-29 | 南京星环智能科技有限公司 | 基于联邦学习的模型训练方法、计算机设备及存储介质 |
CN113112026B (zh) * | 2021-04-02 | 2024-05-28 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 一种联邦学习模型优化方法及装置 |
CN112801307B (zh) * | 2021-04-13 | 2021-07-06 | 深圳索信达数据技术有限公司 | 基于区块链的联邦学习方法、装置和计算机设备 |
CN113033828B (zh) * | 2021-04-29 | 2022-03-22 | 江苏超流信息技术有限公司 | 模型训练方法、使用方法、系统、可信节点及设备 |
CN113157399B (zh) * | 2021-05-17 | 2022-11-11 | 北京冲量在线科技有限公司 | 基于arm架构芯片的非监督联合建模方法 |
CN113569211A (zh) * | 2021-07-22 | 2021-10-29 | 杭州煋辰数智科技有限公司 | 基于可信执行环境的跨域安全多方计算的方法及装置 |
CN113873004B (zh) * | 2021-08-16 | 2024-03-26 | 中国人民银行数字货币研究所 | 一种任务执行方法和装置以及分布式计算系统 |
CN113836587B (zh) * | 2021-11-29 | 2022-02-22 | 南京可信区块链与算法经济研究院有限公司 | 一种保护数据隐私的金融机构联合风控方法及系统 |
CN114679453B (zh) * | 2022-03-10 | 2023-10-27 | 蚂蚁区块链科技(上海)有限公司 | 多方协同计算中检测恶意攻击的方法、装置、介质和计算设备 |
CN114760105B (zh) * | 2022-03-22 | 2023-06-06 | 杭州锘崴信息科技有限公司 | 一种安全防护系统以及安全防护方法 |
CN115001858B (zh) * | 2022-07-19 | 2022-11-01 | 北京融数联智科技有限公司 | 基于分布式计算的数据安全隔离方法、系统、介质和设备 |
CN114996694B (zh) * | 2022-08-01 | 2023-01-24 | 阿里云计算有限公司 | 一种数据融合方法、设备、系统及存储介质 |
CN115422596B (zh) * | 2022-11-02 | 2023-01-13 | 北京锘崴信息科技有限公司 | 采用隐私保护算法确定数据、金融和医疗数据有效性方法 |
CN115580413B (zh) * | 2022-12-07 | 2023-03-17 | 南湖实验室 | 一种零信任的多方数据融合计算方法和装置 |
CN116776970B (zh) * | 2023-06-26 | 2024-04-19 | 北京熠智科技有限公司 | 一种联邦学习参数传输方法、聚合服务器及联邦学习系统 |
CN117972726A (zh) * | 2024-02-27 | 2024-05-03 | 广东辰宜信息科技有限公司 | 一种通用高性能可信计算系统、方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018202742A1 (en) * | 2017-05-04 | 2018-11-08 | Koninklijke Philips N.V. | Batch-wise distributed preprocessing information verification |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9876823B2 (en) * | 2015-06-09 | 2018-01-23 | Intel Corporation | System, apparatus and method for privacy preserving distributed attestation for devices |
US10701039B2 (en) * | 2015-09-25 | 2020-06-30 | Intel Corporation | Mutual approval for privacy-preserving computing |
US10592639B2 (en) * | 2016-09-06 | 2020-03-17 | Intel Corporation | Blockchain-based shadow images to facilitate copyright protection of digital content |
DE102017203723A1 (de) * | 2017-03-07 | 2018-09-13 | Robert Bosch Gmbh | Datenverarbeitungsverfahren und Datenverarbeitungsanlage |
US11201734B2 (en) * | 2018-06-04 | 2021-12-14 | Robert Bosch Gmbh | Method and system for fault tolerant and secure multiparty computation with SPDZ |
CN109034924B (zh) * | 2018-08-16 | 2023-04-07 | 深圳市智税链科技有限公司 | 电子票据生成方法、装置、存储介质和计算机设备 |
CN109492438B (zh) * | 2018-10-24 | 2022-09-02 | 梅艳 | 基于TrustZone的分布式计算系统 |
CN109684414B (zh) * | 2018-12-26 | 2022-04-08 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN110266659B (zh) * | 2019-05-31 | 2020-09-25 | 联想(北京)有限公司 | 一种数据处理方法和设备 |
CN110138802B (zh) * | 2019-06-02 | 2021-09-24 | 四川虹微技术有限公司 | 用户特征信息获取方法、装置,区块链节点、网络,及存储介质 |
CN110519260B (zh) * | 2019-08-23 | 2020-09-25 | 联想(北京)有限公司 | 一种信息处理方法及信息处理装置 |
CN111027086B (zh) * | 2019-12-16 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 一种私有数据保护方法和系统 |
-
2019
- 2019-12-16 CN CN201911297040.6A patent/CN111027086B/zh active Active
-
2020
- 2020-10-27 WO PCT/CN2020/123996 patent/WO2021120862A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018202742A1 (en) * | 2017-05-04 | 2018-11-08 | Koninklijke Philips N.V. | Batch-wise distributed preprocessing information verification |
Also Published As
Publication number | Publication date |
---|---|
WO2021120862A1 (zh) | 2021-06-24 |
CN111027086A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111027086B (zh) | 一种私有数据保护方法和系统 | |
US11558381B2 (en) | Out-of-band authentication based on secure channel to trusted execution environment on client device | |
CN107231351B (zh) | 电子证件的管理方法及相关设备 | |
CN111049825B (zh) | 一种基于可信执行环境的安全多方计算方法和系统 | |
CN111090865B (zh) | 一种密钥授权方法和系统 | |
US20220114249A1 (en) | Systems and methods for secure and fast machine learning inference in a trusted execution environment | |
CN111563261A (zh) | 一种基于可信执行环境的隐私保护多方计算方法和系统 | |
US10771467B1 (en) | External accessibility for computing devices | |
EP3694243A1 (en) | Method and device for network connection authentication | |
US20180324158A1 (en) | Assuring external accessibility for devices on a network | |
CN103179129B (zh) | 一种基于云计算IaaS环境的远程证明方法 | |
CN111431719A (zh) | 一种移动终端密码保护模块、移动终端及密码保护方法 | |
WO2015003503A1 (zh) | 一种提高信息安全性的方法、终端设备及网络设备 | |
CN110890962A (zh) | 认证密钥协商方法、装置、存储介质及设备 | |
WO2021190197A1 (zh) | 生物支付设备的认证方法、装置、计算机设备和存储介质 | |
CN110401640B (zh) | 一种基于可信计算双体系架构的可信连接方法 | |
Guirat et al. | Formal verification of the W3C web authentication protocol | |
KR20200104084A (ko) | Puf 기반 사물인터넷 디바이스 인증 장치 및 방법 | |
Saleem et al. | ProofChain: An X. 509-compatible blockchain-based PKI framework with decentralized trust | |
CN113328860A (zh) | 一种基于区块链的用户隐私数据安全提供方法 | |
KR101751316B1 (ko) | 연산 리소스 실행의 안전 보호 | |
Wang et al. | A User‐Centered Medical Data Sharing Scheme for Privacy‐Preserving Machine Learning | |
CN115329359A (zh) | 一种秘密查询方法和系统 | |
CN115935379A (zh) | 业务处理方法、装置、设备及计算机可读存储介质 | |
US20220035924A1 (en) | Service trust status |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40027996 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |