用于区块链网络的密钥生成方法、签名方法、存储介质、计算设备与流程

文档序号:18010785发布日期:2019-06-26 00:02阅读:144来源:国知局
用于区块链网络的密钥生成方法、签名方法、存储介质、计算设备与流程

本发明涉及区块链技术领域,具体地涉及一种用于区块链网络的密钥生成方法、签名方法、存储介质、计算设备。



背景技术:

区块链是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。区块链技术包括以块结构存储数据,使用密码学保证传输和访问安全等,其能够实现数据一致性存储、反篡改、去中心的技术体系。

根据现有的区块链系统,区块链由所有参加的区块链节点共同维护,每一个参与维护的区块链节点都可以获得一份区块链数据(可简称为数据)的完整拷贝并独立进行验证。具体地,每一个区块链节点都拥有一个节点密钥(可简称为密钥),当一笔交易在一个区块链节点上执行时,该区块链节点会对该交易进行签名,签名使用的密钥即为该区块链节点的密钥。区块链节点对于交易的签名确保了交易在执行环节的可靠性。



技术实现要素:

本发明的实施例提供了一种用于区块链网络的密钥生成方法、签名方法、存储介质、计算设备。

本发明实施例的第一方面提供一种用于区块链网络的密钥生成方法,包括:a.在区块链管理客户端本地生成区块链节点的第一密钥,所述区块链管理客户端的计算环境包括可信计算环境;b.在所述可信计算环境中,使用第二密钥对所述第一密钥进行加密处理,以生成第三密钥,其中,所述第二密钥预存于与所述区块链管理客户端相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取;c.将所述第三密钥发送至与所述区块链管理客户端相关联的baas平台;d.将所述密钥管理程序发送至所述baas平台。

本实施例所述方案将区块链节点的密钥封装在安全的密钥数据文件中,能够确保密钥本身的安全性,提高区块链节点的密钥的安全系数,降低密钥被盗风险。具体地,区块链管理客户端仅发送第三密钥至baas平台,所述区块链节点的密钥(也可称为第一密钥)本身不会在区块链管理客户端、baas平台和区块链节点之间传输,从而最大限度地保护区块链节点的密钥。进一步地,在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥进行加密处理,由于第二密钥仅能被运行于可信计算环境的密钥管理程序读取,使得确保外界无法直接获得第一密钥,从而降低区块链节点被冒用的风险。所述外界可以是除区块链管理客户端和所述区块链节点外的第三方。

本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:a.在区块链管理客户端本地生成区块链节点的第一密钥,所述区块链管理客户端的计算环境包括可信计算环境;b.在所述可信计算环境中,使用第二密钥对所述第一密钥进行加密处理,以生成第三密钥,其中,所述第二密钥预存于与所述区块链管理客户端相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取;c.将所述第三密钥发送至与所述区块链管理客户端相关联的baas平台;d.将所述密钥管理程序发送至所述baas平台。

本发明实施例还提供一种用于区块链网络的签名方法,包括:a.获取待签名的数据;b.自baas平台获取第三密钥,所述第三密钥是在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥加密处理得到的,所述第二密钥预存于与所述区块链节点相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取,所述密钥管理程序获取自所述baas平台;c.使用所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥,其中,所述区块链节点的计算环境包括可信计算环境,所述解密处理的操作是在所述区块链节点的可信计算环境中进行的;d.在所述区块链节点的可信计算环境中,使用所述第一密钥对所述待签名的数据进行签名。

本实施例所述方案将使用密钥进行签名的运算逻辑运行在区块链节点的可信计算环境中,能够确保签名运算过程中的安全性,同时确保存储于区块链上的数据的安全性。具体地,对待签名的数据进行签名的操作是在区块链节点的可信计算环境中进行的,且用于对待签名的数据进行签名的区块链节点的密钥是预先被处理过的、仅能在可信计算环境中被使用的,降低区块链节点的密钥被盗取的风险,使得他人无法伪造区块链节点处理区块链上的数据,从而达到提高数据安全性的效果。其中,作为区块链节点的密钥的第一密钥仅能在区块链管理客户端的可信计算环境和区块链节点的可信计算环境中被使用。

本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:a.获取待签名的数据;b.自baas平台获取第三密钥,所述第三密钥是在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥加密处理得到的,所述第二密钥预存于与所述区块链节点相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取,所述密钥管理程序获取自所述baas平台;c.使用所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥,其中,所述区块链节点的计算环境包括可信计算环境,所述解密处理的操作是在所述区块链节点的可信计算环境中进行的;d.在所述区块链节点的可信计算环境中,使用所述第一密钥对所述待签名的数据进行签名。

本发明实施例还提供一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述方法的步骤。

附图说明

图1是本发明实施例的一种用于区块链网络的密钥生成方法的流程图;

图2是图1中步骤b的一个具体实施方式的流程图;

图3是本发明实施例的一个典型的应用场景的示意图;

图4是本发明实施例的另一个典型的应用场景的示意图;

图5是本发明实施例的一种用于区块链网络的签名方法的流程图;

图6是图5中步骤c的一个具体实施方式的流程图;

图7是本发明实施例的又一个典型的应用场景的示意图。

具体实施方式

本申请发明人经过分析发现,现有的区块链系统中,缺乏对区块链节点的密钥的有效保护,严重影响区块链网络中数据的安全性。

具体而言,现有区块链节点的密钥是明文存储在区块链节点的磁盘里的,在区块链节点服务启动时,从磁盘加载密钥到内存,然后每次交易时,使用密钥对交易进行签名。

现有区块链节点的密钥是明文存储在区块链节点上的,对于密钥的保护主要依赖于操作系统的用户权限机制。但是,如果该区块链节点的根用户(root)的权限被盗取或泄漏,则不法分子可以轻易的获取到该区块链节点的密钥。

一旦区块链节点的密钥被他人获取,也就意味着他人可以冒充正常的区块链节点执行交易,并使得错误的交易数据进入到区块链中。

本发明实施例的第一方面提供一种用于区块链网络的密钥生成方法,包括:a.在区块链管理客户端本地生成区块链节点的第一密钥,所述区块链管理客户端的计算环境包括可信计算环境;b.在所述可信计算环境中,使用第二密钥对所述第一密钥进行加密处理,以生成第三密钥,其中,所述第二密钥预存于与所述区块链管理客户端相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取;c.将所述第三密钥发送至与所述区块链管理客户端相关联的baas平台;d.将所述密钥管理程序发送至所述baas平台。

本实施例所述方案将区块链节点的密钥封装在安全的密钥数据文件中,能够确保密钥本身的安全性,提高区块链节点的密钥的安全系数,降低密钥被盗风险。具体地,区块链管理客户端仅发送第三密钥至baas平台,所述区块链节点的密钥(也可称为第一密钥)本身不会在区块链管理客户端、baas平台和区块链节点之间传输,从而最大限度地保护区块链节点的密钥。进一步地,在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥进行加密处理,由于第二密钥仅能被运行于可信计算环境的密钥管理程序读取,使得本方案确保外界无法直接获得第一密钥,从而降低区块链节点被冒用的风险。所述外界可以是除区块链管理客户端和所述区块链节点外的第三方。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者他们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。还应当注意,流程图中各个步骤的序号并不代表对各个步骤的执行顺序的限定。

本文所使用的术语“包含”、“包括”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。在本公开内容中,术语“基于”是“至少部分地基于”;术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。

本文中出现的“区块链管理客户端”是指:对所述区块链网络中的各个区块链节点的密钥进行管理的设备,例如所述区块链网络中的组织所使用的终端设备。所述区块链管理客户端可以用于生成、管理区块链网络中至少一部分区块链节点的密钥。

在一个实施例中,所述区块链网络可以包括多个区块链节点,所述多个区块链节点中的至少部分区块链节点可以是为所述组织部署的,所述区块链管理客户端可以用于生成和管理所述至少部分区块链节点的密钥。

进一步地,所述区块链管理客户端还可以用于对密钥管理程序进行签名等管理操作。其中,所述密钥管理程序仅能运行在可信计算环境中。

本文中出现的“区块链管理客户端的计算环境”是指:所述区块链管理客户端进行处理和计算的环境。通常而言,区块链管理客户端的计算环境可以包括基于中央处理器(centralprocessingunit,简称cpu)实现的运算环境。更具体地,所述运算环境可以包括普通环境和可信计算环境,可信计算环境为计算环境中仅允许特定的软件或应用程序运行、访问的部分,普通环境为计算环境中允许所有的软件或应用程序运行、访问的部分。进一步而言,基于cpu的可信计算环境是一种芯片级别的安全保护机制,也可以称为可信执行环境(trustedexecutionenvironment,简称tee)。

例如,可以利用软件保护扩展(softwareguardextensions,简称sgx)技术构建所述可信计算环境,也可称为基于sgx的可信计算环境。具体地,所述可信计算环境将合法软件的安全操作封装在一个区域(enclave)中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问该区域。也即,当软件和数据位于该区域中时,即便操作系统也无法影响该区域里面的代码和数据。所述区域的安全边界只包含cpu和它自身。在sgx中一个cpu可以运行多个安全区域,并发执行亦可。

类似的,本文中出现的“区块链节点的计算环境”是指:所述区块链节点进行处理和计算的环境。进一步地,所述区块链节点的计算环境也可以包括基于cpu实现的运算环境,所述运算环境也可以包括普通环境和可信计算环境。

本文中出现的“第一密钥”是指:部署区块链节点时,分配给所述区块链节点的密钥,也即,所述区块链节点的密钥。所述第一密钥可以用于对数据进行签名,被签名后的数据可以被添加至新生成的区块。所述数据可以包含所述区块链节点执行的交易的相关信息。所述第一密钥可以与所述区块链节点一一对应,并由所述区块链管理客户端生成。

在本发明实施例中,生成的所述第一密钥不会直接在区块链管理客户端、区块链节点和baas平台之间传输,而是由所述区块链管理客户端对所述第一密钥进行加密处理生成第三密钥后,以第三密钥的形式进行网络传输,以提高密钥的安全性。

本文中出现的“第三密钥”是指:对所述第一密钥进行加密处理后生成的密钥。所述第三密钥可以存储于区块链节点本地,例如可以存储于可信计算环境和/或普通计算环境,但是,所述第三密钥仅能在可信计算环境中被使用。此外,所述第三密钥还可以存储于区块链管理客户端本地,以作备份。由此,所述第三密钥可以直接在网络中传输和存储于区块链节点本地,而无需担心会被泄密。

例如,对所述第一密钥进行加密处理可以指:使用第二密钥对所述第一密钥进行加密处理。

具体地,本文中出现的“可信计算环境”可以包括所述区块链管理客户端的可信计算环境和所述区块链节点的可信计算环境。

例如,在区块链管理客户端的可信计算环境中对所述第一密钥进行加密处理,以生成所述第三密钥,通过baas平台发送至所述区块链节点,由区块链节点的可信计算环境基于所述第三密钥还原得到第一密钥后,使用所述第一密钥对待签名的数据进行签名操作。

例如,对所述第一密钥进行加密处理可以指:使用第二密钥对所述第一密钥进行加密处理。相应的,区块链节点使用所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥,并使用所述第一密钥对所述待签名的数据进行签名操作。

本文中出现的“第二密钥”是指:存储于受保护的内存中的,仅能被运行于可信计算环境的密钥管理程序读取的密钥。由此,可以确保使用第二密钥加密得到的第三密钥仅能在可信计算环境中被使用。

具体而言,所述第二密钥初始可以是硬件级别的、由cpu在可信计算环境内生成的密钥,在生成所述第二密钥后,存储至所述受保护的内存,以备后用。例如由区块链管理客户端的cpu在区块链管理客户端的可信计算环境内生成,或由区块链节点的cpu在区块链节点的可信计算环境内生成。由于可信计算环境仅允许特定的软件访问,计算环境中除可信计算环境以外的部分无法获取所述第二密钥,即使他人获取了存储于区块链节点本地或区块链管理客户端本地的第三密钥,也无法直接解密该密钥数据,也就无法获取所述第一密钥。

本文中出现的“受保护的内存”是指:仅允许运行于可信计算环境中的程序访问的计算机内存。在本发明实施例中,所述受保护的内存可以包括:与所述区块链管理客户端相关联的受保护的内存,以及与所述区块链节点相关联的受保护的内存。

在本发明实施例中,与所述区块链节点相关联的受保护的内存可以是所述区块链节点本地专门划分出来的内存区域,也可以是独立于所述区块链节点的外部存储设备,所述外部存储设备与所述区块链节点相通信,并仅允许所述区块链节点的可信计算环境中运行的程序访问。

类似的,与所述区块链管理客户端相关联的受保护的内存可以是所述区块链管理客户端本地专门划分出来的内存区域,也可以是独立于所述区块链管理客户端的外部存储设备,所述外部存储设备与所述区块链管理客户端相通信,并仅允许所述区块链管理客户端的可信计算环境中运行的程序访问。

当所述受保护的内存为独立于区块链节点和区块链管理客户端的外部存储设备时,所述外部存储设备可以与所述区块链节点和区块链管理客户端相关联,并允许运行于区块链管理客户端的可信计算环境内的密钥管理程序,以及运行于区块链节点的可信计算环境内的密钥管理程序访问。

在一个实施例中,对于在所述区块链管理客户端的可信计算环境中运行的密钥管理程序,以及在所述区块链节点的可信计算环境中运行的密钥管理程序,若这两个密钥管理程序是由同一组织签名的,则区块链管理客户端的cpu和区块链节点的cpu可以采用相同的密钥生成规则分别生成所述第二密钥,并分别存储于各自关联的受保护的内存中,以确保区块链节点能够对所述区块链管理客户端提供的第三密钥成功解密,从而得到所述第一密钥。

在一个变化例中,所述区块链管理客户端在生成所述第二密钥后,也可以将所述第二密钥以加密的形式发送至所述baas平台,所述区块链节点自所述baas平台获取所述第二密钥并存储于受保护的内存中。

进一步地,所述第二密钥是与所述密钥管理程序以及所述区块链网络中的组织关联的。具体地,所述第二密钥与所述密钥管理程序的标识(identification,简称id),以及所述组织的证书关联。对所述密钥管理程序的标识以及所述组织的证书与所述第二密钥的关联操作可以是在硬件级别实现的。

由此,由运行于所述区块链管理客户端的可信计算环境的密钥管理程序生成的第三密钥,可以由运行于所述区块链节点的可信计算环境的密钥管理程序解密并使用,从而确保区块链节点在未从外界接收到第一密钥的前提下,仍能基于所述第三密钥安全地、准确地还原出所述第一密钥。

在一个实施例中,运行于所述区块链节点的可信计算环境中的密钥管理程序可以由所述区块链管理客户端预先使用所述组织的密钥进行签名,并发送至baas平台,所述区块链节点从所述baas平台下载所述密钥管理程序并加载至其可信计算环境中运行。

本文中出现的“密钥管理程序”是指:对所述第一密钥进行加密处理,并在交易上链时对数据进行签名的应用程序。所述密钥管理程序仅能运行在可信计算环境内。其中,上链是指将包含有交易数据的区块添加至区块链账本。

例如,所述密钥管理程序可以运行在所述区块链管理客户端所在cpu的可信计算环境中,以生成所述第三密钥。又例如,所述密钥管理程序还可以运行在所述区块链节点的基于cpu的可信计算环境中,以对区块链节点上的交易结果进行签名。

在一个实施例中,所述密钥管理程序本身可以被所述区块链网络中的组织签名,以保护所述密钥管理程序本身不被篡改。进一步地,所述密钥管理程序中可以携带有所述组织的证书。例如,可以由所述区块链管理客户端执行对所述密钥管理程序进行签名的操作。

进一步地,所述区块链管理客户端可以将签名后的密钥管理程序发送至baas平台,以便所述baas平台在部署所述区块链节点时将所述签名后的密钥管理程序和所述第三密钥一并发送至所述区块链节点。

在另一个实施例中,所述密钥管理程序本身可以不作为文件存储于所述区块链节点,而是存储在区块链即服务(blockchainasaservice,简称baas)平台,所述baas平台可以是一个区块链的服务提供平台,主要负责区块链底层平台和基于区块链的应用服务的部署、管理和运维。当所述区块链节点在被部署、重启、或由调用指令触发时,可以从所述baas平台调用所述密钥管理程序。在调用所述密钥管理程序后,区块链节点可以将密钥管理程序存储在本地,直至下一次重启或接收到调用指令后,再次从baas平台调用所述密钥管理程序。所述调用指令例如可以是由baas平台发出。

其中,所述baas平台可以与所述区块链网络中的各个区块链节点相通信,以管理和运维所述区块链网络;所述baas平台还可以与所述区块链管理客户端相通信,以在部署区块链节点时指示所述区块链管理客户端生成所述第三密钥,将区块链管理客户端生成的第三密钥发送至所述区块链节点,以及在所述区块链节点请求时发送由所述区块链管理客户端签名的密钥管理程序。

本文中出现的“请求凭证”是指:用于证明所述区块链节点的身份合法性的验证信息。例如,所述请求凭证可以为baas平台预先发送给区块链节点的标记(token),区块链节点被启动后,请求获取所述密钥管理程序时,所述区块链节点可以向所述baas平台发送所述token,所述baas平台验证通过后,向所述区块链节点发送所述密钥管理程序。由此,可以在区块链节点的密钥被自身的可信计算环境密封的情况下,提供一种身份验证机制,以便baas平台管理所述区块链节点。

本文中出现的“数据”是指:区块链节点在交易过程中产生或涉及的至少一个事务中的事务数据。其中,所述事务数据是指事务(transaction)进行过程中产生的各种数据。进一步地,事务数据可以包括事务进行过程中产生的各种中间数据,以及事务进行完成后得到的各种结果数据。

本文中出现的“业务”包括为了达成特定的目的或实现特定的功能而进行的一系列(即一个或多个,通常为多个)事务的集合。例如,为了达成商品溯源目的而进行的商品溯源业务可以包括原产地发货事务、承运商运输事务等一系列事务。

应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制发明的范围。

本发明实施例的区块链技术方案可以应用于不同的领域中,在本实施例中,以供应链金融业务和商品溯源业务为例进行说明。

在供应链金融业务的一个应用场景中,所述区块链节点可以为供应链金融业务中任一参与方维持的节点,所述数据可以包括供应链金融业务中被授权查询的业务关联的事务数据,例如,供应链金融业务中上下游区块链节点在交易过程中附加的各种文件,例如订单、合同等等。

在商品溯源业务的一个应用场景中,所述区块链节点为商品溯源业务中任一参与方维持的节点,所述数据可以包括商品运输、交付等一系列环节中产生和涉及的事务数据,例如,原产地发货事务、承运商运输事务等一系列事务的事务数据。

图1是本发明实施例的一种用于区块链网络的密钥生成方法的流程图。

其中,所述区块链网络可以由多个可通信的区块链节点构成。以其中某一区块链节点为例,所述区块链节点由baas平台部署,所述baas平台与区块链管理客户端相通信,所述区块链管理客户端用于生成和管理所述区块链节点的密钥。本实施例的方案可以由所述区块链管理客户端执行。

具体地,在本实施例中,所述用于区块链网络的密钥生成方法可以包括:

在101处,执行步骤a,在区块链管理客户端本地生成区块链节点的第一密钥,所述区块链管理客户端的计算环境包括可信计算环境;

在102处,执行步骤b,在所述可信计算环境中,使用第二密钥对所述第一密钥进行加密处理,以生成第三密钥,其中,所述第二密钥预存于与所述区块链管理客户端相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取;

在103处,执行步骤c,将所述第三密钥发送至与所述区块链管理客户端相关联的baas平台;

在104处,执行步骤d,将所述密钥管理程序发送至所述baas平台。

其中,所述步骤c和步骤d可以是同步或异步执行的,异步执行时,两者的执行顺序可以互换。

更为具体地,所述第一密钥和经所述步骤b处理后生成的所述第三密钥可以存储于所述区块链管理客户端本地的文件系统中,两者的区别在于,所述第一密钥是以明文方式存储的,而所述第三密钥则是被加密处理过的、仅能在可信计算环境中被使用的。

在一个实施例中,为进一步提高区块链节点的密钥的安全性,在所述步骤b之后,本实施例所述密钥生成方法还可以包括:步骤f,删除所述区块链管理客户端本地存储的所述第一密钥。由此,所述区块链管理客户端本地也仅存储所述第三密钥,他人即使获取所述区块链管理客户端的用户权限并只能获取所述第三密钥。进一步,他人即使获取所述第三密钥,也无法解密所述第三密钥,更无法冒充所述区块链节点执行交易上链等操作。

其中,所述步骤f和步骤d可以是同步或异步执行的,所述步骤f和步骤c也可以是同步或异步执行的。

在又一个实施例中,在执行所述步骤b时,可以在所述区块链管理客户端的可信计算环境中调用所述密钥管理程序执行所述第二密钥的读取操作,所述密钥管理程序仅能在可信计算环境中运行。

作为一个变化例,所述步骤a也可以是调用所述密钥管理程序执行的。例如,可以由所述密钥管理程序在所述区块链管理客户端的可信计算环境中执行生成操作,以为所述区块链节点生成第一密钥。

在再一个实施例中,所述密钥管理程序可以是由所述区块链网络中的组织签名的,所述组织可以是部署所述区块链节点的组织。所述签名操作可以由所述区块链管理客户端执行。

具体地,所述步骤d可以包括:步骤d1,使用所述区块链网络中的组织的密钥对所述密钥管理程序进行签名;步骤d2,将签名后的所述密钥管理程序发送至所述baas平台。

在又一个实施例中,在所述步骤a之前,本实施例所述密钥生成方法还可以包括:步骤e,从所述baas平台接收请求信息,所述请求信息用于请求获取所述区块链节点的密钥。

在本发明实施例中,所述请求信息可以用于请求获取所述区块链节点的第一密钥,但是,所述区块链管理客户端发送至baas平台的是所述区块链节点的第三密钥,所述区块链节点可以通过解密所述第三密钥来得到所述第一密钥。因而,所述区块链管理客户端虽然未正面响应所述baas平台获取区块链节点的第一密钥的请求,但其实际在反馈的第三密钥中隐式地提供了所述第一密钥,且本实施例所述反馈第三密钥的方式更有利于对第一密钥的保护。

在一个实施例中,参考图2,所述步骤b可以进一步包括:

在1021处,执行步骤b1,获取所述密钥管理程序的标识;

在1022处,执行步骤b2,获取所述组织的证书;

在1023处,执行步骤b3,根据所述密钥管理程序的标识以及所述组织的证书,从所述区块链管理客户端关联的受保护的内存中获取与所述密钥管理程序和组织关联的所述第二密钥;

在1024处,执行步骤b4,使用获取的所述第二密钥对所述第一密钥进行加密处理,以生成所述第三密钥。

其中,所述密钥管理程序的标识和所述组织的证书均可以预存于与所述区块链管理客户端相关联的受保护的内存中。

在一个典型的应用场景中,参考图3,本场景对本实施例所述第三密钥的生成过程做示例性阐述。

具体地,baas平台31可以向所述区块链管理客户端32发送所述请求信息。

进一步地,响应于接收到所述请求信息,所述区块链管理客户端32可以调用区块链管理客户端程序33生成区块链节点(图未示)的第一密钥(图未示)。

在所述区块链管理客户端32的cpu上可以运行有可信计算环境34,密钥管理程序36仅能在可信计算环境如所述区块链管理客户端32的可信计算环境34中运行。

进一步地,响应于接收到所述请求信息,所述区块链管理客户端32还可以调用所述密钥管理程序36并在其可信计算环境34中运行。

具体地,在生成所述第一密钥后,所述区块链管理客户端程序33可以执行操作s1,以将生成的所述第一密钥发送至运行于所述可信计算环境34的密钥管理程序36。

进一步地,响应于接收到所述第一密钥,所述密钥管理程序36可以执行上述图1所示实施例中所述步骤b,以调用cpu的加密功能,自与所述区块链管理客户端32相关联的受保护的内存中读取所述第二密钥(图未示),并使用所述第二密钥将所述第一密钥转换为第三密钥。在本场景中,假定所述区块链管理客户端32的存储区35中专门划分有特定的存储区域作为所述受保护的内存。因而,可以认为所述第二密钥也是存储于所述存储区35的,只不过,所述第二密钥仅允许运行于所述可信计算环境34的密钥管理程序36读取。

进一步地,所述密钥管理程序36可以执行操作s2,以将得到的所述第三密钥存储至所述区块链管理客户端32本地,如存储至存储区35。

进一步地,所述区块链管理客户端程序33可以执行操作s3,以将所述密钥管理程序36生成的所述第三密钥上传至所述baas平台31。

所述区块链节点可以自所述baas平台31处获取所述第三密钥并存储。

在另一个典型的应用场景中,参考图4,本场景对本实施例所述对密钥管理程序的签名过程做示例性阐述。

具体地,所述baas平台31可以执行操作s4,以发送未签名的密钥管理程序至所述区块链管理客户端32。

响应于接收到所述未签名的密钥管理程序,所述区块链管理客户端32可以调用所述区块链管理客户端程序33以执行所述签名操作。

具体地,所述区块链管理客户端程序33可以执行操作s5,以使用所述区块链节点所属组织的密钥对接收到的所述未签名的密钥管理程序进行签名,从而得到签名后的密钥管理程序(即图3示出的密钥管理程序36)。其中,所述组织的密钥可以存储于所述区块链管理客户端32本地,或即时获取自所述组织。

进一步地,所述区块链管理客户端程序33可以将签名后的所述密钥管理程序36反馈至所述baas平台31进行存储。

进一步地,在执行上述图3所示第三密钥的生成操作时,所述区块链管理客户端32可以调用本地存储的签名后的密钥管理程序36,并在所述区块链管理客户端32的可信计算环境34中运行。

由此,采用本实施例的方案,将区块链节点的密钥封装在安全的密钥数据文件中,能够确保密钥本身的安全性,提高区块链节点的密钥的安全系数,降低密钥被盗风险。

具体地,区块链管理客户端仅发送第三密钥至baas平台,所述区块链节点的密钥(也可称为第一密钥)本身不会在区块链管理客户端、baas平台和区块链节点之间传输,从而最大限度地保护区块链节点的密钥。

进一步地,在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥进行加密处理,由于第二密钥仅能被运行于可信计算环境的密钥管理程序读取,使得本方案确保外界无法直接获得第一密钥,从而降低区块链节点被冒用的风险。所述外界可以是除区块链管理客户端和所述区块链节点外的第三方。

本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行以下步骤:a.在区块链管理客户端本地生成区块链节点的第一密钥,所述区块链管理客户端的计算环境包括可信计算环境;b.在所述可信计算环境中,使用第二密钥对所述第一密钥进行加密处理,以生成第三密钥,其中,所述第二密钥预存于与所述区块链管理客户端相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取;c.将所述第三密钥发送至与所述区块链管理客户端相关联的baas平台;d.将所述密钥管理程序发送至所述baas平台。

在一个实施例中,所述步骤d可以进一步包括:d1.使用所述区块链网络中的组织的密钥对所述密钥管理程序进行签名;d2.将签名后的所述密钥管理程序发送至所述baas平台。

在一个实施例中,在所述步骤a之前,所述计算设备还可以执行以下步骤:e.从所述baas平台接收请求信息,所述请求信息用于请求获取所述区块链节点的密钥。

在一个实施例中,所述第二密钥可以与所述密钥管理程序以及所述区块链网络中的组织关联。

在一个实施例中,所述步骤b可以进一步包括:b1.获取所述密钥管理程序的标识;b2.获取所述组织的证书;b3.根据所述密钥管理程序的标识以及所述组织的证书,从所述区块链管理客户端关联的受保护的内存中获取与所述密钥管理程序和组织关联的所述第二密钥;b4.使用获取的所述第二密钥对所述第一密钥进行加密处理,以生成所述第三密钥。

在一个实施例中,所述区块链节点可以为供应链金融业务中任一参与方维持的节点。

在一个实施例中,所述区块链节点可以为商品溯源业务中任一参与方维持的节点。

关于所述计算设备的工作原理、工作方式的更多内容,可以参照上述图1至图4中的相关描述,这里不再赘述。

图5是是本发明实施例的一种用于区块链网络的签名方法的流程图。其中,所述区块链网络可以由多个可通信的区块链节点构成,本实施例的方案可以由所述区块链节点执行。

具体地,在本实施例中,所述用于区块链网络的签名方法可以包括:

在501处,执行步骤a,获取待签名的数据;

在502处,执行步骤b,自baas平台获取第三密钥,所述第三密钥是在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥加密处理得到的,所述第二密钥预存于与所述区块链节点相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取,所述密钥管理程序获取自所述baas平台;

在503处,执行步骤c,使用所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥,其中,所述区块链节点的计算环境包括可信计算环境,所述解密处理的操作是在所述区块链节点的可信计算环境中进行的;

在504处,执行步骤d,在所述区块链节点的可信计算环境中,使用所述第一密钥对所述待签名的数据进行签名。

更为具体地,所述待签名的数据可以指需要添加至区块链账本的数据。进一步地,所述待签名的数据可以由用户提供,所述用户可以是所述区块链节点的使用者,如所述区块链网络中的组织。

在一个实施例中,在执行所述步骤c时,可以调用密钥管理程序执行解密操作,所述密钥管理程序仅能在可信计算环境中运行。所述可信计算环境包括所述区块链节点的可信计算环境。

作为一个变化例,所述步骤b也可以通过调用所述密钥管理程序执行。例如,可以由所述密钥管理程序在所述区块链节点的可信计算环境中执行读操作,以自与所述区块链节点相关联的受保护的内存获取所述第二密钥,并执行所述步骤c所述的解密操作,以得到所述第一密钥。

在另一实施例中,如当所述区块链节点启动时,在执行所述步骤c之前,本实施例所述签名方法还可以包括:步骤e,从所述baas平台下载所述密钥管理程序,所述baas平台存储的密钥管理程序可以来自于所述区块链管理客户端。

例如,所述baas平台存储的密钥管理程序可以是,由所述区块链管理客户端执行上述图1所示实施例的方案进行签名后得到的密钥管理程序。

进一步地,在所述步骤e之后,所述步骤c之前,本实施例所述签名方法还可以包括:步骤f,对所述密钥管理程序的签名进行验证,以确认所述密钥管理程序是由所述区块链网络中的组织签名的。

例如,所述组织可以预先将自身证书发送至所述区块链节点,响应于接收到所述baas平台发送的密钥管理程序,所述区块链节点可以从所述密钥管理程序中提取所述组织的证书和签名,通过所述组织的证书验证所述签名是否正确,同时比较接收到的密钥管理程序中的证书和组织预先发送到区块链节点的证书是否一致,以判断所述密钥管理程序是否是由所述组织签名的。

在再一个实施例中,所述步骤e可以进一步包括:步骤e1,向所述baas平台发送请求信息,所述请求信息包含所述区块链节点的请求凭证,所述请求凭证与所述区块链节点一一对应并预先获取自所述baas平台;步骤e2,接收响应于所述请求信息的反馈信息,所述反馈信息包含所述密钥管理程序。

例如,所述请求凭证可以是由baas平台在部署区块链节点时生成并发送给区块链节点的,所述区块链节点的启动时机可以是由所述baas平台控制的,如由baas平台启动所述区块链节点。响应于被启动,所述区块链节点可以向所述baas平台发送包含有所述请求凭证的请求信息,所述baas平台验证所述请求凭证是否与所述区块链节点相匹配。当验证通过时,向所述区块链节点发送反馈信息,所述反馈信息包含所述区块链节点的密钥管理程序。

在一个实施例中,所述第二密钥可以是与所述密钥管理程序以及所述区块链网络中的组织相关联的。

具体地,参考图6,所述步骤c可以进一步包括:

在5031处,执行步骤c1,获取所述密钥管理程序的标识;

在5032处,执行步骤c2,获取所述组织的证书;

在5033处,执行步骤c3,根据所述密钥管理程序的标识以及所述组织的证书,从所述区块链节点关联的受保护的内存中获取与所述密钥管理程序和组织关联的所述第二密钥;

在5034处,执行步骤c4,使用获取的所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥。

由于只有运行在可信计算环境的密钥管理程序能够读取到所述第二密钥,使得他人无法破解所述第三密钥以得到所述第一密钥,也即无法将错误数据上链。

在本实施例中,由于不同cpu针对运行于各自的可信计算环境的、由同一组织签名的密钥管理程序可以采用相同的密钥生成规则生成所述第二密钥,使得预存于所述区块链节点的第二密钥与预存于区块链管理客户端的第二密钥是一致的,从而确保运行于区块链节点的可信计算环境的密钥管理程序,可以解密由运行于区块链管理客户端的可信计算环境的密钥管理程序加密的第三密钥。

在一个典型的应用场景中,参考图7,本场景对本实施例所述使用区块链节点的密钥进行签名的过程做示例性阐述。其中,所述区块链节点的密钥即为上述图1至图6所示实施例中的所述第一密钥。

具体地,区块链节点71具有区块链服务模块72,用于完成区块链相关的事项,如与其他区块链节点交互以进行交易、将交易过程中产生的数据添加至区块链等。

进一步地,所述区块链服务模块72的区块链节点核心服务单元73接收到交易请求并执行完交易过程后,调用签名调用程序74对交易结果进行签名,其中,所述交易结果即为所述待签名的数据。

进一步地,所述签名调用程序74接收所述待签名的数据,并执行操作s1,以调用运行在基于cpu的可信计算环境76中的密钥管理程序75对待签名的数据进行签名。其中,所述cpu为所述区块链节点71的cpu。例如,所述签名调用程序74可以将接收到的所述待签名的数据传递至所述密钥管理程序75。

进一步地,响应于接收到所述待签名的数据,所述密钥管理程序75可以执行操作s2,以从区块链节点71的存储区77读取所述第三密钥以及所述第二密钥,在使用所述第二密钥对所述第三密钥解密后,使用解密得到的第一密钥对所述待签名的数据进行签名。在本场景中,所述存储区77可以对应上述图3所示实施例中所述存储区35,所述存储区77中存储有经上述图1至图4所示实施例生成的第三密钥,以及所述第二密钥(图未示)。

进一步地,在完成签名操作后,所述密钥管理程序75可以将签名后的数据返回至所述签名调用程序74。

进一步地,所述区块链节点核心服务单元73从所述签名调用程序74获取到所述签名后的数据后,可以附加到交易结果上并一并添加至所述区块链。

其中,所述区块链节点71的存储区77可以为所述区块链节点71的内存,其上可以专门划分有与所述区块链节点71相关联的受保护的内存。

其中,在所述区块链节点71的cpu上可以运行有可信计算环境76,密钥管理程序75仅能在所述区块链节点71的可信计算环境,以及上述图3和图4所示区块链管理客户端32的可信计算环境中运行。

其中,所述密钥管理程序75在所述区块链节点71被启动时获取自所述baas平台(图7未示出),并在被获取后一直运行于所述区块链节点71的可信计算环境76。

由此,采用本实施例的方案,将使用密钥进行签名的运算逻辑运行在区块链节点的可信计算环境中,能够确保签名运算过程中的安全性,同时确保存储于区块链上的数据的安全性。

具体地,对待签名的数据进行签名的操作是在区块链节点的可信计算环境中进行的,且用于对待签名的数据进行签名的区块链节点的密钥是预先被处理过的、仅能在可信计算环境中被使用的,降低区块链节点的密钥被盗取的风险,使得他人无法伪造区块链节点处理区块链上的数据,从而达到提高数据安全性的效果。

其中,作为区块链节点的密钥的第一密钥仅能在区块链管理客户端的可信计算环境和区块链节点的可信计算环境中被使用。

本发明实施例还提供一种计算设备,包括处理器和存储器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时可以执行以下步骤:a.获取待签名的数据;b.自baas平台获取第三密钥,所述第三密钥是在区块链管理客户端的可信计算环境中使用第二密钥对区块链节点的第一密钥加密处理得到的,所述第二密钥预存于与所述区块链节点相关联的受保护的内存中,且仅能被运行于可信计算环境的密钥管理程序读取,所述密钥管理程序获取自所述baas平台;c.使用所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥,其中,所述区块链节点的计算环境包括可信计算环境,所述解密处理的操作是在所述区块链节点的可信计算环境中进行的;d.在所述区块链节点的可信计算环境中,使用所述第一密钥对所述待签名的数据进行签名。

在一个实施例中,在执行所述步骤c之前,所述计算设备还可以执行以下步骤:e.从所述baas平台下载所述密钥管理程序,所述baas平台存储的密钥管理程序来自于所述区块链管理客户端。

在一个实施例中,在所述步骤e之后,所述步骤c之前,所述计算设备还可以执行以下步骤:f.对所述密钥管理程序的签名进行验证,以确认所述密钥管理程序是由所述区块链网络中的组织签名的。

在一个实施例中,所述步骤e可以进一步包括:e1.向所述baas平台发送请求信息,所述请求信息包含所述区块链节点的请求凭证,所述请求凭证与所述区块链节点一一对应并预先获取自所述baas平台;e2.接收响应于所述请求信息的反馈信息,所述反馈信息包含所述密钥管理程序。

在一个实施例中,所述第二密钥可以与所述密钥管理程序以及所述区块链网络中的组织关联。

在一个实施例中,所述步骤c可以进一步包括:c1.获取所述密钥管理程序的标识;c2.获取所述组织的证书;c3.根据所述密钥管理程序的标识以及所述组织的证书,从所述区块链节点关联的受保护的内存中获取与所述密钥管理程序和组织关联的所述第二密钥;c4.使用获取的所述第二密钥对所述第三密钥进行解密处理,以得到所述第一密钥。

在一个实施例中,所述区块链节点可以为供应链金融业务中任一参与方维持的节点。

在一个实施例中,所述区块链节点可以为商品溯源业务中任一参与方维持的节点。

关于所述计算设备的工作原理、工作方式的更多内容,可以参照上述图5至图7中的相关描述,这里不再赘述。

在一个实施例中,所述计算设备可以为个人计算机、智能手机、服务器等。

由此,采用本实施例的方案,利用区块链节点和区块链管理客户端的cpu提供的可信计算环境实现硬件层面的密钥保护。

具体地,基于区块链管理客户端的cpu的加密功能,实现第一密钥的加密存储,使得外界无法直接解密获得所述第一密钥。并且,第一密钥无需传送和存储在区块链节点上,更加保证第一密钥的安全。

进一步地,所述区块链管理客户端运行于区块链管理者(如所述组织)的服务器上,确保baas平台不会影响到区块链节点的密钥的安全生成过程。

进一步地,基于区块链节点的cpu提供的可信计算环境,在签名过程中,第一密钥始终被保护在区块链节点的cpu中特有的内存区域,且该内存区域被区块链节点的cpu使用硬件随机的密钥(即所述第二密钥)进行过加密,从而提高签名过程中区块链节点的密钥的安全系数。

换言之,在完成加密处理后,第一密钥就可以被区块链管理客户端删除了,外界能获取的第三密钥是经过加密处理的,他人无法基于该密钥直接获得所述第一密钥,也就无法使用该密钥对错误数据进行签名。

进一步地,在签名过程中,只有运行在可信计算环境中的密钥管理程序能够对所述第三密钥进行解密以得到第一密钥,然后在可信计算环境中使用所述第一密钥对待签名的数据进行签名。由此,可以理解为,所述第一密钥始终被保护在所述区块链节点和区块链管理客户端的可信计算环境中,相当于被密封在黑盒中不会被外界破解。

在基于baas平台管理的基于区块链网络的供应链金融业务场景中,所述供应链金融业务的参与方可以包括资金方、核心企业和为核心企业提供产品的中小企业,每一个业务方都可以有自己的区块链节点。在整个区块链网络中,相关的融资交易都记录在区块链账本中。对于供应链金融业务来说,各方的区块链节点的安全性至关重要。如果任何一方的区块链节点的密钥被泄露,将可能导致恶意节点伪装为正常的区块链节点,参与供应链金融的业务活动,造成直接的业务损失或者交易数据泄露。因而,采用本发明实施例的方案,各方的区块链节点能够基于所属的区块链管理客户端对自己的密钥进行有效保护,从而保证区块链账本上记录的融资交易数据的真实性和有效性。

在基于baas平台管理的商品溯源业务场景中,所述商品溯源业务的参与方可以包括商品流通中每个环节的参与方,每个参与方都接入整个区块链网络中,并拥有自己的区块链节点。在商品经过特定环节时,由该环节的区块链节点记录商品的信息到区块链账本中。如果任何一个环节的区块链节点的密钥被泄露,将可能导致恶意节点伪装为正常的区块链节点,记录错误的商品溯源信息到区块链账本中,造成商品溯源信息的错误。因而,采用本发明实施例的方案,各方的区块链节点能够基于所属的区块链管理客户端对自己的密钥进行有效保护,从而保证区块链账本上记录的商品溯源数据的真实性和有效性。

进一步地,本发明实施例还公开一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述图1至图7所示实施例中所述的方法技术方案。优选地,所述存储介质可以包括诸如非挥发性(non-volatile)存储器或者非瞬态(non-transitory)存储器等计算机可读存储介质。所述存储介质可以包括rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

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