掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及数据处理领域,尤其涉及一种多方数据安全计算方法、装置、电子设备及存储介质。

背景技术

在多方数据共享与安全的计算场景中,存在多个数据方共同参与,且各个数据方持有不同的敏感数据,为了实现在不知道各个数据方持有数据的前提下,安全地完成计算任务并得到各个数据方输入数据的聚合结果。

通常在多方数据安全的计算中,发起方先通过加密方式将数据的分片分发到其他数据方,各个数据方用自己收到的每个数据分片进行计算,并与其它数据方交换一些数据,将计算结束后的结果发到发起方,发起方将其它数据方返回的计算结果进行聚合。这种计算方法存在数据交换次数多,造成多方数据安全计算的整体性能低的问题。

发明内容

鉴于以上内容,有必要提供一种多方数据安全计算方法,其目的在于解决现有技术中多方数据安全计算的整体性能低的问题。

本发明提供的多方数据安全计算方法,包括:

S1、响应于第一数据方发出的待计算数据的请求,将所述第一数据方持有第一待计算数据划分成预设数量的份额数据,所述预设数量与参与所述请求的数据方的数量一致;

S2、将至少一份份额数据存储至预设的第一数据库,将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方;

S3、接收所述其它数据方发送的份额数据,将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据;

S4、根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果。

可选的,在所述将所述第一数据方持有第一待计算数据划分成预设数量的份额数据之前,该方法还包括:

对获取的所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书。

可选的,所述对获取所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书,包括:

根据预设加密算法、所述随机数生成签名密钥对,所述签名密钥对包括第一私钥和第一公钥;

对所述第一公钥进行签名,得到签名证书、加密证书、加密密钥对数字信封。

可选的,所述将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方,包括:

根据所述其它数据方的加密证书加密所述其它份额数据;

根据所述签名密钥对的第一私钥对所述其它份额数据进行签名,得到所述第一数据方的签名值,将加密后的所述其它份额数据、所述第一数据方的签名值、所述第一数据方的签名证书发送给所述其它数据方。

可选的,所述将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据,包括:

根据所述加密密钥对的第二私钥对所述接收的份额数据进行解密,得到所述接收的份额数据的明文数据;

读取所述接收的份额数据所附带的签名证书,并判断所述签名证书是否存储在所述第一数据方的可信证书列表中;

若是,读取所述第一数据库的份额数据与所述接收的份额数据进行组合,得到所述第一数据方的第一组合数据。

可选的,所述根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,包括:

读取在所述物理主机的加密内存执行环境中运行的软件的输入数据;

对所述输入数据进行预设的加密处理,生成所述物理主机与所述第一数据方之间的第一可信执行环境;

通过所述第一可信执行环境,将所述第一组合数据发送至所述物理主机。

可选的,所述的多方数据安全计算方法,还包括:

在所述第一可信执行环境中,获取所述第一可信执行环境的随机数执行密钥初始化操作,生成所述第一可信执行环境的签名证书、加密证书;

将所述第一可信执行环境的签名证书、加密证书与所述第一数据方的签名证书、加密证书进行交换,分别生成所述第一可信执行环境与所述第一数据方的可信证书列表。

为了解决上述问题,本发明还提供一种多方数据安全计算装置,所述装置包括:

划分模块,用于响应于第一数据方发出的待计算数据的请求,将所述第一数据方持有第一待计算数据划分成预设数量的份额数据,所述预设数量与参与所述请求的数据方的数量一致;

发送模块,用于将至少一份份额数据存储至预设的第一数据库,将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方;

组合模块,用于接收所述其它数据方发送的份额数据,将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据;

交互模块,用于根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果。

为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的多方数据安全计算程序,所述多方数据安全计算程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述多方数据安全计算方法。

为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有多方数据安全计算程序,所述多方数据安全计算程序可被一个或者多个处理器执行,以实现上述多方数据安全计算方法。

相较现有技术,本发明将各方数据方持有的待计算数据划分份额数量,划分成与参与请求的数据方数量相同,将接收的份额数据与数据库的份额数据进行组合,得到各个数据方的组合数据,确保了各个数据方的整个数据不会被泄露,实现对敏感数据在传输过程中的安全保护。

根据物理主机对第一数据方生成的第一可信执行环境,将第一组合数据发送至物理主机,以使物理主机对所述第一组合数据,及对其它数据方通过对应的第二可信执行环境上传给所述物理主机的第二组合数据进行交互计算,得到待计算数据的计算结果。将各个数据方的组合数据通过各自专属的可信执行环境上传至物理主机时,通过多个专属的可信执行环境形成一个闭环的数据传输环境,多方数据安全计算的一体机是一台物理主机,可以在不降低数据安全性的前提下,通过一台物理主机完成多方安全计算,大幅减少数据交互的网络传输耗时,显著提升多方安全计算的整体性能。

附图说明

图1为本发明一实施例提供的多方数据安全计算方法的流程示意图;

图2为本发明一实施例提供的多方数据安全计算装置的模块示意图;

图3为本发明一实施例提供的实现多方数据安全计算方法的电子设备的结构示意图;

本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

本发明提供一种多方数据安全计算方法。参照图1所示,为本发明一实施例提供的多方数据安全计算方法的流程示意图。该方法由电子设备执行。

S1、响应于第一数据方发出的待计算数据的请求,将所述第一数据方持有第一待计算数据划分成预设数量的份额数据,所述预设数量与参与所述请求的数据方的数量一致;

本实施例中,待计算数据的请求是指多个数据方共同参与数据安全计算的请求;参与该待计算数据的请求的数据方至少有三个数据方,第一数据方是指发起该待计算数据的请求的一方;在其它实施例中,请求也可以由其它数据方中任一个数据方来发起,在此不作限定。

响应于第一数据方发出的待计算数据的请求,各个数据方将各自持有的数据进行划分成预设数量的份额数据,各个数据方划分份额数据的数量与参与待计算数据的请求的数据方的数量相同。

例如,有数据方A、B、C三方参与了多方数据安全计算,该多方数据安全计算的待计算数据的请求是关于机器学习计算的,根据预设的多方数据分划的算法将数据方A(第一数据方)持有的数据x_A划分成三份的份额数据,在64位系统中,分解一个64位数据x_A的方法为:因为x_A属于模2

预设的多方数据分划的算法是指32位或64位系统多方数据分划算法,通过多方数据分划的算法将各个数据方持有的数据随机划分成三份份额数据,从而确保每份份额数据具有唯一性。

通过对持有的数据随机划分,即使某些份额数据被泄露后,确保了各个数据方的整个数据不会被破解,实现对敏感数据在传输过程中的安全保护。

在一个实施例中,在所述将所述第一数据方持有第一待计算数据划分成预设数量的份额数据之前,该方法还包括:

对获取的所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书。

在一个实施例中,所述对获取所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书,包括:

根据预设加密算法、所述随机数生成签名密钥对,所述签名密钥对包括第一私钥和第一公钥;

对所述第一公钥进行签名,得到签名证书、加密证书、加密密钥对数字信封。

随机数是在一定范围内随机产生的数,并且得到这个范围内的每一个数的机会一样。通过各个数据方的签名证书、加密证书对传输数据加密处理,确保外部难以窃取传输数据。

根据预设的密码模块对获取的第一数据方的随机数执行密钥初始化操作;预设的密码模块是指国家密码管理局认可的密码模块(例如:硬件密码模块、软件密码模块),也可以采用其它的密码模块,在此不作限定;预设加密算法包括但不限于SM4算法;根据预设加密算法将述第一数据方的随机数生成SM2签名密钥对,第一数据方的签名密钥对包括第一私钥(SignPrivateKey_DataA)、第一公钥(SignCert_DataA);将签名密钥对的第一公钥从预设的密码模块导出,发送到国家密码管理局认可的数字证书认证中心签发签名证书,接收从数字证书认证中心返回签名证书的同时,还会返回加密密钥对数字信封和加密证书。

在一个实施例中,在所述得到签名证书、加密证书、加密密钥对数字信封之后,该方法还包括:

根据所述第一数据方的第一私钥对对所述数字信封进行解密,得到所述第一数据方的加密密钥对,所述加密密钥对包括第二私钥(EncPrivateKey_DataA)、第二公钥(EncCert_DataA)。

根据上述对第一数据方的随机数生成第一数据方的签名证书、加密证书的步骤,获取其它数据方的随机数,根据密码模块的预设加密算法对随机数进行密钥初始化操作,生成各个数据方的签名证书、加密证书。

例如,数据方A、B、C三方持有的密钥和证书,如表1:

表1

在一个实施例中,所述多方数据安全计算方法,该方法还包括:

将各个数据方的证书进行交换,生成各个数据方的可信证书列表并存储至各个数据方的预设的数据库。

例如,将数据方A、B、C的证书进行交换后,生成可信证书列表(例如,可信证书列表包含交换后的密钥和证书),如表2:

表2

将各个数据方的证书生成可信证书列表,并将可信证书列表分别存储至各个数据方的数据库,通过在各个数据方存储有一份可信证书列表,只对在可信证书列表的数据方的请求进行处理,防止不在可信证书列表的用户随意请求数据,可以保证数据的安全并且可以减少系统资源的开支。

S2、将至少一份份额数据存储至预设的第一数据库,将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方;

本实施例中,第一数据方是指发起该待计算数据的请求的一方,其它数据方是指除了第一数据方外的各个数据方,其它数据方的数量至少有两个,其它数据方的具体数量在此不作限定。各个数据方将各自持有的数据划分后,随机选取一份份额数据存储至各自数据方的预设的数据库,将剩余的份额数据发送给参与待计算数据的请求的其它数据方进行交换。

例如,数据方A持有的数据y_A和x_A,数据方B持有的数据x_B,数据方C持有的数据x_C,根据多方数据分划的算法,将数据方A、B、C三方提供的数据,划分后各个数据方持有的份额,如表3:

表3

各个数据方将剩余的份额数据进行加密后,将加密后的剩余的份额数据发送给参与待计算数据的请求的其它数据方。

通过各个数据方保留一份份额数据,即使剩余份额数据在传输中被泄露后,窃取方无法得到完整的数据,即提高破解数据的难度,解决现有技术中分片数据的存储方式不当的问题。

在一个实施例中,所述将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方,包括:

根据所述其它数据方的加密证书加密所述其它份额数据;

根据所述签名密钥对的第一私钥对所述其它份额数据进行签名,得到所述第一数据方的签名值,将加密后的所述其它份额数据、所述第一数据方的签名值、所述第一数据方的签名证书发送给所述其它数据方。各个数据方将剩余的份额数据发送给其它数据方交换时,使用交换方的加密证书对各自的剩余的份额数据进行加密,得到加密后的剩余的份额数据,然后使用本方的签名密钥对的第一私钥对剩余的份额数据进行签名,得到本方的签名值,将加密后的剩余的份额数据、本方的签名值、本方的签名证书发送给需要交换数据的其它数据方。

例如,数据方A将持有数据y_A划分成y_A1_份额数据,y_A2_份额数据,y_A3_份额数据,一共三份份额数据,数据方A将y_A1_份额数据存储至预设的数据库;

当数据方A准备将y_A2_份额数据发送给数据方B时,根据数据方A的可信证书列表,使用数据方B的加密证书对y_A2_份额数据进行加密,得到加密后的y_A2_份额数据,然后利用数据方A的签名密钥对的第一私钥对y_A2_份额数据进行签名,得到数据方A的签名值,最后将加密后的y_A2_份额数据、数据方A的签名值、数据方A的签名证书发送给数据方B,将y_A3_份额数据发送给数据方C时参照上述的方法,其它数据方也参照上述数据方A(第一数据方)加密、签名的方法,得到其它数据方的加密、签名后的份额数据。

S3、接收所述其它数据方发送的份额数据,将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据;

本实施例中,参与待计算数据的请求的其它数据方(除第一数据方外)执行上述S1步骤的划分份额数据后,选取一份份额数据存储至各自数据方的预设的数据库,将各自的剩余的份额数据进行加密、签名并发送其它数据方进行数据交换。

第一数据方在接收到其它数据方交换的份额数据后,将接收的份额数据与第一数据方预先存储在第一数据库的份额数据进行组合,得到第一数据方的第一组合数据;其它数据参照上述得到第一组合数据的方法,得到各自数据方的组合数据。

通过将剩余的份额数据交换后,各个数据方持有的组合数据包含有其它数据方的数据,实现各个数据方的敏感数据分散持有,确保参与多方安全计算的数据的安全性,避免了现有技术中各个数据方将整个数据发送给对方或外部系统,造成数据泄露的问题的发生。

在一个实施例中,所述将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据,包括:

根据所述加密密钥对的第二私钥对所述接收的份额数据进行解密,得到所述接收的份额数据的明文数据;

读取所述接收的份额数据所附带的签名证书,并判断所述签名证书是否存储在所述第一数据方的可信证书列表中;

若是,读取所述第一数据库的份额数据与所述接收的份额数据进行组合,得到所述第一数据方的第一组合数据。

第一数据方在接收到其它数据方交换的份额数据后,使用第一数据方的加密密钥对的第二私钥对接收到的份额数据进行解密,得到接收的份额数据的明文数据,再读取接收到的份额数据所附带的发送方的签名值和发送方的签名证书,判断该签名证书是否存储在第一数据方的可信证书列表中,若该签名证书存储在第一数据方的可信证书列表中,则使用该签名证书对明文数据所附带的签名值验证签名,若验证签名成功则证明双方通信的数据为合法的,将接收的明文数据与第一数据方预先存储在第一数据库的份额数据进行组合并打包在同一文件夹内,得到第一数据方的第一组合数据。其它数据参照上述得到第一组合数据的方法,对接收的份额数据进行解密、验证签名,得到各自数据方的组合数据。

通过对接收的份额数据进行解密和验证签名进行双重保障,可以确保数据在传输过程的安全性。

例如,各个数据方按照多方安全计算的规则互相发送或交换份额数据,在交换完成后各个数据方持有的组合数据,如表4:

表4

S4、根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果。

本实施例中,物理主机是指部署在云端的实体计算机,物理主机为多方安全计算提供实际的硬件环境;通过一台物理主机生成多个独立的、虚拟的可信执行环境,将各个可信执行环境与各个数据方进行关联绑定,生成各个数据方专属的可信执行环境。

例如,物理主机生成可信执行环境A、B、C,将数据方A与可信执行环境A进行关联绑定后,将可信执行环境A作为数据方A专属的第一可信执行环境,即,只有数据方A的管理人员具有使用数据方A的组合数据和可信执行环境A的权限;其它数据方参照上述得到第一数据方的第一可信执行环境的方法,对各个数据方与对应的可信执行环进行关联绑定,得到各自数据方专属的可信执行环境。

各个数据方通过专属的可信执行环境,将各自数据方的组合数据上传至物理主机,通过物理主机的虚拟网卡或网络端口对各个组合数据进行交互计算,得到待计算数据的计算结果。通过可信执行环境形成一个闭环的数据传输环境,确保外部无法窃取数据。

在一个实施例中,所述根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,包括:

读取在所述物理主机的加密内存执行环境中运行的软件的输入数据;

对所述输入数据进行预设的加密处理,生成所述物理主机与所述第一数据方之间的第一可信执行环境;

通过所述第一可信执行环境,将所述第一组合数据发送至所述物理主机。

在一个实施例中,所述对所述输入数据进行预设的加密处理,生成所述物理主机与所述第一数据方之间的第一可信执行环境,包括:

根据物理主机的安全CPU对所述输入数据,生成证明报告;

在所述物理主机的硬件密码模块对所述证明报告验证成功后,生成总线会话密钥;

根据所述证明报告中用户数据中的公钥对所述总线会话密钥进行加密,得到所述总线会话密钥的密文;

将所述硬件密码模块的标识ID和所述总线会话密钥的密文作为密钥授权结果,并将所述密钥授权结果返回至在加密内存执行环境中运行的软件;

根据所述软件的私钥对所述总线会话密钥的密文进行解密,得到解密后的总线会话密钥;

当调用所述硬件密码模块中标识ID对应的密钥时,使用所述解密后的总线会话密钥对调用过程进行保护,形成所述物理主机的可信执行环境;

将所述可信执行环境与所述第一数据方进行关联绑定并作为所述第一数据方的第一可信执行环境。

物理主机的安全CPU为软件提供了加密内存执行环境,加密内存数据的密钥在安全CPU芯片内部随机生成和管理,软件代码无法访问加密内存的密钥。但是安全CPU所提供的密钥管理和服务十分有限,无法满足软件应用对大量密钥的使用需求,需要引入硬件密码模块来满足这些需求。

物理主机的硬件密码模块能在硬件内部完成大量密钥的生成、存储和计算,仅输出密钥的计算结果,保证了密钥的安全,为软件提供了安全完善的密钥管理和服务。

但是现有安全CPU与硬件密码模块之间的关系是松散耦合的,因为存在以下两个安全问题,所以某个加密内存执行环境与硬件密码模块中某个特定密钥之间没有形成“密钥私有专属”的可信执行关系:

1、加密内存执行环境与硬件密码模块之间是通过外部总线(如:PCI总线)来交互数据的,现有安全CPU芯片无法通过硬件加密的方式对外部总线上传输的数据进行加密保护;

2、外部总线上的硬件密码模块是被同一台物理主机上的所有加密内存执行环境所共享使用的。硬件密码模块内部的密钥虽然不会泄露,但能被同一台物理主机上的不同加密内存执行环境调用;

为了解决上面两个问题,本实施例需要构建新的可信执行环境内部的安全机制:

步骤A1:配置硬件密码模块的密钥授权:安全CPU在芯片内部有一个平台背书密钥对(Platform Endorsement Key缩写:PEK),这是一个SM2密钥对,包含私钥(PEK_Private)和公钥(PEK_Public)。PEK是加密内存执行环境平台初始化时在安全CPU芯片内部生成的。安全CPU为每个加密内存执行环境分配了一个唯一的标识ID(Env ID)。安全CPU芯片厂家为安全CPU芯片分配了一个唯一标识ID(Chip ID)。

硬件密码模块在生成密钥(密钥的唯一标识ID为HSMKey ID)时,都必须为该密钥配置使用授权信息(HSMKeyAuth),这些授权信息保存在硬件密码模块内部的安全存储空间中,不能被外部未授权篡改。通过授权信息(HSMKeyAuth)形成了硬件密码模块中某个特定密钥与某块特定安全CPU芯片运行的某个特定加密内存执行环境之间的授权绑定关系。

HSMKeyAuth=(HSMKey ID、Chip ID、Env ID、PEK_Public)。

步骤A2:获取硬件密码模块的密钥授权:运行在加密内存执行环境中的软件在需要调用硬件密码模块内部的密钥时,在加密内存执行环境内部生成总线协商密钥对(BusKey),这是一个SM2密钥对,包含私钥(BusKey_Private)和公钥(BusKey_Public),将公钥(BusKey_Public)作为用户自定义数据构造安全CPU证明的输入数据(ATTESTATION)。

输入数据(ATTESTATION)=(用户自定义数据USER DATA、随机数MNONCE、消息摘要HASH),用户自定义数据USER DATA:HSMKey ID、BusKey_Public;

随机数(MNONCE):软件调用硬件密码模块生成的一次性随机数,该随机数也保存在硬件密码模块的随机数寄存器中,每次生成新的随机数会覆盖随机数寄存器中旧的随机数;

消息摘要HASH:HASH=SM3(USER DATA||MNONCE);

安全CPU根据上面的输入数据(ATTESTATION),生成证明报告(ATTESTATION_Report)。ATTESTATION_Report=(Chip ID、Env ID、USER DATA、MNONCE、Report_Signature);

其中Report_Signature为私钥(PEK_Private)对Chip ID、Env ID、USER DATA、MNONCE的整体SM2签名。

运行在加密内存执行环境中的软件将证明报告(ATTESTATION_Report)发送给硬件密码模块申请HSMKey ID对应密钥的使用权限,硬件密码模块进行以下验证:

根据USER DATA中的HSMKey ID读取自身安全存储空间中的HSMKeyAuth(HSMKeyAuth包括了HSMKeyID、ChipID、EnvID、PEK_Public)。

若读取失败,则验证失败;

使用公钥(PEK_Public)验证证明报告(ATTESTATION_Report)的签名Report_Signature。若验证签名失败,则验证失败;

对比证明报告(ATTESTATION_Report)中的随机数MNONCE是否与自身随机数寄存器中的值相同。若不相同,则验证失败;

对比证明报告(ATTESTATION_Report)中的Chip ID、Env ID是否与HSMKeyAuth中的Chip ID、Env ID相同。若不相同,则验证失败;

若相同,则验证成功。

在上述硬件密码模块对证明报告(ATTESTATION_Report)验证成功后,生成总线会话密钥(BusSessionKey),BusSessionKey是一个SM4对称密钥,使用证明报告(ATTESTATION_Report)中USER DATA的公钥(BusKey_Public)对总线会话密钥(BusSessionKey)进行SM2加密后得到BusSessionKey的密文BusSessionKeyCipher,将HSMKeyID和BusSessionKeyCipher作为密钥授权结果返回给运行在加密内存执行环境中的软件,运行在加密内存执行环境中的软件使用私钥(BusKey_Private)对BusSessionKeyCipher进行SM2解密得到总线会话密钥(BusSessionKey)。

步骤A3:调用硬件密码模块的密钥:运行在加密内存执行环境中的软件获得密钥授权结果后,调用硬件密码模块中HSMKey ID所对应的密钥时便可在总线会话密钥(BusSessionKey)的保护下进行,形成密钥私有专属的可信执行关系。

双方的数据交互使用总线会话密钥(BusSessionKey)进行SM4加密并计算HMAC-SM3进行完整性验证和授权验证。

在一个实施例中,所述多方数据安全计算方法,该方法还包括:

在所述第一可信执行环境中,获取所述第一可信执行环境的随机数执行密钥初始化操作,生成所述第一可信执行环境的签名证书、加密证书;

将所述第一可信执行环境的签名证书、加密证书与所述第一数据方的签名证书、加密证书进行交换,分别生成所述第一可信执行环境与所述第一数据方的可信证书列表。

随机数是在一定范围内随机产生的数,并且得到这个范围内的每一个数的机会一样。可信执行环境可以是指国家密码管理中心认可的可信执行环境(例如,海光CSV可信执行环境),在可信执行环境的CSV虚拟机使用国密SM4硬件引擎加密内存数据,构造出一个安全的TEE可信执行环境,保证主机管理员或其他用户无法访问TEE内的数据,支持启动度量和运行时远程身份认证,保证运行的是合法的用户程序。在可信执行环境的加密内存的密钥由硬件随机数发生器生成,密钥对软件不可见,保证用户的数据安全。

根据预设加密算法(例如,SM4算法),将物理主机在第一可信执行环境中产生的随机数生成第一可信执行环境的SM2签名密钥对,第一可信执行环境的签名密钥对包括第三私钥(SignPrivateKey_TrustA)、第三公钥(SignCert_TrustA);将签名密钥对的第三公钥从可信执行环境导出,发送到国家密码管理局认可的数字证书认证中心签发签名证书,接收从数字证书认证中心返回签名证书的同时,还会返回加密密钥对数字信封和加密证书。

在一个实施例中,所述多方数据安全计算方法,该方法还包括:

根据所述第一可信执行环境的签名密钥对的第三私钥对对所述第一可信执行环境的数字信封进行解密,得到所述第一可信执行环境的加密密钥对,所述加密密钥对包括第四私钥(EncPrivateKey_TrustA)、第四公钥(EncCert_TrustA)。

其它数据方对应的可信执行环境参照上述得到第一可信执行环境生成并持有密钥和证书的方法,得到各自可信执行环境的密钥和证书。

例如,数据方A、B、C分别对应可信执行环境A、B、C,各个可信执行环境生成并持有密钥和证书,如表5:

表5

将物理主机的各个可信执行环境的签名证书、加密证书与数据方A、B、C的签名证书、加密证书进行交换,分别生成可信执行环境A、B、C和数据方A、B、C的可信证书列表,如表6-7:

表6

表7

在生成可信执行环境A、B、C和数据方A、B、C的可信证书列表后,各个可信执行环境将各自的可信证书列表存储至各自数据库,及各个数据方将各自的可信证书列表存储至各自的数据库。

在一个实施例中,在所述将所述第一组合数据发送至所述物理主机之前,该方法还包括:

根据所述第一可信执行环境的加密证书加密所述第一组合数据;

根据所述第一数据方的签名密钥对的第一私钥对所述第一组合数据进行签名,得到所述第一数据方的签名值,将加密后的所述第一组合数据、所述第一数据方的签名值、所述第一数据方的签名证书通过所述第一可信执行环境发送给所述物理主机。

按照上述第一数据方对第一组合数据进行加密和签名的步骤,各个数据方对各自的组合数据进行加密和签名后,通过专属的可信执行环境将加密和签名后的组合数据上传至物理主机。

在一个实施例中,所述以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果,包括:

A10步骤、根据所述物理主机的第一可信执行环境的加密密钥对的第四私钥对所述第一组合数据进行解密,得到所述第一组合数据的明文数据;A20步骤、读取第一组合数据所附带的签名证书,并判断所述签名证书是否存储在所述第一可信执行环境的可信证书列表中,若是,则使用所述签名证书对解密得到的明文数据所附带的签名值进行验证签名,在验证签名成功后,得到所述第一数据方上传的所有份额数据;

A30步骤、重复执行A10-A20步骤,直至得到其它数据方上传的所有份额数据,将得到各个数据方的份额数据进行交互计算,得到所述待计算数据的计算结果。

物理主机接收到各个数据方上传的组合数据后,使用物理主机对应的可信执行环境的加密密钥对的第四私钥对接收的组合数据进行解密,得到该组合数据的明文数据,读取接收的组合数据所附带的发送方的签名值和发送方的签名证书,并判断该签名证书是否存储在对应的可信执行环境的可信证书列表中,若该签名证书存储在对应的可信执行环境的可信证书列表中,则使用该签名证书对解密得到的明文数据进行验证签名,若验证签名成功,则证明双方通信的数据为合法的,将各个组合数据的明文数据进行交互计算,得到待计算数据的计算结果。

通过对各个组合数据进行解密和验证签名进行双重保障,可以确保数据在传输过程的安全性。

其它数据方参照上述得到第一数据方的第一可信执行环境方法,对各个数据方与对应的可信执行环进行关联绑定,得到各自数据方专属的可信执行环境。

例如,数据方A、B、C三方提供的组合数据是关于机器学习计算,则计算完成后各个数据方得到权重(w_share)的份额和偏移b(b_share)的份额作为待计算数据的计算结果,如表8:

/>

表8

在得到计算结果后,根据第一数据方(数据方A)的加密证书加密属于第一数据方的计算结果(计算结果为w_share1,b_share1),根据物理主机的签名密钥对的第三私钥对第一数据方的计算结果进行签名,得到物理主机的签名值,将物理主机的签名值、物理主机的签名证书和加密后的第一数据方的计算结果通过第一可信执行环境发送给第一数据方。其它数据方也参照上述对第一数据方的计算结果的加密、签名的方法,得到其它数据方的加密、签名后的计算结果。

在第一数据方接收到签名和加密后的第一数据方的计算结果后,利用第一数据方加密密钥对的第二私钥对签名和加密后的第一数据方的计算结果进行解密,得到第一数据方的计算结果的明文数据,读取第一数据方的计算结果所附带的物理主机的签名值和物理主机的签名证书,并判断签名证书是否存储在第一数据方的可信证书列表中,若是,则使用该签名证书对解密得到的明文数据所附带的签名值进行验证签名,若验证签名成功,则将计算结果的明文数据作为第一数据方的请求计算结果。其它数据方也参照上述对第一数据方的计算结果进行解密、验证签名,得到其它数据方的请求计算结果。通过对计算结果在发送前进行加密、签名,及接收后进行解密、验证签名,从而确保所有数据在传输过程中的安全性。

通过上述S1-S4步骤,将各方数据方持有的待计算数据划分份额数量,划分成与参与请求的数据方数量相同,确保了各个数据方的整个数据不会被泄露,实现对敏感数据在传输过程中的安全保护。

将各个数据方的组合数据通过各自专属的可信执行环境上传至物理主机时,通过多个专属的可信执行环境形成一个闭环的数据传输环境,确保外部无法窃取数据。

多方数据安全计算的一体机是一台物理主机,可以在不降低数据安全性的前提下,通过一台物理主机完成多方安全计算,大幅减少数据交互的网络传输耗时,显著提升多方安全计算的整体性能。

如图2所示,为本发明一实施例提供的多方数据安全计算装置的模块示意图。

本发明所述多方数据安全计算装置100可以安装于电子设备中。根据实现的功能,所述多方数据安全计算装置100可以包括划分模块110、发送模块120、组合模块130及交互模块140。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。

在本实施例中,关于各模块/单元的功能如下:

划分模块110,用于响应于第一数据方发出的待计算数据的请求,将所述第一数据方持有第一待计算数据划分成预设数量的份额数据,所述预设数量与参与所述请求的数据方的数量一致;

发送模块120,用于将至少一份份额数据存储至预设的第一数据库,将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方;

组合模块130,用于接收所述其它数据方发送的份额数据,将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据;

交互模块140,用于根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果。

在一个实施例中,在所述将所述第一数据方持有第一待计算数据划分成预设数量的份额数据之前,该方法还包括:

对获取的所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书。

在一个实施例中,所述对获取所述第一数据方的随机数执行密钥初始化操作,生成所述第一数据方的签名证书、加密证书,包括:

根据预设加密算法、所述随机数生成签名密钥对,所述签名密钥对包括第一私钥和第一公钥;

对所述第一公钥进行签名,得到签名证书、加密证书、加密密钥对数字信封。

在一个实施例中,所述将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方,包括:

根据所述其它数据方的加密证书加密所述其它份额数据;

根据所述签名密钥对的第一私钥对所述其它份额数据进行签名,得到所述第一数据方的签名值,将加密后的所述其它份额数据、所述第一数据方的签名值、所述第一数据方的签名证书发送给所述其它数据方。

在一个实施例中,所述将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据,包括:

根据所述加密密钥对的第二私钥对所述接收的份额数据进行解密,得到所述接收的份额数据的明文数据;

读取所述接收的份额数据所附带的签名证书,并判断所述签名证书是否存储在所述第一数据方的可信证书列表中;

若是,读取所述第一数据库的份额数据与所述接收的份额数据进行组合,得到所述第一数据方的第一组合数据。

在一个实施例中,所述根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,包括:

读取在所述物理主机的加密内存执行环境中运行的软件的输入数据;

对所述输入数据进行预设的加密处理,生成所述物理主机与所述第一数据方之间的第一可信执行环境;

通过所述第一可信执行环境,将所述第一组合数据发送至所述物理主机。

在一个实施例中,所述的多方数据安全计算方法,还包括:

在所述第一可信执行环境中,获取所述第一可信执行环境的随机数执行密钥初始化操作,生成所述第一可信执行环境的签名证书、加密证书;

将所述第一可信执行环境的签名证书、加密证书与所述第一数据方的签名证书、加密证书进行交换,分别生成所述第一可信执行环境与所述第一数据方的可信证书列表。

如图3所示,为本发明一实施例提供的实现多方数据安全计算方法的电子设备的结构示意图。

在本实施例中,电子设备1包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,该存储器11中存储有多方数据安全计算程序10,所述多方数据安全计算程序10可被所述处理器12执行。图3仅示出了具有组件11-13以及多方数据安全计算程序10的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

其中,存储器11包括内存及至少一种类型的可读存储介质。内存为电子设备1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是电子设备1的内部存储单元;在另一些实施例中,该非易失性存储介质也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于电子设备1的操作系统和各类应用软件,例如存储本发明一实施例中的多方数据安全计算程序10的代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子设备1的总体操作,例如执行与其他设备进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行多方数据安全计算程序10等。

网络接口13可包括无线网络接口或有线网络接口,该网络接口13用于在所述电子设备1与终端(图中未画出)之间建立通信连接。

可选的,所述电子设备1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

所述电子设备1中的所述存储器11存储的多方数据安全计算程序10是多个指令的组合,在所述处理器12中运行时,可以实现:

S1、响应于第一数据方发出的待计算数据的请求,将所述第一数据方持有第一待计算数据划分成预设数量的份额数据,所述预设数量与参与所述请求的数据方的数量一致;

S2、将至少一份份额数据存储至预设的第一数据库,将其它份额数据发送给参与所述请求的除了所述第一数据方外的其它数据方;

S3、接收所述其它数据方发送的份额数据,将所述接收的份额数据与所述第一数据库的份额数据进行组合,得到所述第一数据方的第一组合数据;

S4、根据预设的物理主机对所述第一数据方生成的第一可信执行环境,将所述第一组合数据发送至所述物理主机,以使所述物理主机对所述第一组合数据,及对所述其它数据方通过对应的可信执行环境上传给所述物理主机对应的组合数据进行交互计算,得到所述待计算数据的计算结果。

具体地,所述处理器12对上述多方数据安全计算程序10的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。

进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以是非易失性的,也可以是非易失性的。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。

所述计算机可读存储介质上存储有多方数据安全计算程序10,所述多方数据安全计算程序10可被一个或者多个处理器执行,本发明计算机可读存储介质具体实施方式与上述多方数据安全计算方法各实施例基本相同,在此不作赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。

因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。

此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

技术分类

06120115927478