基于FPGA硬件的安全计算方法和装置与流程

文档序号:21550693发布日期:2020-07-21 10:58阅读:276来源:国知局
基于FPGA硬件的安全计算方法和装置与流程

本说明书实施例涉及数据处理方法,更具体地,涉及fpga硬件的初始化方法和装置、fpga硬件的更新方法和装置以及基于fpga硬件的数据处理方法和装置。



背景技术:

随着大数据、人工智能等新技术的发展,多方数据融合方面的需求越来越多,数据隐私保护变得越来越重要。例如,在一种情况中,第一方数据需要传到第二方服务器上以与第二方数据一起训练计算模型,在该情况中,第一方会担心他们的数据是否被第二方存盘后用于其它目的。sgx技术就是为了满足这种需求而开发的一种技术,其将各方的用户数据圈在cpu中的一块“飞地(enclave)”中,从硬件层面保证数据不被其它黑客程序盗走,而且提供了完善的认证机制防止使用者的任意一方盗取其他方的数据。但这种机制本身的安全性、可信度需要通过英特尔公司的服务进行保障。

因此,需要一种更有效的安全计算方案,以保障各方数据安全。



技术实现要素:

本说明书实施例旨在提供一种更有效的安全计算方案,以解决现有技术中的不足。

为实现上述目的,本说明书一个方面提供一种初始化fpga硬件以用于安全计算的方法,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述方法在所述fpga硬件端执行,包括:

获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括至少一个初始密钥,并且所述首版配置文件中包括由所述至少一个密钥各自的密钥所属方共同确定的预定运行逻辑,其中,所述至少一个初始密钥是所述安全计算的各个参与方各自的初始密钥,或者所述至少一个初始密钥是所述安全计算的预定数目的可信管理方各自的初始密钥;以及

基于所述首版配置文件重新配置所述fpga芯片。

在一个实施例中,所述fpga硬件通过pcie总线与服务器连接,其中,获取被存入所述第一存储器中的首版配置文件包括,获取由所述服务器通过pcie总线写入所述第一存储器的首版配置文件。

在一个实施例中,所述首版配置文件通过由各个所述密钥所属方同时在所述fpga硬件所在现场共同监督而生成并提供,以使得所述首版配置文件中包括的任一方的初始密钥只对该方自身可见,并使得所述首版配置文件不可篡改。

本说明书另一方面提供一种初始化fpga硬件以用于安全计算的方法,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述fpga芯片中包括熔丝存储器,其中,所述熔丝存储器中预先存储有至少一个第一密钥,其中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述方法在所述fpga硬件端执行,包括:

获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括由所述至少一个第一密钥各自的密钥所属方共同确定的预定运行逻辑;以及

基于所述首版配置文件重新配置所述fpga芯片。

在一个实施例中,所述可信管理方为所述安全计算的一个参与方。

本说明书另一方面提供一种更新用于安全计算的fpga硬件的方法,所述fpga硬件中存储有至少一个第一密钥,其中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述第一存储器中存储有第一配置文件,所述第一配置文件包括由所述至少一个第一密钥各自的密钥所属方共同确定的第一运行逻辑,所述fpga芯片当前基于所述第一配置文件而配置,所述方法在所述fpga硬件端执行,包括:

获取加密文件,其中,所述加密文件通过各个所述密钥所属方中的至少一方以第一预定顺序依次加密而获取,其中,第一次加密的加密对象包括第二配置文件,所述第二配置文件包括由所述至少一个第一密钥各自的密钥所属方共同确定的第二运行逻辑;

使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件,并将其存入所述第一存储器中,其中,所述第二预定顺序与所述第一预定顺序相对应,所述工作密钥基于相应一方的第一密钥获取;以及

基于所述第二配置文件重新配置所述fpga芯片。

在一个实施例中,所述第一次加密通过由所述至少一个第一密钥各自的密钥所属方共同监督而完成,以保证所述第二配置文件不被篡改。

在一个实施例中,所述第一次加密的加密对象还包括所述第二配置文件的代码哈希值,其中,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件包括,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件及其代码哈希值,所述方法还包括,在获取所述第二配置文件及其代码哈希值之后,通过所述代码哈希值对所述第二配置文件进行校验。

在一个实施例中,所述工作密钥为相应的一方的第一密钥。

在一个实施例中,所述至少一方中包括第一方,所述fpga硬件基于以下步骤获取所述第一方的工作密钥:

获取所述第一方的加密的工作密钥;以及

使用所述第一方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

在一个实施例中,所述工作密钥在所述fpga硬件断电时被消除。

在一个实施例中,所述工作密钥定期更新。

在一个实施例中,所述fpga芯片中还包括熔丝存储器,其中,各个所述第一密钥被存储在所述熔丝存储器中。

在一个实施例中,各个所述第一密钥被存储在所述第一存储器中。

在一个实施例中,所述加密文件的加密对象还包括所述至少一个第一密钥各自的密钥所属方各自的第二密钥,其中,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密包括,使用所述至少一个第一密钥各自的密钥所属方各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取第二配置文件,并在每次解密时获取相应的密钥所属方的第二密钥,所述方法还包括,在每次解密时获取相应的密钥所属方的第二密钥之后,将该第二密钥存储在所述第一存储器中,以作为相应的密钥所属方的更新的第一密钥。

在一个实施例中,所述fpga芯片具有其自身的硬件密钥,其中,将该第二密钥存储在所述第一存储器中包括,通过所述fpga芯片使用其自身的硬件密钥对该第二密钥加密,以及,将该加密的第二密钥存入所述第一存储器。

在一个实施例中,所述第一密钥为存储在所述第一存储器中的第一配置文件中包括的初始密钥,其中,所述第一配置文件为用于初始化所述fpga硬件以用于安全计算的配置文件,其中,所述第一密钥通过所述第一配置文件被存入所述fpga芯片的逻辑电路内。

本说明书另一方面提供一种基于fpga硬件的数据处理方法,所述fpga硬件用于安全计算,其中,所述fpga硬件中存储有至少一个第一密钥,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,其中,所述fpga硬件中包括fpga芯片,所述fpga芯片基于由所述至少一个第一密钥各自的密钥所属方共同确定的运行逻辑而配置,所述方法在所述fpga硬件端执行,包括:

获取所述各个参与方各自的加密数据;

使用所述各个参与方各自的工作密钥对相应的所述加密数据解密,以获取各方的明文数据,所述各个参与方各自的工作密钥分别基于所述至少一个第一密钥中相应的第一密钥获取;

基于所述各方的明文数据进行计算,以获取计算结果;以及

输出所述计算结果。

在一个实施例中,所述加密数据通过对称加密获取,所述各个参与方包括第一方,其中,输出所述计算结果包括,使用所述第一方的工作密钥对所述计算结果加密,以获取第一加密结果;以及输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述加密数据通过非对称加密获取,所述工作密钥是所述非对称加密的解密密钥,所述非对称加密还包括与所述工作密钥对应的加密密钥,所述各个参与方包括第一方,其中,所述第一方的加密密钥基于与所述第一方相应的第一密钥获取,其中,输出所述计算结果包括,使用所述第一方的加密密钥对所述计算结果加密,以获取第一加密结果;以及输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,所述fpga硬件中还存储有所述各个参与方各自的第二密钥,所述加密数据通过非对称加密获取,所述各个参与方包括第一方,其中,所述第一方的工作密钥为所述第一密钥,所述第一方的第二密钥为与所述第一方的第一密钥对应的用于加密的密钥,其中,输出所述计算结果包括,使用所述第一方的第二密钥对所述计算结果加密,以获取第一加密结果;以及输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述各个参与方中包括第一方,所述预定数目的可信管理方中包括第一管理方,其中,所述第一管理方与所述第一方相对应,所述fpga硬件基于如下步骤获取所述第一方的工作密钥:

获取所述第一方的加密的工作密钥,所述加密的工作密钥通过由所述第一管理方使用其第一密钥对第一方的工作密钥加密而生成,其中,所述第一方的工作密钥由所述第一管理方从所述第一方接收;以及

使用所述第一管理方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

本说明书另一方面提供一种初始化fpga硬件以用于安全计算的装置,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述装置部署在所述fpga硬件端,包括:

获取单元,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括至少一个初始密钥,并且所述首版配置文件中包括由所述至少一个密钥各自的密钥所属方共同确定的预定运行逻辑,其中,所述至少一个初始密钥是所述安全计算的各个参与方各自的初始密钥,或者所述至少一个初始密钥是所述安全计算的预定数目的可信管理方各自的初始密钥;以及

配置单元,配置为,基于所述首版配置文件重新配置所述fpga芯片。

在一个实施例中,所述fpga硬件通过pcie总线与服务器连接,其中,所述获取单元还配置为,获取由所述服务器通过pcie总线写入所述第一存储器的首版配置文件。

在一个实施例中,所述首版配置文件通过由各个所述密钥所属方同时在所述fpga硬件所在现场共同监督而生成并提供,以使得所述首版配置文件中包括的任一方的初始密钥只对该方自身可见,并使得所述首版配置文件不可篡改。

本说明书另一方面提供一种初始化fpga硬件以用于安全计算的装置,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述fpga芯片中包括熔丝存储器,其中,所述熔丝存储器中预先存储有至少一个第一密钥,其中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括由所述至少一个第一密钥各自的密钥所属方共同确定的预定运行逻辑;以及

配置单元,配置为,基于所述首版配置文件重新配置所述fpga芯片。

在一个实施例中,所述可信管理方为所述安全计算的一个参与方。

本说明书另一方面提供一种更新用于安全计算的fpga硬件的装置,所述fpga硬件中存储有至少一个第一密钥,其中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述第一存储器中存储有第一配置文件,所述第一配置文件包括由所述至少一个第一密钥各自的密钥所属方共同确定的第一运行逻辑,所述fpga芯片当前基于所述第一配置文件而配置,所述fpga硬件中存储有所述各个参与方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元,配置为,获取加密文件,其中,所述加密文件通过各个所述密钥所属方中的至少一方以第一预定顺序依次加密而获取,其中,第一次加密的加密对象包括第二配置文件,所述第二配置文件包括由所述至少一个第一密钥各自的密钥所属方共同确定的第二运行逻辑;

解密单元,配置为,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件,并将其存入所述第一存储器中,其中,所述第二预定顺序与所述第一预定顺序相对应,所述工作密钥基于相应一方的第一密钥获取;以及

配置单元,配置为,基于所述第二配置文件重新配置所述fpga芯片。

在一个实施例中,所述第一次加密通过由所述至少一个第一密钥各自的密钥所属方共同监督而完成,以保证所述第二配置文件不被篡改。

在一个实施例中,所述第一次加密的加密对象还包括所述第二配置文件的代码哈希值,其中,所述解密单元还配置为,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件及其代码哈希值,所述装置还包括,校验单元,配置为,在获取所述第二配置文件及其代码哈希值之后,通过所述代码哈希值对所述第二配置文件进行校验。

在一个实施例中,所述工作密钥为相应的一方的第一密钥。

在一个实施例中,所述至少一方中包括第一方,所述fpga硬件基于密钥协商装置获取所述第一方的工作密钥,所述密钥协商装置包括:

获取单元,配置为,获取所述第一方的加密的工作密钥;以及

解密单元,配置为,使用所述第一方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

在一个实施例中,所述工作密钥在所述fpga硬件断电时被消除。

在一个实施例中,所述工作密钥定期更新。

在一个实施例中,所述fpga芯片中还包括熔丝存储器,其中,各个所述第一密钥被存储在所述熔丝存储器中。

在一个实施例中,各个所述第一密钥被存储在所述第一存储器中。

在一个实施例中,所述加密文件的加密对象还包括所述至少一个第一密钥各自的密钥所属方各自的第二密钥,其中,所述解密单元还配置为,使用所述至少一个第一密钥各自的密钥所属方各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取第二配置文件,并在每次解密时获取相应的密钥所属方的第二密钥,所述装置还包括,存储单元,配置为,在每次解密时获取相应的密钥所属方的第二密钥之后,将该第二密钥存储在所述第一存储器中,以作为相应的密钥所属方的更新的第一密钥。

在一个实施例中,所述fpga芯片具有其自身的硬件密钥,其中,所述存储单元包括,加密子单元,配置为,通过所述fpga芯片使用其自身的硬件密钥对该第二密钥加密,以及,存储子单元,配置为,将该加密的第二密钥存入所述第一存储器。

在一个实施例中,所述第一密钥为存储在所述第一存储器中的第一配置文件中包括的初始密钥,其中,所述第一配置文件为用于初始化所述fpga硬件以用于安全计算的配置文件,其中,所述第一密钥通过所述第一配置文件被存入所述fpga芯片的逻辑电路内。

本说明书另一方面提供一种基于fpga硬件的数据处理装置,所述fpga硬件用于安全计算,其中,所述fpga硬件中存储有至少一个第一密钥,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,或者所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,其中,所述fpga硬件中包括fpga芯片,所述fpga芯片基于由所述至少一个第一密钥各自的密钥所属方共同确定的运行逻辑而配置,所述装置部署在所述fpga硬件端,包括:

获取单元,配置为,获取所述各个参与方各自的加密数据;

解密单元,配置为,使用所述各个参与方各自的工作密钥对相应的所述加密数据解密,以获取各方的明文数据,所述各个参与方各自的工作密钥分别基于所述至少一个第一密钥中相应的第一密钥获取;

计算单元,配置为,基于所述各方的明文数据进行计算,以获取计算结果;以及

输出单元,配置为,输出所述计算结果。

在一个实施例中,所述加密数据通过对称加密获取,所述各个参与方包括第一方,其中,所述输出单元包括,加密子单元,配置为,使用所述第一方的工作密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元,配置为,输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述加密数据通过非对称加密获取,所述工作密钥是所述非对称加密的解密密钥,所述非对称加密还包括与所述工作密钥对应的加密密钥,所述各个参与方包括第一方,其中,所述第一方的加密密钥基于与所述第一方相应的第一密钥获取,其中,所述输出单元包括,加密子单元,配置为,使用所述第一方的加密密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元,配置为,输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述至少一个第一密钥是所述安全计算的各个参与方各自的第一密钥,所述fpga硬件中还存储有所述各个参与方各自的第二密钥,所述加密数据通过非对称加密获取,所述各个参与方包括第一方,其中,所述第一方的工作密钥为所述第一密钥,所述第一方的第二密钥为与所述第一方的第一密钥对应的用于加密的密钥,其中,所述输出单元包括,加密子单元,配置为,使用所述第一方的第二密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元,配置为输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述至少一个第一密钥是所述安全计算的预定数目的可信管理方各自的第一密钥,所述各个参与方中包括第一方,所述预定数目的可信管理方中包括第一管理方,所述fpga硬件通过密钥协商装置获取所述第一方的工作密钥,其中,所述第一管理方与所述第一方相对应,所述密钥协商装置包括:

获取单元,配置为,获取所述第一方的加密的工作密钥,所述加密的工作密钥通过由所述第一管理方使用其第一密钥对第一方的工作密钥加密而生成,其中,所述第一方的工作密钥由所述第一管理方从所述第一方接收;以及

解密单元,配置为,使用所述第一管理方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一种方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一种方法。

通过根据本说明书实施例的基于fpga硬件的安全计算方案,提高了安全计算的安全性、更新灵活性,为安全计算的参与方提高了更多的便利性。

附图说明

通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:

图1示出了根据本说明书实施例的多方安全计算的场景示意图;

图2示出根据本说明书实施例的初始化fpga硬件以用于安全计算的示意过程;

图3示出根据本说明书另一实施例的初始化fpga硬件的示意过程;

图4示出根据本说明书另一实施例的初始化fpga硬件以用于安全计算的方法示意图;

图5示出根据本说明书实施例的初始化fpga硬件以用于安全计算的方法示意图;

图6示出根据本说明书实施例的更新fpga硬件的示意过程;

图7示意示出包括a方、b方和c方的第二密钥的加密文件示意图;

图8示意示出了使得fpga硬件获取工作密钥的密钥协商过程;

图9示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的方法示意图;

图10示出了根据本说明书实施例的基于fpga硬件的数据处理方法示意图;

图11示出一种基于fpga硬件的数据处理方法示意图;

图12示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1200;

图13示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1300;

图14示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1400;

图15示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1500;

图16示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的装置1600;

图17示出根据本说明书实施例的密钥协商装置1700;

图18示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的装置1800;

图19示出根据本说明书实施例的一种基于fpga硬件的数据处理装置1900;

图20示出根据本说明书实施例的一种基于fpga硬件的数据处理装置2000。

具体实施方式

下面将结合附图描述本说明书实施例。

图1示出了根据本说明书实施例的多方安全计算的场景示意图。如图中所示,在该场景中包括fpga硬件11、服务器12、以及第一方13和第二方14。其中,fpga硬件11例如通过pcie总线与服务器12连接,其中第一方13和第二方14分别为多方安全计算的参与方。fpga硬件11中包括fpga芯片、第一存储器(图中flash)和第二存储器(图中ddr),其中,第一存储器为非易失性存储器,其例如为flash,第二存储器为内存,其例如为ddr内存。可以理解,图中虽然只示出了多方安全计算的两个参与方,本说明书实施例不限于此,所述多方安全计算中可包括至少一个参与方,例如可包括一个参与方,也可以包括两个以上的参与方。另外,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。

第一方13和第二方14通过安全的方式将其各自的密钥内置到fpga硬件中,以使得在该过程中各方的密钥只对其自身可见,而不会泄露给任意其他方。同时,第一方13和第二方14将其共同制定的明文的首版配置文件(例如bit文件)存入flash中,以配置fpga芯片,并使得在该过程中保证该首版配置文件不被篡改。在如上所述部署首版bit文件之后,第一方13和第二方14可将加密的新版bit文件远程传送给服务器12,并由服务器12存入fpga硬件中的ddr中。所述加密的新版bit文件由所述第一方和所述第二方依次加密,从而保证了该新版bit文件的不可篡改。在获取新版bit文件之后,fpga芯片可基于首版bit文件中的运行逻辑,使用预置的各方的密钥对所述加密的新版bit文件进行解密,以获取该新版bit文件,并将该新版bit文件存入flash中。从而,fpga芯片可基于该新版bit文件进行配置,从而基于新版bit文件中的运行逻辑进行工作。同时,第一方13和第二方14可在所述加密的新版bit文件中包括其各自的更新的密钥,从而更新在fpga硬件中预置的各方的密钥。

通过在fpga硬件中预置第一方和第二方各自的密钥,第一方和第二方可分别基于其密钥向fpga硬件传入各自的工作密钥。在例如第一方对fpga输入数据时,第一方可使用其工作密钥对其数据进行加密并传入fpga硬件,fpga硬件可利用预先获取的第一方的工作密钥对加密的数据进行解密,以获取明文数据。通过类似地方法,fpga硬件可获取第二方的明文数据,并基于第一方和第二方双方的数据进行计算,而同时保证了第一方和第二方的数据不会被除其自身以外的任意其他方获取,从而保证了多方计算的数据安全性。

下面具体描述上述的基于fpga硬件的安全计算方案。

图2示出根据本说明书实施例的初始化fpga硬件以用于安全计算的示意过程。所述fpga硬件例如为如图1中所示的fpga硬件,包括fpga芯片和与fpga芯片连接的第一存储器,该第一存储器为非易失性存储器,其例如为flash存储器。在执行图2所示过程之前,该第一存储器中当前存储有初始配置文件,例如该fpga硬件的原厂bit文件,所述fpga芯片当前基于该初始配置文件中的运行逻辑配置,即基于该原厂bit文件被编程。可以理解,所述初始配置文件不限于原厂bit文件,例如,其可以为其它可用于对fpga芯片进行编程的文件,例如bin文件,或者,其可以为非原厂bit文件的中间bit文件,只要该配置文件可以使得该fpga芯片当前提供特定接口、及通过该接口的存储功能即可。该fpga硬件例如如图1中所示通过pcie总线与服务器连接,可以理解,所述fpga硬件不限于通过pcie总线与服务器连接,还可以通过其它接口,例如网口,只要其可通过fpga芯片的配置文件进行配置即可。

如图2所示,在步骤s202,在所述fpga硬件端获取首版配置文件。例如,服务器通过pcie总线将首版配置文件写入第一存储器中。该首版配置文件为所述安全计算的各个参与方共同制定的第一版bit文件,由于在原厂bit文件中不包括对新存入文件进行解密的逻辑,因此,该第一版bit文件只能以明文的形式存入第一存储器中。从而,在一个实施例中,可由所述安全计算的多个参与方在fpga所在的现场中共同生成该bit文件,并共同将该bit文件写入第一存储器,以确保该第一版bit文件的安全性。具体是,可首先由所述多个参与方中的任一方基于预定运行逻辑生成第一版bit文件的编程程序(如hdl代码),并将该编程程序带到fpga所在的现场,其中,所述预定运行逻辑由所述多个参与方共同制定。在所述现场,所述多个参与方中的其他方在分别核验该编程程序无误之后,可分别提供自己的密钥文件,以供该编程程序调用,以使得在所述编程程序中包括各个参与方各自的初始密钥,同时使得该初始密钥对除密钥提供方以外的任一方不可见,从而保证各个初始密钥的安全性。之后,在各个参与方的共同监督下,可通过软件(例如vivado软件)将所述包括各方初始密钥的程序转换为第一版bit文件,并将该第一版bit文件通过fpga所在服务器存入所述fpga硬件的第一存储器中,以确保该bit文件不被任何一方修改,同时,确保所述各个初始密钥不泄露给除密钥提供方的任一方。

所述初始密钥可以是用于进行对称加密的密钥,即,该密钥既可以进行解密也可以进行加密。或者,所述初始密钥可以是非对称加密的解密密钥。或者,所述初始密钥可包括非对称加密的解密密钥和加密密钥。

在一个实施例中,可通过可信权威方执行上述对首版配置文件的写入,该权威方例如为服务器提供者或者平台管理员。具体是,多个参与方可将经过共同确认的编程程序提供给该权威方,并分别将各自的初始密钥提供给权威方,从而,权威方通过在编程程序中加入各方的初始密钥之后,将该编程程序转换为第一版bit文件,并通过服务器将该第一版bit文件写入fpga硬件的第一存储器中。

在一个实施例中,所述fpga硬件所连接的服务器是可信任的服务器,从而所述多个参与方可在其在现场共同监督下在该服务器中执行对第一版bit文件的生成,该服务器在所述多个参与方生成第一版bit文件的过程中提供对其中的程序、数据、密钥的保护,从而使得将第一版bit文件安全存入第一存储器中,同时确保该第一版bit文件及其中的密钥不会被恶意软件、或恶意他人获取。

在一个实施例中,所述fpga硬件所连接的服务器是不可信任的服务器,所述多个参与方可到达现场在该多方共同监督下在其共同确定的可信任的计算机上执行对第一版bit文件的生成,并一起将该生成的第一版bit文件通过服务器写入第一存储器中,同时确保该第一版bit文件未被另行保存或另行传输等等。

如上文所述,第一版bit文件的编程程序对应于用于所述fpga芯片的预定运行逻辑,该预定运行逻辑限定了所述fpga芯片在预定情况下的预定行为。例如,该预定运行逻辑中包括向服务器提供用于更新bit文件的api和用于进行数据处理的api,通过限定fpga芯片仅提供例如上述api,从而防止了服务器通过其它方式对fpga硬件内部的访问,保障了fpga硬件内部数据的安全性。该预定运行逻辑还包括fpga芯片的接口逻辑,例如通过该接口逻辑将fpga芯片的接口编程为pcie总线接口。该预定运行逻辑中还包括用于更新bit文件的逻辑,例如,在服务器调用用于更新bit文件的api、并通过pcie总线向fpga硬件中写入加密bit文件之后,根据用于更新bit文件的逻辑,fpga芯片可根据其中的解密逻辑对该加密bit文件进行解密,以获取bit文件,并根据预定逻辑进行bit文件的更新。该预定运行逻辑中还包括数据处理逻辑,以在安全计算的各个参与方在通过服务器调用数据处理api、并向fpga硬件输入数据之后,fpga硬件以预定的数据处理逻辑基于所述数据进行计算,以获取计算结果。

在步骤s204,在所述fpga硬件中,基于所述第一存储器中的首版配置文件(第一版bit文件),重新配置所述fpga芯片。也就是说,基于第一版bit文件对应的编程程序,对所述fpga芯片内部重新编程,从而使得所述fpga芯片基于所述第一版bit文件对应的运行逻辑工作。其中,由于第一版bit文件中包括各个参与方各自的初始密钥,在基于第一版bit文件重新配置fpga芯片之后,第一版bit文件中包括的初始密钥被写入fpga芯片的逻辑电路中,即,被存储在fpga芯片中的寄存器或sram(静态随机存取存储器)等中。

图3示出根据本说明书另一实施例的初始化fpga硬件的示意过程,该fpga硬件与图2所示相同的是,其也包括fpga芯片和与芯片连接的第一存储器,该第一存储器为非易失性存储器,并且第一存储器中存储有初始配置文件,该fpga硬件在当前(即在实施图3所示方法之前)基于所述初始配置文件中的运行逻辑配置。并且,图3所示的fpga硬件同样地通过例如pcie总线与服务器连接。图3所示的fpga硬件与图2所示不同在于,在fpga芯片中还包括熔丝存储器(efuse),所述熔丝存储器为一次性可编程存储器。

如图3所示,所述efuse中预存有所述安全计算的各个参与方各自的第一密钥。在一个实施例中,可通过由安全计算的各个参与方一起到达该fpga所在地共同生成用于烧写熔丝存储器的bit文件,以在该bit文件中分别加入各方的第一密钥,同时使得该第一密钥只对其提供方可见,而不会泄露给除密钥提供方以外的任何一方。在一个实施例中,也可通过可信权威方进行对熔丝存储器的烧写,例如,所述可信权威方是服务器提供方,安全计算的各个参与方通过将各自的第一密钥提供给该权威方,从而通过该权威方完成对fpga芯片的内置第一密钥的过程。由于熔丝存储器只能进行一次烧写,因此该第一密钥在内置在fpga芯片中之后将不可更改,其可作为各个参与方的根密钥。在一个实施例中,可通过例如jtag接口向熔丝存储器中直接写入各个第一密钥,并在写入之后禁用jtag接口,以保证fpga硬件的安全性。

在步骤s302,在fpga硬件端获取被存入第一存储器中的首版配置文件。例如,由服务器向第一存储器中存入首版配置文件。该首版配置文件与图2中所示的首版配置文件基本相同,所不同的是,该首版配置文件中仅包括各个参与方共同制定的预定运行逻辑,而不包括各方的密钥。通过当前fpga芯片中的上述用于烧写熔丝存储器的bit文件中的运行逻辑,可由服务器向第一存储器中存入第一版bit文件。同样地,由于该第一版bit文件非加密文件,因此,可通过由各个参与方都到达fpga所在地共同监督,而将该第一版bit文件写入第一存储器中,从而保证该第一版bit文件不被篡改。

在步骤s304,在所述fpga硬件中,基于上述首版配置文件,重新配置所述fpga芯片。也即基于该第一版bit文件对fpga芯片重新编程,以使得fpga芯片基于该第一版bit文件的运行逻辑工作。其中,该第一版bit文件中的运行逻辑与图2中的第一版bit文件的运行逻辑类似,例如包括接口逻辑、用于更新bit文件的逻辑、用于进行数据处理的逻辑等等。

图4示出根据本说明书另一实施例的初始化fpga硬件以用于安全计算的方法示意图,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述方法在所述fpga硬件端执行,包括以下步骤。

当安全计算的参与方较多时,图2和图3所示的方法将难于操作,或者操作时间过长,在该情况中,可通过与图2所示类似的初始化方法向fpga硬件中内置预定数目的可信管理方各自的密钥。所述可信管理方例如为权威机构,或者为密钥管理基础设施(keymanagementinfrastruscture)、或者为提供服务的权威平台等等。例如,在所述安全计算的参与方中的包括自身为权威机构的参与方的情况中,则所述可信管理方有可能是所述安全计算的多个参与方中的一个参与方。在置入可信管理方的密钥的情况中,可由所述预定数目的管理方确定用于初始化的首版bit文件、以及后续的更新bit文件,并可通过管理方的密钥使得fpga硬件获取各个参与方的工作密钥,以用于后续的数据处理。

参考图4,在步骤s402,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述安全计算的预定数目的可信管理方各自的初始密钥,并且所述首版配置文件中包括所述各个管理方共同确定的预定运行逻辑。

图4所示方法与图2所示方法不同在于,在所述首版配置文件中包括可信管理方的初始密钥,并且该首版配置文件中的运行逻辑是由各个管理方共同确定的。所述可信管理方根据对安全性的要求可以预定为一个,也可以为多个,可信管理方的数目越多,安全性越高。所述可信管理方例如可以为权威机构,如银行、政府部分等。所述预定运行逻辑可以通过第三方提供,由所述可信管理方认可而确定,或者可由安全计算的参与方提供并经可信管理方认可,或者由所述可信管理方自身制定。

与图2所示方法类似地,所述各个管理方在向首版配置文件中提供各自的初始密钥时,可以同时到达fpga所在现场共同监督,从而使得各个管理方各自的密钥不被除其自身以外的任何一方获取,同时使得该首版配置文件不被篡改。

在步骤s404,基于所述首版配置文件重新配置所述fpga芯片。该步骤与图2和图3中的配置步骤类似地实施,在此不再赘述。

图5示出根据本说明书实施例的初始化fpga硬件以用于安全计算的方法示意图,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述fpga芯片中包括熔丝存储器,所述熔丝存储器中预存有所述安全计算的预定数目的可信管理方各自的第一密钥,所述方法在所述fpga硬件端执行,包括:

在步骤s502,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述各个管理方共同确定的预定运行逻辑;以及

在步骤s504,基于所述首版配置文件重新配置所述fpga芯片。

在图5中所示的方法中,除了向efuse中内置的密钥是各个管理方的密钥之外,与图3中各个步骤的实施基本相同,在此不再赘述。

图6示出根据本说明书实施例的更新fpga硬件的示意过程。该过程在fpga硬件端执行。在执行图6所示方法之前,所述fpga硬件包括用于安全计算的fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器。所述第一存储器中当前存储有配置文件,可将该当前存储的配置文件表示为第一配置文件,所述第一配置文件包括所述各个参与方共同制定的第一运行逻辑,所述fpga芯片当前基于所述第一运行逻辑而配置。所述第一配置文件例如可以为图2或图3中所示的第一版bit文件,或者也可以为之前通过图6所示的该方法更新的bit文件等等,其都包括通过各个参与方共同制定的运行逻辑。第一运行逻辑中例如对服务器提供用于更新配置文件的api,服务器在调用该api之后,fpga芯片中开始运行用于更新配置文件的相关逻辑,从而开始执行图6所示的方法。

另外,所述硬件中存储有所述安全计算的各个参与方各自的密钥,可将硬件中当前存储的各个参与方的密钥都表示为第一密钥。在一个实施例中,所述第一配置文件为图2中所示的首版bit文件,因此,所述首版bit文件中包括所述第一密钥,从而通过将首版bit文件烧写入fpga芯片中,从而将所述各个第一密钥写入fpga芯片的逻辑电路中,即所述第一密钥被存储在所述fpga芯片的逻辑电路中。在一个实施例中,所述第一配置文件例如也是通过图6所示的方法更新的bit文件,在该情况中,所述各个第一密钥可被存储在所述第一存储器中。在一个实施例中,所述第一配置文件例如为图3中所示的第一版bit文件,在该情况中,如上文所述,所述各个第一密钥被存储在所述fpga芯片中的熔丝存储器中。

如图6所示,在步骤s602,由fpga硬件端获取加密文件,即在fpga硬件端获取由服务器向fpga硬件存入的加密文件。所述加密文件通过所述各个参与方中的至少一方以第一预定顺序依次加密而获取,其中,第一次加密的加密对象包括第二配置文件,所述第二配置文件包括所述各个参与方共同制定的第二运行逻辑。

在一个实施例中,全部所述各个参与方通过以预定顺序使用其各自的密钥对第二配置文件依次加密,从而获取所述加密文件,并通过服务器将该加密文件存入fpga硬件中。所述预定顺序为预先确定好,并且在第一配置文件中也包括与该预定顺序相对应的解密逻辑。该第二配置文件与第一配置文件类似,也是通过各个参与方共同制定的一种运行逻辑,其中的接口逻辑、配置文件更新逻辑等可与第一配置文件中相同或类似,其中例如包括更新的数据处理逻辑。例如,所述数据处理逻辑例如对应于一种神经网络模型,各个参与方可能会根据模型训练结果更新该神经网络模型的参数,从而,可通过在第二配置文件中包括对应于更新模型的更新的数据处理逻辑,进行对fpga硬件中的计算模型的更新。在一个实施例中,第二配置文件中的用于更新配置文件的逻辑中包括的对加密文件的解密逻辑可设置为与第一配置文件中不同。

所述各个参与方可如上文所述同时到达现场执行该过程,也可通过视频监控而远程进行该过程。在所述各个参与方中的例如a方对第二配置文件进行第一次加密时,a方首先使用相应的编程程序生成第二配置文件,并使用a方的密钥对第二配置文件进行加密。由于a方对明文数据进行相关处理,为了防止a方对编程程序或第二配置文件进行篡改,可由所述安全计算的其他参与方在a方进行上述操作时通过视频共同监控。例如,在各个参与方共同确定了相应的编程程序之后,每个参与方本地都拥有一份相同的编程程序,每个参与方都可以获取该编程程序的哈希代码值、及该编程程序对应的第二配置文件、及第二编程程序的哈希代码值。a方在转换编程程序之前,可通过软件计算该编程程序的代码哈希值,并同时由其他参与方共同视频监控该计算过程,在通过视频监控共同确定该代码哈希值无误之后,a方将该编程程序转换为第二配置文件,并同样地计算该第二配置文件的代码哈希值,并同样地由其他参与方共同确定该第二配置文件无误。在经过上述确认过程之后,a方在其他参与方的共同视频监控下,通过加密软件使用自身的密钥(如第一密钥)对该第二配置文件进行加密,从而获取第二配置文件的经第一次加密的文件。a方然后将该第一次加密的加密文件发送给所述多个参与方中的例如b方,b方使用其密钥对经第一次加密的文件进行第二次加密,以获取第二配置文件的经两次加密的加密文件。然后b方再将经两次加密的加密文件发送给所述参与方中的例如c方,c方进行与b方相同的操作。直到各个参与方都使用自己的密钥进行一次加密之后,最后获取最终的加密文件。所述参与方中的进行最后一次加密的例如e方将加密文件发送给服务器,从而由服务器将加密文件存入fpga硬件中。

在一个实施例中,a方在计算了第二配置文件的哈希代码值之后,在其他参与方的视频监控下,对第二配置文件及其哈希代码值进行打包加密,以用于后续fpga硬件对第二配置文件的校验。

可以理解,上文中,虽然描述了通过全部参与方分别进行加密从而获取加密文件,本说明书实施例并不限于此,例如,可仅通过全部参与方中的约定好的一方(例如a方)对第二配置文件进行加密,以获取加密文件,并由该方将经过一次加密的加密文件发送给服务器。或者可通过所述参与方中的两方或三方进行依次加密等等。其中,对第二配置文件的加密次数越多,该第二配置文件越不容易被破解,从而安全性越高。

在一个实施例中,所述加密文件是通过全部参与方依次进行加密获取的,并且,所述加密文件中还包括各个参与方的更新的密钥(下文中称为第二密钥)。图7示意示出包括a方、b方和c方的第二密钥的加密文件示意图。如图7所示,所述多个参与方中的例如a方可例如使用其第一密钥(ak1)或其当前的工作密钥对第二配置文件(bit2)和其自身的第二密钥(ak2)进行打包加密,并经第一次加密的加密文件发送给例如b方。b方可例如使用其第一密钥(bk1)对第一次加密的加密文件和b方的第二密钥(bk2)进行打包加密,从而获取经两次加密的加密文件,并将该经两次加密的加密文件发送给c方,c方类似地使用其第一密钥(ck1)对收到的加密文件和其第二密钥(ck2)进行打包加密。各个参与方在类似地都进行加密之后,获取最终的加密文件,该最终的加密文件中包括各方的第二密钥,从而以用于后续的对各个第一密钥的更新。在该过程中,a方也可以对第二配置文件、其哈希代码值及a方的第二密钥进行打包加密并发送给b方。

例如,所示fpga硬件中包括与所述fpga芯片连接的第二存储器,该第二存储器例如为ddr,则服务器可例如通过pcie总线将所述加密文件存入所述ddr中。可以理解,所述加密文件不限于被存入第二存储器中,例如其也可以被存入第一存储器中,另外,所述第二存储器不限于为ddr,而可以为任何形式的适用的存储器。

在图6中的步骤s604,在所述fpga硬件中,通过所述fpga芯片中的当前更新逻辑,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件解密,以获取所述第二配置文件,其中,所述第二预定顺序与所述第一预定顺序相对应,所述工作密钥基于相应一方的第一密钥获取。

所述fpga芯片中的当前运行逻辑为第一配置文件中包括的第一运行逻辑,该第一运行逻辑中包括在更新配置文件时的更新逻辑。在服务器调用用于更新配置文件的api之后,fpga芯片基于该更新逻辑工作。所述更新逻辑中包括对加密文件进行解密的逻辑,该逻辑例如包括使用所述至少一方各自的工作密钥,以预定顺序对该加密文件依次解密。该预定顺序与所述至少一方对第二配置文件依次加密时的顺序是相对应的,例如,在加密时,通过a方、b方和c方通过其各自的密钥对第二配置文件进行依次加密,则该解密逻辑对应于通过c方、b方和a方各自的相应的工作密钥对加密文件进行依次解密,从而可获取第二配置文件。

在一个实施例中,各方的工作密钥为所述fpga硬件中存储的各方的第一密钥。所述加密例如为对称加密,例如,a方使用其第一密钥首先进行加密,然后b方使用其第一密钥进行加密,之后c方使用其第一密钥进行加密。从而,fpga硬件在获取该加密文件之后,基于预定更新逻辑,使用硬件中存储的c方第一密钥、b方第一密钥和a方第一密钥对加密文件依次解密,从而可获取第二配置文件。可以理解,所述加密也可以为非对称加密,在该情况中,a方、b方和c方可使用其各自的与其第一密钥相应的加密密钥进行加密,从而使得在解密时使用相应的第一密钥依次解密。

在一个实施例中,各方的工作密钥基于相应方的第一密钥另外获取。图8示意示出了使得fpga硬件获取工作密钥的密钥协商过程。如图8所示,fpga硬件基于以下步骤获取所述多个参与方中的例如a方的工作密钥:在步骤s802,获取a方的加密的工作密钥,例如,a方通过其第一密钥对其工作密钥进行加密,并通过服务器将该加密的工作密钥存入fpga硬件中,例如存入ddr中,从而使得fpga硬件获取a方的加密的工作密钥。在该情况中,在fpga芯片的更新逻辑中还包括获取工作密钥的逻辑,该逻辑使得在fpga芯片中,在步骤s804,通过使用a方的第一密钥对该加密的工作密钥进行解密,从而获取a方的工作密钥。在fpga芯片获取各方的工作密钥之后,可将该工作密钥存储在fpga芯片内部,该工作密钥在断电时会被自动清除,从而保证了安全性。另外,该工作密钥可通过定时执行上述密钥协商方法而定时更新,从而保证安全性。在所述至少一方都与fpga硬件协商了工作密钥之后,所述至少一方可使用其各自的工作密钥对第二配置文件进行依次加密,以使得fpga芯片在后续可通过所述至少一份各自的工作密钥对加密文件进行依次解密。可以理解,这里对第二配置文件的加密方式也可以为非对称加密,在该情况中,所述至少一方可使用其各自的与工作密钥对应的加密密钥对第二配置文件进行依次加密。

在步骤s606,将所述第二配置文件存入第一存储器中。fpga芯片在对加密文件解密获取第二配置文件之后,可将该第二配置文件直接存入第一存储器中,或者,可如图6所示,将该第二配置文件存入ddr中,并从ddr中将该第二配置文件存入第一存储器中。

在一个实施例中,所述加密文件为对第二配置文件及其哈希代码值进行打包加密所获取的加密文件,fpga芯片在如上所述对加密文件解密之后,获取第二配置文件及其代码哈希值,fpga芯片使用该代码哈希值对第二配置文件进行校验,在校验通过之后,将第二配置文件存入第一存储器中。

在一个实施例中,加密文件中还包括所述安全计算的各个参与方各自的第二密钥。例如,加密文件为如图7所示的加密文件,在该情况中,在首先通过c方的工作密钥对该解密文件进行第一次解密时,获取c方的第二密钥,在通过b方的工作密钥进行第二次解密时,获取b方的第二密钥,在通过a方的工作密钥进行第三次解密时,获取a方的第二密钥和第二配置文件。之后,fpga芯片将第二配置文件存入第一存储器中,并将a方、b方和c方各自的第二密钥都存入第一存储器中,作为更新的第一密钥。可以理解,第一密钥不限于通过上述方式进行更新,例如,也可以通过上述获取工作密钥的方式,通过a方、b方和c方分别与fpga芯片进行密钥协商,从而在fpga硬件中分别获取各方的第二密钥,并由fpga芯片将各个第二密钥存入第一存储器中作为更新的第一密钥。

在一个实施例中,fpga硬件中还存储有其自身的硬件密钥,例如,在熔丝存储器中还存储有硬件密钥,fpga芯片将上述获取的第二密钥存入第一存储器之前,还使用其自身的硬件密钥对该第二密钥进行加密,并将加密后的第二密钥存入第一存储器中,以提高安全性。fpga芯片在需要使用第二密钥时,从第一存储器读取加密的第二密钥,并使用自身的硬件密钥对该加密的第二密钥进行解密,从而获取第二密钥。

在步骤s608,基于所述第二配置文件重新配置所述fpga芯片。也即基于该第二配置文件对fpga芯片重新编程,以使得fpga芯片基于该第二配置文件的运行逻辑工作。其中,该第二配置文件例如包括接口逻辑、用于更新bit文件的更新的逻辑、用于进行数据处理的更新的逻辑等等,从而实施对fpga硬件的更新。

图9示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的方法示意图,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述第一存储器中存储有第一配置文件,所述第一配置文件包括所述安全计算的预定数目的可信管理方共同确定的第一运行逻辑,所述fpga芯片当前基于所述第一配置文件而配置,所述fpga硬件中存储有所述预定数目的可信管理方各自的第一密钥,所述方法在所述fpga硬件端执行,包括:

在步骤s902,获取加密文件,其中,所述加密文件通过所述预定数目的可信管理方中至少一个管理方以第一预定顺序依次加密而获取,其中,所述加密的加密对象包括第二配置文件,所述第二配置文件包括所述预定数目的可信管理方共同确定的第二运行逻辑;

在步骤s904,使用所述至少一个管理方各自的工作密钥以第二预定顺序对所述加密文件解密,以获取所述第二配置文件,其中,所述第二预定顺序与所述第一预定顺序相对应,其中,所述至少一个管理方各自的工作密钥基于所述至少一个管理方各自的第一密钥获取;

在步骤s906,将所述第二配置文件存入所述第一存储器中;以及

在步骤s908,基于所述第二配置文件重新配置所述fpga芯片。

图9所示方法与图6所示方法中各个步骤的具体实施基本相同,不同在于,所述fpga硬件中存储的是各个管理方的第一密钥,第一配置文件和第二配置文件也是由各个管理方共同确定的,在更新配置文件时,由预定数目的管理方中的至少一个管理方对第二配置文件进行依次加密。同样地,在对第二配置文件进行第一次加密时,可通过由其他管理方共同监督进行。

与图6所示方法类似地,在所述加密文件中可包括各个管理方的第二密钥,从而可在更新配置文件的同时,更新各个管理方的内置的第一密钥。除上述不同之处之外,图6所示的各个步骤的具体实施都可以相应地应用于图9所示的各个步骤中,在此不一一赘述。

图10示出了根据本说明书实施例的基于fpga硬件的数据处理方法示意图。在图10中,椭圆框用于表示方法步骤,矩形框用于表示相关的数据。所述fpga硬件包括用于安全计算的fpga芯片,所述fpga芯片基于所述安全计算的各个参与方共同制定的运行逻辑而配置,其中,所述硬件中存储有所述各个参与方各自的第一密钥。所述fpga硬件例如为通过图2、图3或图6中任一方法所获取的fpga硬件。通过图2、图3或图6所示的方法,形成的fpga硬件构成了可信执行环境(tee),可用于进行安全计算。所述方法在所述fpga硬件端执行。

如图10所示,在步骤s1002,获取所述各个参与方各自的加密数据。图10中还示意示出了所述各个参与方中的一方(例如a方)服务器中对输入数据的处理。例如a方在通过如图8所示方法利用其第一密钥与fpga硬件协商了工作密钥之后,a方可首先使用该工作密钥对其输入数据进行对称加密,以获取加密数据,并将该加密数据通过服务器输入fpga硬件,例如将加密数据存入ddr中或fpga芯片内部。其中,所述工作密钥可与上文参考图5所述的工作密钥相同或者不同,类似地,该工作密钥可被存储在所述fpga芯片内部,从而在fpga硬件断电时被消除,或者该工作密钥可定期更新。在该情况中,服务器例如通过调用fpga硬件的数据处理api,而进行对加密数据的输入,以使得fpga芯片使用与数据处理相对应的逻辑进行工作。

可以理解,在上文中,a方虽然通过对称加密的方式对输入数据进行加密,本说明书实施例不限于此,例如,a方可通过图8所示的方法与fpga硬件协商用于非对称加密的一对密钥,例如,该对密钥包括用于解密的工作密钥和对应的加密密钥。在该情况中,a方可使用加密密钥对其输入数据进行加密,以获取加密数据,并将加密数据通过服务器输入fpga硬件。

在步骤s1004,使用所述各个参与方各自的工作密钥对相应的所述加密数据解密,以获取各方的明文数据。例如,fpga硬件在获取a方的加密数据之后,使用a方的工作密钥对该加密数据进行解密,从而获取a方的明文数据。类似地,fpga硬件可获取各个参与方的明文数据。

在步骤s1006,基于所述各方的明文数据进行计算,以获取计算结果。如上文所述,在服务器调用数据处理api之后,所述fpga芯片中使用与数据处理相对应的逻辑进行工作,其中包括与用于处理数据的计算模型对应的逻辑。因此,在fpga芯片获取各方的明文数据之后,将各方的明文数据代入相应的计算模型中进行计算,从而获取计算结果。

在步骤s1008,输出计算结果。

在一个实施例中,计算结果不是敏感数据,不需要进行保护,在该情况中,fpga硬件可向服务器直接输出明文的计算结果,并通过服务器将该计算结果发送给各个参与方。所述fpga硬件例如可通过pcie总线将计算结果写入服务器中的相应地址中,从而向服务器输出计算结果。

在一个实施例中,如图10中所示,在获取计算结果之后,在fpga芯片中使用例如a方的工作密钥对该计算结果加密,以获取加密结果,并将该加密结果输出给服务器,并由服务器将该加密结果发送给a方。a方在获取该加密结果之后,可使用其工作密钥对加密结果进行解密,从而获取明文的计算结果。所述安全计算的其他参与方可与a方类似地获取明文的计算结果。

在一个实施例中,对输入数据的加密方式为非对称加密方式,例如,在a方中,通过上述加密密钥对输入数据进行加密。在该情况中,fpga硬件可通过图8所示的密钥协商方法基于a方的第一密钥从a方获取该加密密钥。从而,在fpga芯片中,在获取计算结果之后,使用所述加密密钥对计算结果进行加密,以获取加密结果,并将该加密结果通过服务器发送给a方。a方在接收该加密结果之后,可使用其工作密钥对加密结果进行解密,从而获取明文的计算结果。

在一个实施例中,上述工作密钥为相应方的第一密钥。在对称加密的情况中,在fpga芯片获取计算结果之后,例如使用a方的第一密钥对该计算结果进行加密,并将加密结果输出给服务器,以使得服务器将该加密结果发送给a方。a方在获取加密结果之后,可使用其第一密钥对加密结果进行解密,从而获取明文计算结果。其他各方可与a方类似地获取计算结果。在非对称加密的情况中,所述各个参与方可在初始化fpga硬件时就在fpga硬件中内置入对应的第一密钥和第二密钥,并在后续更新配置文件时更新第一密钥和第二密钥,其中第一密钥为解密密钥,第二密钥为加密密钥。从而,fpga芯片在获取计算结果之后,可使用第二密钥对计算结果进行加密并输出。

图11示出一种基于fpga硬件的数据处理方法示意图,所述fpga硬件用于安全计算、并包括fpga芯片,所述fpga芯片基于所述安全计算的预定数目的可信管理方方共同确定的运行逻辑而配置,其中,所述fpga硬件中存储有所述预定数目的可信管理方各自的第一密钥。该fpga硬件例如为通过图4、图5或图9所示的方法配置的fpga硬件,该硬件构成相对于各个可信管理方的可信执行环境(tee)。所述方法在所述fpga硬件端执行,包括:

在步骤s1102,获取所述各个参与方各自的加密数据;

在步骤s1104,使用所述各个参与方各自的工作密钥对相应的所述加密数据解密,以获取各方的明文数据,所述各个参与方各自的工作密钥分别基于相应的所述可信管理方的第一密钥获取;

在步骤s1106,基于所述各方的明文数据进行计算,以获取计算结果;以及

在步骤s1108,输出所述计算结果。

该方法与图10所示方法不同在于,fpga硬件通过与相应的可信管理方协商密钥而获取相应的参与方的工作密钥。例如,所述参与方中包括第一方,所述预定数目的可信管理方中包括第一管理方,第一方可能选择通过第一管理方与fpga硬件协商密钥,即,第一方与第一管理方相对于。因此,第一方将自己的工作密钥提供给第一管理方,从而使得第一管理方基于下述密钥协商过程与fpga硬件协商密钥,使得fpga硬件内部获取第一方的该工作密钥。另外,在该方法中,可由各个可信管理方共同监督该数据处理过程,以使得各个参与方的数据、及计算结果不被所述可信管理方中的任一方获取。与图10所示方法类似地,在输出计算结果时,可通过参与方的工作密钥对计算结果进行加密,该加密可以为对称加密或者非对称加密。其中,在非对称加密的情况中,fpga硬件同样地通过相应管理方的第一密钥获取参与方的加密密钥。

在一个实施例中,所述各个参与方中包括第一方,所述预定数目的可信管理方中包括第一管理方,其中,第一方与第一管理方相对于,所述fpga硬件基于与图8类似的如下步骤获取所述第一方的工作密钥:

获取所述第一方的加密的工作密钥,所述加密的工作密钥通过由所述第一管理方使用其第一密钥对第一方的工作密钥加密而生成,其中,所述第一方的工作密钥由所述第一管理方从所述第一方接收;以及

使用所述第一管理方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

通过在fpga硬件中内置可信管理方的密钥,并由可信管理方向用户提供安全计算的服务,使得可通过fpga硬件向多组用户提供多次安全计算服务,另外,在fpga硬件的配置过程、及在通过fpga硬件的数据处理过程中,通过由预定数目的可信管理方共同参与、共同监督,提供了高安全性和可靠性。

在一个实施例中,各个管理方也可以通过图8所示的密钥协商方法获取其各自的工作密钥,并使用其自身的工作密钥帮助各个参与方获取参与方的工作密钥。

图12示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1200,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述装置部署在所述fpga硬件端,包括:

获取单元121,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述安全计算的各个参与方各自的初始密钥,并且所述首版配置文件中包括所述各个参与方共同制定的预定运行逻辑;以及

配置单元122,配置为,基于所述首版配置文件重新配置所述fpga芯片。

在一个实施例中,所述fpga硬件通过pcie总线与服务器连接,其中,所述获取单元121还配置为,获取由所述服务器通过pcie总线写入所述第一存储器的首版配置文件。

图13示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1300,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述fpga芯片中包括熔丝存储器,所述熔丝存储器中预存有所述安全计算的各个参与方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元131,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述各个参与方共同制定的预定运行逻辑;以及

配置单元132,配置为,基于所述首版配置文件重新配置所述fpga芯片。

图14示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1400,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述装置部署在所述fpga硬件端,包括:

获取单元141,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述安全计算的预定数目的可信管理方各自的初始密钥,并且所述首版配置文件中包括所述各个管理方共同确定的预定运行逻辑;以及

配置单元142,配置为,基于所述首版配置文件重新配置所述fpga芯片。

图15示出根据本说明书实施例的一种初始化fpga硬件以用于安全计算的装置1500,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述fpga芯片基于所述第一存储器中当前存储的配置文件配置,所述fpga芯片中包括熔丝存储器,所述熔丝存储器中预存有所述安全计算的预定数目的可信管理方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元151,配置为,获取被存入所述第一存储器中的首版配置文件,其中,所述首版配置文件中包括所述各个管理方共同确定的预定运行逻辑;以及

配置单元152,配置为,基于所述首版配置文件重新配置所述fpga芯片。

图16示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的装置1600,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述第一存储器中存储有第一配置文件,所述第一配置文件包括所述安全计算的各个参与方共同制定的第一运行逻辑,所述fpga芯片当前基于所述第一配置文件而配置,所述fpga硬件中存储有所述各个参与方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元161,配置为,获取加密文件,其中,所述加密文件通过所述各个参与方中至少一方以第一预定顺序依次加密而获取,其中,第一次加密的加密对象包括第二配置文件,所述第二配置文件包括所述各个参与方共同制定的第二运行逻辑;

解密单元162,配置为,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件,并将其存入所述第一存储器中,其中,所述第二预定顺序与所述第一预定顺序相对应,所述工作密钥基于相应一方的第一密钥获取;以及

配置单元163,配置为,基于所述第二配置文件重新配置所述fpga芯片。

在一个实施例中,所述第一次加密的加密对象还包括所述第二配置文件的代码哈希值,其中,所述解密单元162还配置为,使用所述至少一方的各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取所述第二配置文件及其代码哈希值,所述装置还包括,校验单元164,配置为,在获取所述第二配置文件及其代码哈希值之后,通过所述代码哈希值对所述第二配置文件进行校验。

在一个实施例中,所述加密文件的加密对象还包括各个参与方各自的第二密钥,其中,所述解密单元162还配置为,使用所述各个参与方各自的工作密钥以第二预定顺序对所述加密文件依次解密,以获取第二配置文件,并在每次解密时获取相应的参与方的第二密钥,所述装置还包括,存储单元165,配置为,在每次解密时获取相应的参与方的第二密钥之后,将该第二密钥存储在所述第一存储器中,以作为相应的参与方的更新的第一密钥。

在一个实施例中,所述fpga芯片具有其自身的硬件密钥,其中,所述存储单元165包括,加密子单元1651,配置为,通过所述fpga芯片使用其自身的硬件密钥对该第二密钥加密,以及,存储子单元1652,配置为,将该加密的第二密钥存入所述第一存储器。

在一个实施例中,所述各个参与方中包括第一方,所述fpga硬件基于密钥协商装置获取所述第一方的工作密钥,图17示出根据本说明书实施例的密钥协商装置1700,包括:

获取单元171,配置为,获取所述第一方的加密的工作密钥;以及

解密单元172,配置为,使用所述第一方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

图18示出根据本说明书实施例的一种更新用于安全计算的fpga硬件的装置1800,所述fpga硬件包括fpga芯片、和与所述fpga芯片连接的第一存储器,所述第一存储器为非易失性存储器,所述第一存储器中存储有第一配置文件,所述第一配置文件包括所述安全计算的预定数目的可信管理方共同确定的第一运行逻辑,所述fpga芯片当前基于所述第一配置文件而配置,所述fpga硬件中存储有所述预定数目的可信管理方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元181,配置为,获取加密文件,其中,所述加密文件通过所述预定数目的可信管理方中至少一个管理方以第一预定顺序依次加密而获取,其中,所述加密的加密对象包括第二配置文件,所述第二配置文件包括所述预定数目的可信管理方共同确定的第二运行逻辑;

解密单元182,配置为,使用所述至少一个管理方各自的工作密钥以第二预定顺序对所述加密文件解密,以获取所述第二配置文件,并将其存入所述第一存储器中,其中,所述第二预定顺序与所述第一预定顺序相对应,其中,所述至少一个管理方各自的工作密钥基于所述至少一个管理方各自的第一密钥获取;以及

配置单元183,配置为,基于所述第二配置文件重新配置所述fpga芯片。

图19示出根据本说明书实施例的一种基于fpga硬件的数据处理装置1900,所述fpga硬件用于安全计算、并包括fpga芯片,所述fpga芯片基于所述安全计算的各个参与方共同制定的运行逻辑而配置,其中,所述fpga硬件中存储有所述各个参与方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元191,配置为,获取所述各个参与方各自的加密数据;

解密单元192,配置为,使用所述各个参与方各自的第一工作密钥对相应的所述加密数据解密,以获取各方的明文数据,所述第一工作密钥基于相应参与方的第一密钥获取;

计算单元193,配置为,基于所述各方的明文数据进行计算,以获取计算结果;以及

输出单元194,配置为,输出所述计算结果。

在一个实施例中,所述加密数据通过对称加密获取,所述各个参与方包括第一方,其中,所述输出单元194包括,加密子单元1941,配置为,使用所述第一方的工作密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元1942,配置为,输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述加密数据通过非对称加密获取,所述工作密钥是所述非对称加密的解密密钥,所述非对称加密还包括与所述工作密钥对应的加密密钥,所述各个参与方包括第一方,其中,所述第一方的加密密钥基于所述第一方的第一密钥获取,其中,所述输出单元194包括,加密子单元1941,配置为,使用所述第一方的加密密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元1942,配置为,输出用于发送给所述第一方的第一加密结果。

在一个实施例中,所述fpga硬件中还存储有所述各个参与方各自的第二密钥,所述加密数据通过非对称加密获取,所述各个参与方包括第一方,其中,所述第一方的工作密钥为所述第一密钥,所述第一方的第二密钥为与所述第一方的第一密钥对应的用于加密的密钥,其中,所述输出单元194包括,加密子单元1941,配置为,使用所述第一方的第二密钥对所述计算结果加密,以获取第一加密结果;以及输出子单元1942,配置为输出用于发送给所述第一方的第一加密结果。

图20示出根据本说明书实施例的一种基于fpga硬件的数据处理装置2000,所述fpga硬件用于安全计算、并包括fpga芯片,所述fpga芯片基于所述安全计算的预定数目的可信管理方方共同确定的运行逻辑而配置,其中,所述fpga硬件中存储有所述预定数目的可信管理方各自的第一密钥,所述装置部署在所述fpga硬件端,包括:

获取单元201,配置为,获取所述各个参与方各自的加密数据;

解密单元202,配置为,使用所述各个参与方各自的工作密钥对相应的所述加密数据解密,以获取各方的明文数据,所述各个参与方各自的工作密钥分别基于相应的所述可信管理方的第一密钥获取;

计算单元203,配置为,基于所述各方的明文数据进行计算,以获取计算结果;以及

输出单元204,配置为,输出所述计算结果。

在一个实施例中,所述各个参与方中包括第一方,所述预定数目的可信管理方中包括第一管理方,所述fpga硬件通过与图17所示类似的密钥协商装置获取所述第一方的工作密钥,所述密钥协商装置包括:

获取单元,配置为,获取所述第一方的加密的工作密钥,所述加密的工作密钥通过由所述第一管理方使用其第一密钥对第一方的工作密钥加密而生成,其中,所述第一方的工作密钥由所述第一管理方从所述第一方接收;以及

解密单元,配置为,使用所述第一管理方的第一密钥对所述加密的工作密钥解密,以获取所述第一方的工作密钥。

本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一种方法。

本说明书另一方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一种方法。

通过根据本说明书实施例的基于fpga硬件的安全计算方案,通过采用fpga硬件构建安全计算环境,杜绝了黑客软件窃取用户隐私的可能性;通过采用fpga硬件,安全计算的各个参与方可自己制定运行代码,提供了较大的安全性;通过采用fpga硬件,可灵活地更新运算逻辑可以被重构,从而可支持用户的各种算法及算法更新;通过在fpga硬件中内置密钥作为信任根,并且该内置密钥可更新,提高了安全性;在配置所述pfga硬件中,除了第一版安全bit文件没有被加密,后续版本都需要经过各方加密,避免了bit文件被单方面篡改的风险;在配置所述pfga硬件的过程中,除了第一版安全bit文件需要各方到场部署,其它的加密版本均可远程进行升级,提高了运维的便利性;在fpga硬件中,通过内置密钥来协商工作密钥,该工作密钥在断电后需要重新协商,进一步提高了安全性;另外,通过使用该fpga硬件进行安全计算,各个参与方分别对其输入数据加密,加密数据只在fpga内部被解密用于明文计算,fpga硬件的输出结果也可加密输出,通过硬件保证期间任何服务器上的软件都无法获取用户数据,充分保护了用户隐私。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执轨道,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执轨道的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1