一种数据安全处理方法和装置与流程

文档序号:33262101发布日期:2023-02-21 18:46阅读:25来源:国知局
一种数据安全处理方法和装置与流程
一种数据安全处理方法和装置
1.本技术要求于2021年08月20日提交国家知识产权局、申请号为202110959582.6、申请名称为“可信计算的方法、设备和系统”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术实施例涉及信息技术(information technology,it)技术领域,尤其涉及一种数据安全处理方法和装置。


背景技术:

3.可信计算作为安全计算的一种算法,可以保护用户的数据不被其他实体访问。当一个用户向可信计算节点发送私密数据时,tee可以通过与该用户对应的可信应用程序(trusted application,ta)对私密数据执行机密计算。
4.由此,可信计算可以实现安全的算力外包,即一个没有本地算力的用户将用户的隐私数据投入到算力提供商,例如云端的可信计算节点中,由可信计算节点为用户生成的ta进行计算,以保护用户的数据隐私。当有多个用户向算力提供商发送用户自身的隐私数据,且每个用户对应的计算任务各不相同时,可信计算节点需要给每个用户分别生成用户对应的ta,用于分别计算每个用户的隐私数据,以实现多用户间的数据隔离。但是,当同一计算任务由多个用户的隐私数据进行计算时,可信计算节点执行计算任务就会遇到困难。由于可信计算节点只能实现不同ta间的数据隔离,当可信计算节点确定同一计算任务涉及到多用户的数据时,如果可信计算节点通过同一ta计算多用户的数据,不能实现多数据间的数据隔离,可信计算的可信度降低。


技术实现要素:

5.本技术实施例提供一种数据安全处理方法和装置,能够保证可信计算节点中,同一计算任务涉及到多用户数据计算时的数据安全,提升计算效率。
6.为达到上述目的,本技术实施例采用如下技术方案。
7.第一方面,提供一种数据安全处理方法,包括:可信计算节点确定针对m个用户设备的同一计算任务的n个可信应用程序ta,m为大于或等于1的整数,n为大于1的整数;可信计算节点接收m个用户设备中的每个用户设备发送的数据,每个用户设备发送的数据用于执行同一计算任务;可信计算节点确定参与n个ta中的每个ta的数据片段集合,每个ta的数据片段集合包括每个用户设备发送的数据中的1个数据片段;可信计算节点控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。其中,可信计算节点中包括tee,该方法可以认为是在tee中执行的。
8.如此一来,对于本技术中的每个ta而言,m个用户设备的数据并未在一个ta中计算,每个ta都只得到了每个用户设备的数据中的1个数据片段,并未得到任一个用户设备的完整数据,可以很好的达到多用户间的数据隔离的目的,不易造成数据泄漏。而且,所有用
户设备的数据都在一个有tee的可信计算节点中计算,并未涉及到第三方节点辅助计算,计算效率较高。
9.此外,本技术相对于安全多方计算的方案来说,本技术将安全多方计算中原来在多个计算节点间跨网络的通信交互转移到同一可信计算节点的ta间执行,不需要多个计算节点间的通信,可加快计算速度。而且,本技术不需要依赖安全多方计算具体的应用任务的协议,通用性较强。
10.在一种可能的设计中,每个用户设备发送的数据包括n个数据片段,每个ta的数据片段集合包括每个用户设备发送的n个数据片段中的1个数据片段。也就是说,当可信计算节点为该计算任务配置了n个ta时,用户设备可以将要发送的数据拆分为n份发送给可信计算节点。这样,每个ta可以拿到该用户设备的1个数据片段,对于每个ta而言,不知道用户设备的完整数据,可以保护用户设备的数据安全。
11.在一种可能的设计中,n个ta的计算逻辑相同。即,如果可信计算节点确定要执行计算任务时,可以将该计算任务复制为n个计算任务,每个计算任务相当于一个ta。这样,可以快速得到多个ta,实现方式较为简单。当然,n个ta也可以不完全相同。
12.在一种可能的设计中,可信计算节点控制每个ta根据每个ta的数据片段集合进行计算包括:可信计算节点控制每个ta对每个ta的数据片段集合进行计算,并控制每个ta将每个ta的中间计算结果输出给可信算子继续进行计算;可信计算节点控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果。这里的可信算子相当于一个辅助计算工具,可以协助多个ta完成计算任务。可信算子可以是软件实现的,也可以是硬件实现的。可信算子可以理解为是基本通用算子,这些基本通用算子可以看作提供辅助计算优化多ta的协同计算,这样可以避免对辅助计算方的任何信任。例如硬件实现可信算子时,可以使用专用芯片实现该可信算子的功能。
13.在一种可能的设计中,控制每个ta将每个ta的中间计算结果输出给可信算子继续进行计算包括:可信计算节点控制每个ta对每个ta的计算结果进行加密,得到每个ta的中间计算结果,控制每个ta向可信算子输出每个ta的中间计算结果,并控制可信算子对每个ta的中间计算结果进行解密,以控制可信算子根据解密后的计算结果继续进行计算;可信计算节点控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果包括:可信计算节点控制可信算子对可信算子的计算结果加密,得到可信算子的中间计算结果,将可信算子的中间计算结果输出给每个ta,并控制每个ta对可信算子的中间计算结果进行解密,以控制每个ta根据解密后的计算结果继续进行计算,得到每个ta的计算结果。
14.也就是说,可信算子在与n个ta进行通信时,可信算子和ta的输入和输出需要加密。这种加密方式可以采用简单的传输加密,即可信算子和ta需解密后计算。而计算是明文的,效率很高,传输也不限制密码算法。例如本技术可采用高效的对称加密算法如aes也不会影响方案的高效性。
15.在一种可能的设计中,每个用户设备用于对n个ta进行算法完整性验证。即当可信计算节点确定了n个ta时,用户设备需要对这n个ta进行远程证明,以确定n个ta的可靠性,保证数据的安全。
16.在一种可能的设计中,在可信计算节点接收m个用户设备中的每个用户设备发送
的数据之前,方法还包括:可信计算节点接收m个用户设备分别发送的远程证明请求,远程证明请求用于请求对n个ta进行验证;可信计算节点向m个用户设备中的每个用户设备发送n个ta分别对应的度量结果,n个ta中的每个ta对应的度量结果包括每个ta对应的硬件节点参数和软件程序的哈希值,n个ta分别对应的度量结果用于每个用户设备验证n个ta是否被篡改,并在验证通过时向可信计算节点发送n个数据片段。可以理解,用户设备对多个ta的远程证明与对一个ta的远程证明类似,确定多个ta分别对应的度量结果正确即可,保证用户设备发送数据后,进行数据计算的安全性。
17.第二方面,提供一种可信计算节点,包括:处理单元,用于确定针对m个用户设备的同一计算任务的n个可信应用程序ta,m为大于或等于1的整数,n为大于1的整数;收发单元,用于接收m个用户设备中的每个用户设备发送的数据,每个用户设备发送的数据用于执行同一计算任务;处理单元,还用于确定参与n个ta中的每个ta的数据片段集合,每个ta的数据片段集合包括每个用户设备发送的数据中的1个数据片段;处理单元,还用于控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。
18.第二方面的有益效果可以参见第一方面的说明。
19.在一种可能的设计中,每个用户设备发送的数据包括n个数据片段,每个ta的数据片段集合包括每个用户设备发送的n个数据片段中的1个数据片段。
20.在一种可能的设计中,n个ta的计算逻辑相同。
21.在一种可能的设计中,处理单元用于:控制每个ta对每个ta的数据片段集合进行计算,并控制每个ta将每个ta的中间计算结果输出给可信算子继续进行计算;控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果。
22.在一种可能的设计中,处理单元用于:控制每个ta对每个ta的计算结果进行加密,得到每个ta的中间计算结果,控制每个ta向可信算子输出每个ta的中间计算结果,并控制可信算子对每个ta的中间计算结果进行解密,以控制可信算子根据解密后的计算结果继续进行计算;控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果包括:控制可信算子对可信算子的计算结果加密,得到可信算子的中间计算结果,将可信算子的中间计算结果输出给每个ta,并控制每个ta对可信算子的中间计算结果进行解密,以控制每个ta根据解密后的计算结果继续进行计算,得到每个ta的计算结果。
23.在一种可能的设计中,每个用户设备用于对n个ta进行算法完整性验证。
24.在一种可能的设计中,收发单元,还用于:接收m个用户设备分别发送的远程证明请求,远程证明请求用于请求对n个ta进行验证;向m个用户设备中的每个用户设备发送n个ta分别对应的度量结果,n个ta中的每个ta对应的度量结果包括每个ta对应的硬件节点参数和软件程序的哈希值,n个ta分别对应的度量结果用于每个用户设备验证n个ta是否被篡改,并在验证通过时向可信计算节点发送n个数据片段。
25.第三方面,提供一种可信计算系统,可信计算系统包括:可信部件、不可信部件和安全扩展部件;不可信部件包括非安全应用程序、非安全可信执行环境tee中的应用程序编程接口api和非可信操作系统os;可信部件,包括n个安全应用程序、安全tee中的api和可信os;安全应用程序用于通过调用可信os对应的安全tee中的api,使可信os执行安全应用程
序的命令;可信os用于:确定针对m个用户的同一计算任务的n个可信应用程序ta,m为大于或等于1的整数,n为大于1的整数;接收m个用户设备中的每个用户设备发送的数据,每个用户设备发送的数据用于执行同一计算任务;确定参与n个ta中的每个ta的数据片段集合,每个ta的数据片段集合包括每个用户设备发送的数据中的1个数据片段;控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。
26.第三方面的有益效果可以参见第一方面的说明。
27.在一种可能的设计中,每个用户设备发送的数据包括n个数据片段,每个ta的数据片段集合包括每个用户设备发送的n个数据片段中的1个数据片段。
28.在一种可能的设计中,n个ta的计算逻辑相同。
29.在一种可能的设计中,可信os具体用于:控制每个ta对每个ta的数据片段集合进行计算,并控制每个ta将每个ta的中间计算结果输出给可信算子继续进行计算;控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果。
30.在一种可能的设计中,可信os具体用于:控制每个ta对每个ta的计算结果进行加密,得到每个ta的中间计算结果,控制每个ta向可信算子输出每个ta的中间计算结果,并控制可信算子对每个ta的中间计算结果进行解密,以控制可信算子根据解密后的计算结果继续进行计算;控制可信算子将可信算子的中间计算结果输出给每个ta再继续进行计算,得到每个ta的计算结果包括:控制可信算子对可信算子的计算结果加密,得到可信算子的中间计算结果,将可信算子的中间计算结果输出给每个ta,并控制每个ta对可信算子的中间计算结果进行解密,以控制每个ta根据解密后的计算结果继续进行计算,得到每个ta的计算结果。
31.在一种可能的设计中,每个用户设备用于对n个ta进行算法完整性验证。
32.在一种可能的设计中,可信os还用于接收m个用户设备分别发送的远程证明请求,远程证明请求用于请求对n个ta进行验证;向m个用户设备中的每个用户设备发送n个ta分别对应的度量结果,n个ta中的每个ta对应的度量结果包括每个ta对应的硬件节点参数和软件程序的哈希值,n个ta分别对应的度量结果用于每个用户设备验证n个ta是否被篡改,并在验证通过时向可信计算节点发送n个数据片段。
33.第四方面,提供一种通信系统,包括如第二方面、第二方面的任一种可能的设计涉及的可信计算节点,或第三方面、第三方面的任一种可能的设计涉及的可信计算节点,以及与可信计算节点通信的至少一个用户设备。
34.第五方面,提供一种通信装置,包括至少一个处理器,所述至少一个处理器与存储器相连,所述至少一个处理器用于读取并执行所述存储器中存储的程序,以使得所述装置执行如上述第一方面或第一方面的任一种可能的设计所述的方法。
35.第六方面,提供一种芯片,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如上述第一方面或第一方面的任一种可能的设计所述的方法。
36.第七方面,提供了一种可信计算节点,该可信计算节点包括:收发器、存储器和处理器。上述存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。该收发器用于接收数据和发送数据。当处理器执行该计算机指令时,以使该
processing unit,cpu)内的一个安全区域。tee运行在一个独立的环境中且与操作系统并行运行。cpu可确保tee中的代码和数据的机密性和完整性都得到保护。cpu通过同时使用硬件和软件来保护数据和代码,使tee比操作系统更加安全。在tee中运行的受信任应用程序可以访问设备主处理器和内存的全部功能,而硬件隔离保护这些受信任应用程序的组件不受主操作系统中运行的用户安装应用程序的影响。
61.因特尔软件防卫指令集扩展(software guard extensions,sgx):典型的tee方案,即用于实现tee的产品。sgx可保护选定的代码和数据不被泄露和修改。开发者可以把应用程序划分到cpu强化的enclave(安全区)中或者内存中可执行的保护区域,即使在受攻击的平台中也能提高安全性。使用这种新的应用层tee,开发者能够启用身份和记录隐私、安全浏览和数字管理保护(digital rights management,drm)或者任何需要安全存储机密或者保护数据的高保障安全应用场景中。
62.enclave:tee中隔离保护数据的主要手段。enclave用于将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave。也就是说,一旦软件代码和数据位于enclave中,即便操作系统或虚拟机监控器(virtual machine monitor,vmm)也无法影响enclave中的代码和数据。
63.安全多方计算(secure multi-party computation,smc):作为密码学的一个子领域,允许多个数据所有者在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其他任何信息。
64.可信计算的核心技术是数据隔离,即保护用户的数据不被其他实体,例如管理员等超级用户所访问。虽然目前的全密文计算也可以通过全流程全环境加密保护数据隐私,但是实现代价太高。因此,数据隔离仍然是目前更广泛和更实际的数据保护手段。
65.tee作为可信计算的一种技术,能够在cpu和内存中划分独立的可信区,并隔离不同的ta在cpu和内存中的运行环境,防止不同的ta间访问彼此的数据,即使权级较高的ta也不能跨界访问。目前,it界代表性的技术是sgx、超威半导体(advanced micro devices,amd)的安全加密虚拟化(secure encrypted virtualization,sev)和risc微处理器(advanced risc machines,arm)架构下的可信区域(trust zone)。例如,如图1所示,sgx技术可将应用分成两个部分,可信部分(trusted)和不可信部分(untrusted)。可信部分指的是安全区,可信部分中的代码是访问应用私密(secret)的代码,应用可以拥有一个以上安全区。不可信部分包括应用的剩余部分及其所有模块。从安全区的角度来看,操作系统和虚拟机显示器都被看做不可信部分。当应用程序(application,app)运行并创建安全区(create enclave),该enclave放置在可信部分受信任的内存中,并调用安全区中的可信函数,enclave内部运行的代码可以看到使用数据,数据一旦出了enclave就需要加密,enclave外部对enclave内部数据的访问都会被拒绝。也就是说,tee在将不同ta的数据在enclave中分区隔离的情况下,还对enclave中的数据加密。用户将自身的隐私数据存储在tee的地址中,受到tee的保护,在tee这种隔离环境中的计算成为了机密计算。
66.举例来说,如图2所示,当一个用户作为数据提供方采用加密通信向tee提交私密数据x(明文)给tee,tee使用一个ta实现机密计算f(x)时,数据x的密文被存储在安全区enclave中隔离,当tee要计算f(x)时,tee从enclave中获取密文解密后进行计算。
67.此外,tee还有一个安全特征,即远程证明(remote attestation)。远程证明用于
用户验证tee的软件和硬件配置,包括对基于cpu芯片可信根的硬件环境和在tee中运行的ta程序的验证,保证tee的软件和硬件配置都是用户选定且未被篡改的。这样可提供机密计算的完整性保护。例如,远程证明的工作流程如图3所示。该流程包括:1)用户作为数据提供者向tee提交远程证明请求;2)tee度量运行环境,并反馈度量结果给用户。度量结果包括tee硬件环境参数和软件程序的哈希(hash)值。该度量结果由tee中的cpu芯片内置的私钥(每个芯片独有)签名;3)用户检验tee的度量结果之后,再从cpu芯片的生商声的认证中心(attestation centre)获取cpu芯片的私钥对应的公钥;4)用户根据从认证中心获取的公钥验证tee的度量结果的签名结果,确定验证是否通过。如果验证通过,说明tee的软硬件配置是用户选定的且未被篡改的。
68.sgx作为典型的实现tee的产品,sgx是原tee架构新的扩展,是在原有tee架构上增加了一组新的指令集和内存访问机制。这些扩展允许应用程序实现上述enclave的容器,即在应用程序的地址空间中划分出一块被保护的空间,为enclave内的代码和数据提供机密性和完整性的保护,以免受特殊权限的恶意软件的破坏。
69.自然地,sgx作为tee的产品也需要提供远程证明,其基本流程与图3的过程类似。其中,除了被度量的用户ta和enclave,还需要sgx的引用安全区(quoting enclave)配合度量硬件参数。quoting enclave可以理解为特殊的enclave程序,能够安全地执行数字签名的逻辑计算,目的是用于远程认证(remote attestation)。如图4所示,sgx的用户层面的远程证明过程可以包括:

用户(也可以称为challenger)向sgx中的应用(application)发送远程证明请求;

application向存储有用户数据的应用安全区(application enclave)发送tee代码度量请求;

application enclave向application返回对tee代码度量结果;

application向quoting enclave发送tee硬件度量请求;

quoting enclave向application返回tee硬件度量结果;

application向用户返回tee代码度量结果和tee硬件度量结果;

用户从认证中心获取密钥,以对tee代码度量结果和tee硬件度量结果进行验证。
70.从上文可知,tee(或作为tee的产品sgx)的出现,实现了安全的算力外包,能够使得一个没有本地算力的用户将用户自身的隐私数据投入到算力提供商的tee中,由tee中用户的ta进行运算,以便保护用户的数据隐私。但是,这针对是1-to-1的场景,即一个用户使用一个算力提供商的算力,即一个计算任务涉及一个用户数据的场景,此时tee只需为该计算任务建立一个ta。而tee只能实现不同ta间的数据隔离,如果一个计算任务涉及多个用户的隐私数据时,tee建立的这一个ta就会涉及多个用户的隐私数据,不能实现不同用户间的数据隔离。甚至,即使将多个用户的隐私数据都委托给一个可信第三方,由第三方的ta在tee中使用机密计算,也会破坏机密计算的安全前提-只依赖对tee的硬件的信任,二部需要更多的信任假设,即需要信任第三方。但是,如果第三方存在数据泄漏,用户的数据将得不到保障。
71.可见,针对需要保护的数据隐私涉及多个数据提供方时,多个数据提供之间的不信任甚至竞争关系往往导致强制性的数据隐私保护需求。如前所述,这时候基于tee的机密计算是不适用的。这时,解决方案大多依赖一种称为安全多方计算(secure multi-party computation,smc)的协议,本质上讲,安全多方计算是一种基于密码学的安全计算方法。
72.其中,安全多方计算是将一组数据提供者作为计算参与方,解决一组互不信任的
计算参与方之间保护隐私的协同计算问题。安全多方计算要确保输入的独立性、计算的正确性和去中心化等特征,同时不泄露各输入值给参与计算的其他成员。主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题,同时要求每个计算参与方除了计算结果外不能得到其他实体任何的输入信息。目前,安全多方计算主要有两种安全模型:半诚实模型(honest-but-curious adversary model)和恶意对手模型(malicious adversary model)。但是,这两种模型中,半诚实模型中,虽然所有计算参与方严格地执行计算协议,不会有任何篡改。但计算参与方可能会试图获得不属于他们的信息。恶意对手模型中,任何计算参与方都可能采用任何手段以达成任何目的,包括篡改和偏离计算协议。
73.因此,多方安全计算需要各个计算参与方各自持有私密数据,需要在不泄漏各自数据的前提下计算出这些数据的函数。因此,多方安全计算多采用分布式计算,各个计算参与方的节点根据计算逻辑,在节点本地完成数据提取和计算,并将得到的中间计算结果路由到指定节点,指定节点将中间计算结果路由到其他计算参与方的节点,从而多方节点完成协同计算任务,输出唯一性计算结果。整个过程中,各计算参与方的数据全部在本地计算,并不提供原始数据给其他计算参与方的节点,这样,在保证数据隐私的情况下,各计算参与方只需将中间计算结果反馈到整个计算任务系统,从而各计算参与方得到正确的最终计算结果。目前通用的多方安全计算框架都能够让各个计算参与方安全地计算任何函数或某类函数的结果。
74.举例来说,多方安全计算任务中,如图5所示,存在n个数据提供方(1、2、3、4、5、

、n),且n个数据提供方作为计算参与方参与计算,假设每个计算参与方本地的数据均为x,每个计算参与方可以将对x的中间计算结果x1、x2、x3、x4、x5

、xn,每个计算参与方可以将自己的中间计算结果发送给指定节点,由指定节点将接收到的中间计算结果再发送给其他的计算参与方计算计算。指定节点仅用于中间数据传输,计算过程由各个计算参与方执行,每个计算参与方最终得到的计算结果是相同的。
75.但是,在多方安全计算中,需要为每个多方安全计算的个案单独设计和优化计算协议,缺乏普适的通用解决方案。例如,对于一项安全计算任务,要将这项计算任务分发到每个计算参与方,需要根据该安全计算任务临时确定每个就算参与方的计算任务,计算效率较低。而且,多方安全计算中,各个计算参与方之间存在大量的中间数据交换,尤其在各计算参与方依赖网络通信进行分布式计算时,通信代价较高。此外,为了提高计算效率,多方安全计算中,也时长利用第三方辅助计算,也会产生第三方的可信问题。最然辅助计算的第三方通常不获取隐私数据,不需要绝对信任,但是第三方和部分计算参与方也会存在合谋窃取其他参与方的数据的可能。而且,当采用较强的安全模型时,在多方安全计算中,所有计算的正确性,即计算协议程序的完整性,都需要证明,而现有的证明方法主要是基于密码学的零知识证明,证明过程复杂且代价较高。
76.总而言之,目前针对同一计算任务,处理多方用户数据的安全计算时,基于tee的机密计算将多方用户数据在同一ta中处理时,不能实现用户间的数据隔离。即使将多方用户数据委托给第三方进行计算时,第三方会掌握所有用户的隐私数据,仍然存在第三方泄漏数据的可能性,例如存在篡改数据的可能,破坏了计算的正确性。
77.而基于密码学的多方安全计算的普适性较差,计算效率较低,即使利用第三方计算,也会存在第三方的信任问题。
78.因此,本技术提出一种数据安全处理方法,该方法可以应用于tee中,并将tee应用于多方计算场景,以为同一计算任务涉及的多个数据提供方实现高效安全的计算。在该方法中,通过在一个tee中运行多个ta,每个ta作为一个计算参与方,每个ta用于根据多个数据提供方的数据片段进行计算。这样,这些ta之间协同计算多个数据提供方的数据,但又可实现多用户的数据隔离,不会泄漏数据提供方的数据,可以完成基于tee的安全多方计算,计算效率较高,适用性强。
79.本技术的数据安全处理方法可以适用于如图6所示的网络架构中,该网络架构包括至少一个数据提供方、拥有tee的可信计算节点以及认证中心。
80.至少一个数据提供方的数据用于执行同一计算任务,每个数据提供方的数据可按照tee中为同一个计算任务布置的分任务的数量确定数据被拆分的片段数量。每个分任务对应一个ta(如图6中的ta_1、ta_2、

、ta_n),即ta的数量和每个数据提供方的数据被拆分的片段的数量相同。以其中一个数据提供方来为例,该数据提供方的数据被拆分为n份数据片段,并向每个ta发送n份中的一份数据片段。对于每个ta来说,每个ta接收到了至少一个数据提供方中的每个数据提供方发送的一份数据片段。假设至少一个数据提供方的数量为m(如图6中的数据提供方1、数据提供方2、

、数据提供方m),那么每个ta接收到了m份来自不同数据提供方的数据片段。m为大于或等于1的整数,n为大于或等于2的整数。
81.拥有tee的可信计算节点中的每个ta在接收到至少一个数据提供方的数据片段后,每个ta根据接收到的m份数据片段执行分任务,以获取最终的计算结果。其中,可信计算节点例如可以为云端服务器或其他第三方计算节点等。
82.认证中心可以用于在多个ta执行分任务之前,至少一个数据提供方通过与tee和认证中心通信,以确定多个ta是否验证通过,即至少一个数据提供方进行多个ta的远程证明。当确定多个ta验证通过时,至少一个数据提供方才向tee中的多个ta发送数据片段。
83.在本技术中,对每个ta的度量和证明不仅可以由数据的所有者,即至少一个数据提供方验证,也可以由其他的数据提供方或计算参与方,甚至任意的独立旁观者验证,以保证计算的正确性和完整性检验。
84.本技术的网络架构可以应用于多种数据处理场景中。举例来说,存在两个用户设备:前端人脸采样设备和后台人脸仓库设备。前端人脸采样设备将采集到的前端人脸数据拆分后发送给拥有tee的云端服务器,后台人脸仓库设备将预置的后台人脸数据拆分后也发送给拥有tee的云端服务器,云端服务器可以根据前端人脸数据和后台人脸数据进行数据比对计算,以确定后台人脸仓库中是否存在前端人脸采样数据。
85.应用本技术提供的网络架构,下面对本技术的数据安全处理方法进行介绍。
86.如图7所示,本技术提供一种数据安全处理方法,该方法包括:
87.701、可信计算节点确定针对m个用户设备的同一计算任务的n个ta,m为大于或等于1的整数,n为大于1的整数。
88.本技术的可信计算节点包括tee。m个用户设备可以理解为m个数据提供者。
89.当tee接收到m个用户的计算请求时,tee可先确定针对m个用户的计算请求的计算任务,该计算任务可以理解为总计算任务。而后,tee可以确定针对该计算任务的n个分任务。每个分任务对应一个ta,即n个分任务对应n个ta:ta_1、ta_2、

、ta_n。
90.例如,计算任务的计算函数为f(),ta_1对应的分函数为f1,ta_2对应的分函数为
f2,ta_n对应的分函数为fn。
91.在一些实施例中,可信计算节点确定n个分任务中的每个分任务与同一计算任务相同。即每个分任务对应的分函数为直接继承总计算任务对应的计算函数即可。按照上述举例来说,f()=f1=f2=

=fn。
92.在一些实施例中,可信计算节点按照预置的计算函数与分函数的框架,确定该计算任务下的n个分任务。此时,各个分任务与计算任务不同,不是单纯的将计算函数复制为n个分函数。
93.此外,在一些实施例中,可信计算节点确定n个分任务的数量与m个用户设备的数量相同,每个用户设备用于控制n个分任务中的一个分任务的数据安全。即m=n。这种情况可以理解为,m个用户设备为m个数据提供者,m个数据提供者同时作为m个计算参与方,每个计算参与方控制一个ta参与多方计算。这样,不需要任何信任假设,如果没有对应数据提供方的统一与配置,任何用户都无法得到该数据提供方的数据。
94.702、可信计算节点接收m个用户设备中的每个用户设备发送的数据,每个用户设备发送的数据用于执行同一计算任务。
95.示例性的,对于m个用户设备中的一个用户设备来说,当该用户设备确定可信计算节点中的分任务(ta)数量为n时,该用户设备可以将待发送的数据x1拆分为n份,得到n个数据片段。而后,该用户设备向可信计算节点发送这n个数据片段。
96.703、可信计算节点确定参与n个ta中的每个ta的数据片段集合,每个ta的数据片段集合包括每个用户设备发送的数据中的1个数据片段。
97.可信计算节点可以将这n个数据片段分配给n个分任务执行,即分配给n个ta运行。每个ta得到n个数据片段中的1个数据片段。
98.这样,如果将m个用户设备的数据都分别分为n份,分配给n个ta,那么每个ta要处理m个数据片段,每个ta处理的m个数据片段分别来自m个用户设备,也可以说来自m个数据提供者。每个ta的数据片段集合包括来自m个数据提供者的m个数据片段。
99.需要说明的是,简单来说,每个用户设备将待发送的数据拆分为n个数据片段后,对于每个用户设备来说得到了n个数据片段。可信计算节点接收到某个用户设备的n个数据片段,可将这n个数据片段分别分配给n个ta,每个ta得到该用户设备的1个数据片段。即使某个用户设备将数据拆分的数据片段多于n个,可信计算节点确定有的ta分配到了该用户设备的2个或2个以上个数据片段,还可理解为该ta分配到了该用户设备的部分数据,这时仍然可以看作该ta分配到了该用户设备的1个数据片段,该ta处理的还是该用户的1个数据片段,不存在一个ta分配到某个用户设备多个数据片段的情况。这种情况下,仍然可以认为用户设备将数据拆分为了n个数据片段。
100.704、可信计算节点控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。
101.当n个ta根据接收到的数据片段集合进行计算时,可得到总计算任务最终的计算结果。
102.需要理解,在步骤702之前,即m个用户设备向可信计算节点发送数据之前,m个用户设备还需要与可信计算节点以及认证中心进行通信,以确定可信计算节点中的n个ta的是否可靠,并在确定可靠的情况下才向可信计算节点发送数据片段。具体实现将在后文中
进行进一步介绍。
103.由此,在本技术提供的数据安全处理方法中,如果m个用户设备发送的数据均用于执行同一计算任务时,可信计算节点可为m个用户设备建立多个分任务,每个分任务运行一个ta,即建立了n个ta。m个用户设备中的每个用户设备可将待发送的数据拆分为n个数据片段,每个ta得到n个数据片段中的一个数据片段。也就是说,本技术中的每个ta而言,m个用户设备的数据并未在一个ta中计算,每个ta都只得到了每个用户设备的数据中的1个数据片段,并未得到任一个用户设备的完整数据,可以很好的达到多用户间的数据隔离的目的,不易造成数据泄漏。而且,所有用户设备的数据都在一个有tee的可信计算节点中计算,并未涉及到第三方节点辅助计算,计算效率较高。
104.此外,本技术相对于安全多方计算的方案来说,本技术将安全多方计算中原来在多个计算节点间跨网络的通信交互转移到同一可信计算节点的ta间执行,不需要多个计算节点间的通信,可加快计算速度。而且,本技术不需要依赖安全多方计算具体的应用任务的协议,通用性较强。
105.下面对本技术的数据安全处理方法进一步进行介绍。该方法中,至少一个用户设备向可信计算节点请求数据计算时,可信计算节点会先将计算任务拆分为多任务,至少一个用户设备需先对多任务进行远程证明。当远程证明的结果指示验证通过时,至少一个用户设备才会将数据进行拆分后发送给可信计算节点,以便可信计算节点中的分任务根据分配到的各用户设备的数据片段进行计算,得到计算结果。基于此,本技术的数据安全处理方法流程如图8所示,包括以下步骤。
106.801、m个用户设备向可信计算节点发送可信计算请求,该可信计算请求用于指示计算任务。
107.相应地,可信计算节点从m个用户设备接收该可信计算请求。
108.例如,m个用户设备包括上述举例中的前端人脸采样设备和后台人脸数据设备。当前端人脸采样设备采样到人脸数据时,先向可信计算节点发送可信计算请求,可信计算请求指示的计算任务为是否存在与采集到的人脸数据匹配的后台数据。这时,前端人脸采样设备可以同时请求后台人脸数据设备发送后台人脸数据至可信计算节点,或者可信计算节点请求后台人脸数据设备发送后台人脸数据至可信计算节点。
109.802、可信计算节点确定针对m个用户设备的同一计算任务的n个ta。
110.当可信计算节点接收到可信计算请求时,可根据计算任务请求确定与计算任务请求对应的计算任务,并根据计算任务确定n个分任务。n个分任务可以是按照预配置的计算任务和分任务间的对应关系确定的,也可以是按照某种计算规则当下计算确定的。
111.示例性的,假设计算任务的计算函数是f(),可信计算节点将f()拆分为n个分任务f1(),f2(),

,fn()。如图6所示,每个分任务形成一个ta,得到对应的ta_1,ta_2,

,ta_n。每个ta_i执行f()的分函数fi()。i的取值范围为1~n。
112.在一些实施例中,可信计算节点确定n个分任务中的每个分任务与同一计算任务相同。例如,可信计算节点将计算任务的代码复制n-1份,原计算任务和n-1份计算任务作为n个分任务。也可以理解为,上述f1()=f2()=

=fn()=f()。当然,n个分任务也可以各不相同,或不完全相同。
113.在一些实施例中,可信计算节点确定n个分任务的数量与m个用户设备的数量相
同,每个用户设备用于控制n个分任务中的一个分任务的数据安全。此时,m=n。每个用户设备作为数据提供者,同时作为了计算参与者,每个计算参与者对应控制一个ta参与多方计算。当任一个计算参与者控制ta的计算时,只有所有ta都被攻破,该计算参与者的数据才会泄漏,可有效防止其他计算参与者或其他第三方获取数据。当然,m也可以与n不同。
114.当m=n时,本技术的任务拆分实现较为简单,可以处理任何多项式形式的函数f()。例如任何计算函数f()都可以通过插值(例如拉格朗日插值)之类的方法降解为多个分任务的多项式形式。
115.803、m个用户设备对n个ta进行远程证明,确定n个ta验证通过。
116.当可信计算节点将计算任务拆分为n个分任务后,可信计算节点可以通知m个用户设备分任务已确定,可发送数据至可信计算节点。但是,m个用户设备还需要对n个分任务执行远程证明过程,即执行多ta的远程证明。与现有技术不同的是,现有技术相当于是对计算任务f()的度量和证明,本技术是对各个分任务ta_1,ta_2,

,ta_n的度量和证明。
117.在一些实施例中,可信计算节点接收m个用户设备分别发送的远程证明请求,远程证明请求用于请求对n个ta进行验证。可信计算节点向m个用户设备中的每个用户设备发送n个ta分别对应的度量结果,n个ta中的每个ta对应的度量结果包括每个ta对应的硬件节点参数和软件程序的哈希值,n个ta分别对应的度量结果用于每个用户设备验证n个ta是否被篡改,并在验证通过时向可信计算节点发送n个数据片段。
118.如图9所示,可信计算节点可包括管理任务或管理ta的系统模块,对于ta的软件程序的度量和证明可以理解为:该系统模块的功能与图4中的sgx的用户层面的功能类似,可以生成每个ta的哈希值,或者说生成每个ta的hash摘要h(ta_i),上述n个分任务分别对应的度量结果可以认为为每个ta的hash摘要h(ta_i)。可信计算节点向m个数据提供者分别发送每个ta的hash摘要h(ta_i)。对于任一数据提供者,可以从一个公开的系统设备中获取f1(),f2(),

,fn()的标准hash摘要h(fi())。而后,该数据提供者可以比对从可信计算节点接收到的hash摘要h(ta_i)和从系统设备接收到的标准hash摘要h(fi())是否相同,如果确定相同,该数据提供者确定对n个分任务的度量和证明通过。
119.在一些实施例中,每个ta_i的度量和证明不仅可以由数据提供方执行,一个数据提供方也可以向m个数据提供方中的其他数据提供方甚至其他任意独立旁观者检验。
120.804、m个用户设备分别将待发送的数据拆分为n个数据片段,m个用户设备分别向可信计算节点发送n个数据片段。
121.当m个用户设备通过远程证明确定n个ta验证通过时,m个用户设备可向可信计算节点发送数据。此时,m个用户设备中的每个用户设备都需将待发送的数据拆分为n个数据片段,将n个数据片段发送给可信计算节点。
122.其中,对于每个用户设备待发送的数据,可以是按照预设的规则拆分为n个数据片段的,也可以时随机拆分为n个数据片段的。
123.示例性的,假设m个用户设备中的1个用户设备待发送的数据为s
l
,该用户设备可以将该数据s
l
拆分为n个数据:s
l,1
、s
l,2

…sl,n
,l的取值为1~m。
124.805、可信计算节点确定参与n个ta中的每个ta的数据片段集合,每个ta的数据片段集合包括每个用户设备发送的n个数据片段中的1个数据片段。
125.当可信计算节点接收到m个用户设备中的任一用户设备发送的n个数据片段时,可
信计算节点可以将这n个数据片段按照一定的规则分配给n个ta,或n个ta。具体可如何分配将在后文中继续介绍。
126.这样一来,每个ta都得到的每个用户设备发送的n个数据片段中的1个数据片段。
127.示例性的,假设可信计算节点接收到的m个用户设备分别发送的n个数据片段中:第1个用户设备对应的n个数据片段包括:s
1,1
、s
1,2

…s1,n
;第1个用户设备对应的n个数据片段包括:s
2,1
、s
2,2

…s2,n
;以此类推,第m个用户设备对应的n个数据片段包括:s
m,1
、s
m,2

…sm,n
。基于此,可信计算节点可以将s
1,1
、s
2,1


、s
m,1
分配给ta1进行计算,将s
1,2
、s
2,2


、s
m,2
分配给ta2进行计算,以此类推,s
1,n
、s
2,n


、s
m,n
分配给tan进行计算。
128.806、可信计算节点控制每个ta根据每个ta的数据片段集合进行计算,并根据每个ta的计算结果确定同一计算任务的计算结果。
129.在一些实施例中,每个分任务在进行数据片段集合的计算时,可以与基础的可信算子协同计算。这些可信算子可以实现最基本的简单计算和通信功能,可以满足各类算法函数的通用功能。可信算子不需要进行复杂或高消耗的计算,同时在tee芯片组和内存间交互也不会导致过大的通信代价。
130.其中,可信算子可以看作提供辅助计算和优化多ta的协同计算模块,可信算子可以通过软件或硬件的实现方式实现可信算子的功能。如果想要避免对辅助计算方的任何信任,可以使用专用的芯片实现可信算子的功能。由于可信算子的计算内容较为简单且通用,芯片的实现较为容易,如果将可信算子封装为难以破坏的(tamper-resistant)的芯片,该芯片可以防止代码篡改或信息泄露,从而避免了多余的信任假设。有了基于硬件的可信算子,只要前述tee中多ta的远程证明的配合就可以在malicious adversary model中保证安全。
131.示例性的,可信计算节点控制每个分任务对每个分任务的数据片段集合进行计算,并控制每个分任务将每个分任务的中间计算结果输出给可信算子继续进行计算。可信计算节点控制可信算子将可信算子的中间计算结果输出给每个分任务再继续进行计算,得到每个分任务的计算结果。进而,可根据每个分任务的计算结果确定计算任务的计算结果。
132.如图10所示,假设可信计算节点中的可信算子包括可信算子1时。n个ta在对接收到的数据片段集合进行计算后,可分别将计算结果1发送给可信算子1继续进行计算。当可信算子1得到计算结果2时,可信算子1可以将计算结果2发送给n个ta继续进行计算,得到计算结果3。计算结果3认为是计算任务f()最终的计算结果。
133.假设可信计算节点中的可信算子包括可信算子1和可信算子2时,上述计算结果3认为还不是最终的计算结果,n个ta可以将计算结果3再发送给可信算子2继续进行计算,得到计算结果4。可信算子2将计算结果4再发送给n个ta继续进行计算,得到计算结果5。该计算结果5认为是计算任务f()最终的计算结果。
134.另外,可信计算节点还可以对可信算子的输入和输出进行加密。也就是说,当ta得到计算结果要发送给可信算子时,ta需将计算结果加密后的密文发送给可信算子,可信算子要对密文解密后继续进行计算。当可信算子得到计算结果时,可信算子也需要对计算结果进行加密后再发送给ta继续进行计算,自然地,ta也需要对接收到的密文进行解密后继续进行计算。
135.示例性的,可信计算节点控制每个分任务对每个分任务的计算结果进行加密,得
到每个分任务的中间计算结果,控制每个分任务向可信算子输出每个分任务的中间计算结果,并控制可信算子对每个分任务的中间计算结果进行解密,以控制可信算子根据解密后的计算结果继续进行计算。
136.基于此,可信计算节点控制可信算子将可信算子的中间计算结果输出给每个分任务再继续进行计算,得到每个分任务的计算结果包括:可信计算节点控制可信算子对可信算子的计算结果加密,得到可信算子的中间计算结果,将可信算子的中间计算结果输出给每个分任务,并控制每个分任务对可信算子的中间计算结果进行解密,以控制每个分任务根据解密后的计算结果继续进行计算,得到每个分任务的计算结果。
137.如此一来,对于本技术中的每个ta而言,m个用户设备的数据并未在一个ta中计算,每个ta都只得到了每个用户设备的数据中的1个数据片段,并未得到任一个用户设备的完整数据,可以很好的达到多用户间的数据隔离的目的,不易造成数据泄漏。而且,所有用户设备的数据都在一个有tee的可信计算节点中计算,并未涉及到第三方节点辅助计算,计算效率较高。
138.此外,本技术相对于安全多方计算的方案来说,本技术将安全多方计算中原来在多个计算节点间跨网络的通信交互转移到同一可信计算节点的ta间执行,不需要多个计算节点间的通信,可加快计算速度。而且,本技术不需要依赖安全多方计算具体的应用任务的协议,通用性较强。
139.下面对本技术步骤802~806的实现方式进行举例说明。
140.在步骤802中,假设可信计算节点确定计算任务的计算函数为f(),拆分的n个分任务的分函数直接继承的是f(),即f1()=f2()=

=fn()=f(),且f()通过插值之类的算法降解后的多项式为:其中,s表示待处理的数据,j表示f()的乘积段的数量,取值为0~h,表示有h+1个乘积段。l表示第l个用户设备,取值为1~m,共m个用户设备。a和b表示常数。
141.在步骤803中,m个用户设备需对f1()、f2()、

、fn()对应的ta进行远程证明,即需得到ta_1,ta_2,

,ta_n的度量和证明,在验证通过时继续执行步骤804。
142.在步骤804中,m个用户设备中的每个用户设备拆分待发送的数据sl的方式可以有多种。例如,可以将数据s
l
按照乘法拆分的方式拆分为s
l
=s
l,1
×sl,2
×…×sl,n
。具体地,当l=1时,可理解为第1个用户设备待发送的数据s1=s
1,1
×s1,2
×…×s1,n
;当l=2时,可理解为第2个用户设备待发送的数据s2=s
2,1
×s2,2
×…×s2,n
;以此类推,当l=m时,第m个用户设备待发送的数据sm=s
m,1
×sm,2
×…×sm,n

143.在步骤805中,按照步骤805中的举例,如图11所示,本技术中的n=3,即共有3个分任务,对应ta1、ta2和ta3。ta1分配到的数据片段集合包括:s
1,1
、s
2,1


、s
m,1
。ta2分配到的数据片段集合包括:s
1,2
、s
2,2


、s
m,2
。ta3分配到的数据片段集合包括:s
1,3
、s
2,3


、s
m,3

144.在步骤806中,可信计算节点在控制每个分任务根据每个分任务的数据片段集合进行计算时,假设可信计算节点中配合分任务计算的可信算子包括prd-to-sum用于实现协同计算。其中,prd-to-sum用于用n个ta接收n个私密数据,并计算出n个私密数据的乘积之后,再将乘积结果分解为n个随机数之和,并输出n个随机数至n个ta继续进行计算。
145.例如,n=3时,如图11所示,ta1可先对从用户设备接收到的s
1,1
、s
2,1


、s
m,1
进行
乘法分计算,即对ta接收到的数据通过多项式进行乘法分计算。
146.ta1得到的结果为:
147.与ta1的计算过程类似的,ta2对ta2接收到的数据片段集合s
1,2
、s
2,2


、s
m,2
进行乘法分计算得到的结果可以为:
148.与ta1的计算过程类似的,ta3对ta3接收到的数据片段集合s
1,3
、s
2,3


、s
m,3
进行乘法分计算得到的结果可以为:
149.而后,ta1、ta2和ta3可分别将自身得到的计算结果加密后发送给可信算子prd-to-sum进行继续计算。prd-to-sum的计算过程还可以理解为乘法聚合和加法拆分两个过程。其中,乘法聚合可理解为,prd-to-sum根据从ta1、ta2和ta3接收到的计算结果混合进行乘法运算,即将ta1计算得到的第1个结果f
1,1
、ta2计算得到的第1个结果f
2,1
以及ta3计算得到的第1个结果f
3,1
相乘后的乘积再进行加法拆分,即将乘积拆分为3个数相加。如图11所示,假设拆分后的3个相加的数表示为f
1,1
、f
2,1
和f
3,1

150.类似的,prd-to-sum将ta1计算得到的第2个结果f
1,2
、ta2计算得到的第2个结果f
2,2
以及ta3计算得到的第2个结果f
3,2
相乘后的乘积再进行加法拆分,即将乘积拆分为3个数相加。如图11所示,假设拆分后的3个相加的数表示为f
1,2
、f
2,2
和f
3,2

151.以此类推,prd-to-sum将ta1计算得到的第h个结果f
1,h
、ta2计算得到的第h个结果f
2,h
以及ta3计算得到的第h个结果f
3,h
相乘后的乘积再进行加法拆分,即将乘积拆分为3个数相加。如图11所示,假设拆分后的3个相加的数表示为f
1,h
、f
2,h
和f
3,h

152.这里可以将prd-to-sum这个可信算子的计算过程可以表示为:其中,i表示ta的数量。表示乘法聚合过程中3个ta中的3个数的乘积,表示这3个数据的乘积拆分为3个相加的数。
153.当prd-to-sum计算得到加法拆分后的计算结果f
1,1
、f
2,1
和f
3,1
,f
1,2
、f
2,2
和f
3,2


,f
1,h
、f
2,h
和f
3,h
,可以将这些计算结果分配后发送ta1、ta2和ta3继续进行计算。这时,可将每拆分的3个数据分配给3个ta进行计算,即如图11所示,prd-to-sum将f
1,1
、f
1,2


、f
1,h
加密后发送给ta1继续进行计算,将f
2,1
、f
2,2


、f
2,h
加密后发送给ta2继续进行计算,将f
3,1
、f
3,2


、f
3,h
加密后发送给ta3继续进行计算。
154.而后,ta1、ta2和ta3可分别对接收到的数据解密后进行加法分计算,即将接收到的数据相加。如图11所示,ta1进行加法分计算即对接收到的f
1,1
、f
1,2


、f
1,h
相加,得到加法分计算结果ta2进行加法分计算即对接收到的f
2,1
、f
2,2


、f
2,h
相加,得到加法分计算结果ta3进行加法分计算即对接收到的f
3,1
、f
3,2


、f
3,h
相加,得到加法分计算结果
155.最后,可对f1、f2和f3执行加法聚合,即执行加法计算,得到最终的计算结果:f=f1+f2+f3。此时,最终的计算结果例如可以是由ta1将f1发送给ta2,ta2再将f1和f2发送给f3,由f3根据f1、f2和f3执行加法聚合的。也可以是由f1或f2或其它的方式实现加法聚合的,本技术不做限定。步骤806中的同一计算任务的计算结果可理解为这里的f。
156.这样,就实现了多ta和可信算子协同计算的过程。
157.此外,需要理解的是,有些计算任务的就算函数可能需要多层加法和乘法,此时,下一层的所有多项式的结果可作为上一层多项式的输入投入计算。当完成下一层每个多项式的加法和乘法计算后,所得的结果可经过另一个通用的可信算子sum-to-prd处理进入上一层的多项式进行计算。这里的可信算子sum-to-prd可以用于接收多个私密数据,计算得到多个私密数据的和之后,将结果分解为多个随机数之积,并输出这多个随机数。应理解,经过可信算子sum-to-prd后,下一层的每个多项式的计算结果都按照乘法拆分了,就可实施上一层的多项式的乘法计算。
158.示例性的,如图12所示,图12中的下一层多项式1、下一层多项式2、

、下一层多项式t(t为大于1的整数),以及上一层多项式1、上一层多项式2、

、上一层多项式p(p为大于1的整数),下一层多项式1、下一层多项式2、

、下一层多项式t的计算方式与上述f()的多项式的计算过程相当。图12中的可信算子可为上述sum-to-prd。
159.按照图11和图12中的两种可信算子prd-to-sum、sum-to-prd的举例说明,如果可信计算节点中的ta有n个,那么可信计算节点的计算过程可以示例为如图13所示的多方计算基本流程。应理解,图13中,输入为m个用户设备中的每个用户设备拆分后的n个数据,m个用户设备中每个用户设备的n个数据发送给可信计算节点。可信计算节点中的ta1、ta2、

、tan分别根据分配到的数据进行计算,得到计算结果1,并将计算结果1加密后的密文1发送给可信算子prd-to-sum(图13中记录为可信算子1),可信算子prd-to-sum对接收到的密文解密后得到计算结果1,并根据计算结果1继续进行计算,得到计算结果2,并将计算结果2加密后的密文2分配给ta1、ta2、

、tan,ta1、ta2、

、tan对接收到的分配的密文2解密后,得到计算结果2。ta1、ta2、

、tan根据计算结果2继续进行计算,得到计算结果3,并将对计算结果3加密后的密文3发送给可信算子sum-to-prd(图13中记录为可信算子2)继续进行计算。可信算子sum-to-prd对接收到的密文3进行解密后得到计算结果3,并根据计算结果3继续进行计算,得到计算结果4,并将对计算结果4加密后的密文4分配给ta1、ta2、

、tan继续进行计算。ta1、ta2、

、tan根据分配到的密文4进行解密得到计算结果4,并根据计算结果4继续进行计算,输出计算任务最终的计算结果。
160.由此,本技术通过在可信计算节点的一个tee中多ta协同完成多方安全计算的过程,可以将现有的多方安全计算中在多个计算节点间跨网络通信交互转移到同一可信计算节点的多ta间,相比多个计算节点间采用密码学方案的计算方式,本技术更为简单高效。而且,本技术通过ta和可信算子间的协同计算,可通过通用的函数拆分方法实现计算,不依赖于具体任务需要当下设计具体函数的方式,通用性较高。
161.本技术中的可信计算节点包括tee的基础上,本技术实施例不仅可以适用于x86架构的tee,例如sgx,也可以应用于arm架构的tee,即trustzone上。如图14所示,如果将本技术的多个ta纳入trustzone,每个ta各自使用的数据片段的明文计算视作arm安全(security)的一个功能扩展。
162.如图14,本技术提供一种可信计算系统140,该可信计算系统包括:可信部件(secure world)、不可信部件(non-secure world)和arm安全扩展部件(security extensions)。
163.其中,不可信部件包括非安全应用程序(也可以称为normal apps)、非安全tee中
的api(也可以称为client tee api)和非可信os(也可以称为rich os)。因此,这里的不可信部件可以认为是tee之外的执行环境。可信部件可以认为是tee内的环境。
164.所述可信部件,包括n个安全应用程序(例如图14中示出的ta1、ta2、

、tan,可信算子1和可信算子2)、安全tee中的api和可信os;所述安全应用程序用于通过调用可信os对应的所述安全tee中的api,使所述可信os执行所述安全应用程序的命令。其中,n个安全应用程序可以理解为本技术中的n个ta和可信算子。
165.在本技术实施例中,可信os用于:确定针对m个用户的同一计算任务的n个可信应用程序ta,m为大于或等于1的整数,n为大于1的整数;接收所述m个用户设备中的每个用户设备发送的数据,所述每个用户设备发送的数据用于执行所述同一计算任务;确定参与所述n个ta中的每个ta的数据片段集合,所述每个ta的数据片段集合包括所述每个用户设备发送的数据中的1个数据片段;控制所述每个ta根据所述每个ta的数据片段集合进行计算,并根据所述每个ta的计算结果确定所述同一计算任务的计算结果。控制所述每个ta根据所述每个ta的数据片段集合进行计算,并根据所述每个ta的计算结果确定所述同一计算任务的计算结果。
166.本技术的可信os的具体实施过程可以参见上文中对图5~图13的说明,可信os所能达到的有益效果与上文中数据安全处理方法相同。
167.可以理解的是,为了实现上述功能,电子设备包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
168.本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
169.在采用对应各个功能划分各个功能模块的情况下,图15示出了上述实施例中涉及的可信计算节点150的一种可能的组成示意图,如图15所示。该图15中的可信计算节点可以是如图6~图13的实施例涉及的可信计算节点。该可信计算节点150可以包括:处理单元1501和收发单元1502。
170.其中,处理单元1501可以用于支持可信计算节点150执行上述步骤701、步骤703、步骤704、步骤802、步骤804、步骤805、步骤806等,和/或用于本文所描述的技术的其他过程。
171.收发单元1502可以用于支持可信计算节点150执行上述步骤702和步骤801等,和/或用于本文所描述的技术的其他过程。
172.需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
173.本实施例提供的可信计算节点150,用于执行上述数据安全处理方法,因此可以达到与上述实现方法相同的效果。
174.在采用集成的单元的情况下,可信计算节点150可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对可信计算节点150的动作进行控制管理,例如,可以用于支持可信计算节点150执行上述处理单元1501执行的步骤。存储模块可以用于支持可信计算节点150存储程序代码和数据等。通信模块,可以用于支持可信计算节点150与其他设备的通信,例如与多个用户设备的通信。
175.在一些实施例中,本技术的处理模块可以包括本技术中的可信算子,以本技术的可信算子为上述可信算子1:prd-to-sum和可信算子2:sum-to-prd为例。由于可信算子和多ta间的通信可加密执行,因此,如图16中的(a)所示,可信算子1内部的结构可以包括解密模块、密钥管理模块、加密模块和乘法-加减法随机数模块。解密模块用于可信算子1对从多个ta接收到的计算结果,即ta拆分得到的乘积的密文进行解密(例如上文中的f
1,1
、f
2,1
、f
3,1
等的密文进行解密,得到f
1,1
、f
2,1
、f
3,1
。),得到拆分成乘积的输入;乘法-加减法随机数模块用于将接收到的数据进行乘法聚合,得到乘积(乘法聚合计算乘积),再将乘积进行加法拆分,以拆分成随机数之和输出加密模块用于对随机数之和加密后发送给多个ta继续计算。密钥管理模块用于解密模块和加密模块分配密钥。
176.如图16中的(b)所示,可信算子2内部的结构可以包括解密模块、密钥管理模块、加密模块和加法-乘除法随机数模块。解密模块用于可信算子1对从多个ta拆分得到的数据和的密文进行解密,得到多个数据;加法-乘除法随机数模块用于对接收到的多个数据进行加法聚合计算总和,再将计算总和进行乘法拆分,以拆分成随机数之积的输出;加密模块用于对随机数之积加密后输出给多个ta继续计算。密钥管理模块用于解密模块和加密模块分配密钥。
177.在一些实施例中,可信算子可以封装在类似tamper-resistant的硬件芯片中,可以保证可信算子其中的机密操作不会泄露,从而不会破坏数据隐私。该硬件芯片中,还可以加入度量和远程证明过程,从而可以验证可信算子的算法实现的正确性和完整性。这样一来,可信算子的硬件实现可以如图17所示。该可信算子包括:i/o通道、加解密模块、密钥管理功能、随机数发生器、内置私钥和远程证明电路、度量电路。
178.i/o通道可以用于从多个ta(图16中的ta1、ta2、

、tan)接收数据,以及向多个ta发送数据;
179.加解密电路可以用于对接收到的数据(例如图15中的拆分成乘积的输入、拆分成和的输入)进行解密,以及对将要发送的数据(例如图15中的拆分成随机数之和的输出、拆分成随机数之积的输出)进行加密;
180.密钥管理功能电路可以用于对加解密模块使用的密钥进行配置;
181.随机数发生器可用于实现可信算子自有运算功能:即包括计算电路和内存,该计算电路和内存例如可以用于实现图15中的乘法聚合计算乘积、加法拆分、加法聚合计算总和以及乘法拆分等;
182.内置私钥和远程证明电路和度量电路,用于对来自用户设备对可信算子的远程证明请求进行度量,得到度量结果。
183.此外,在本技术实施例中,处理模块可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计
算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,dsp)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、wi-fi芯片等与其他电子设备(例如本技术的用户设备)交互的设备。
184.本技术提供的数据安全处理方法可以应用于多种应用场景中,如图18所示为一种保密的人脸识别场景。该场景下包括两个用户设备:用于前端人脸采样的摄像设备和后台人脸仓库,以及可信计算节点。本技术的计算任务可以理解为确定后台人脸仓库中是否存储有前端人脸采样的摄像设备采样到的人脸信息。这时,摄像设备可以将人脸信息拆分为n份发送给可信计算节点,后台人脸仓库可以将后台存储的人脸样本数据随机拆分为n份加密传输给可信计算节点。假设可信计算节点中的tee中配置有两个分任务,及两个ta:ta1和ta2,n=2。可信计算节点可以将人脸信息对应的2份数据可以分配给ta1和ta2,并将后台人脸仓库发送的2份数据分配给ta1和ta2。通过ta1和ta2以及可信算子的计算可以得到后台人脸仓库中是否存储有摄像设备采样到的人脸信息的计算结果。
185.在一个实施例中,在图18的基础上,如图19所示,本技术在可信计算节点的tee中实现多用户的数据隔离时,摄像设备和后台人脸仓库可以各自控制一个ta,例如摄像设备作为计算参与方控制ta1,后台人脸仓库可以作为计算参与方控制ta2。这样,如果摄像设备或后台人脸仓库控制的ta计算停止,可以保证数据不泄露。图19还示出了tee扩展适配的功能:即ta1和ta2与可信算子进行协同计算。
186.相比传统的多方安全计算,摄像设备和后台人脸仓库分别作为数据提供方的同时作为计算参与方,摄像设备和后台人脸仓库需要将人脸数据和后台人脸数据计算后进行加密通信,是一种多方用户通信的密态计算,通信代价较大,计算效率较差。而本技术只需在可信计算节点中对多方用户的数据进行计算,且每个ta只得到的每个用户的部分数据,数据不易泄露,计算效率较高。
187.本技术实施例还提供一种电子设备,包括一个或多个处理器以及一个或多个存储器。该一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行上述相关方法步骤实现上述实施例中的数据安全处理方法。
188.本技术的实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的数据安全处理方法。
189.本技术的实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中电子设备执行的数据安全处理方法。
190.另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中电子设备执行的数据安全处理方法。
191.其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
192.本技术另一实施例提供了一种系统,该系统可以包括上述可信计算节点和上述至少一个用户设备,可以用于实现上述数据安全处理方法。
193.通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
194.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
195.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
196.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
197.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
198.以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1