一种基于SGX技术的联盟区块链秘钥存储方法、装置、设备及介质与流程

文档序号:20114725发布日期:2020-03-17 19:41阅读:423来源:国知局
一种基于SGX技术的联盟区块链秘钥存储方法、装置、设备及介质与流程

本发明涉及联盟区块链的秘钥存储领域,尤其涉及一种基于sgx技术的联盟区块链秘钥存储方法、装置、设备及介质。



背景技术:

区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。

sgx技术,intelsoftwareguardextensions是英特尔指令架构的扩展,用于增强软件的安全。概括的来说,就是intelcpu提供的一套tee机制,通过将合法软件封装在enclave(安全区)中,以实现对软件进行保护的目的。

传统联盟区块链证书的私钥都存放在本地,例如hyperlegerfabric的证书机制,不同证书对应的私钥都保存在本地相应证书的文件夹内,如果私钥泄露或被他人盗取,则可以生成相应的伪证书,会带来不必要的麻烦。如何将证书的私钥存储在一个足够安全的环境下来更好的应用实际生产也是一项严峻的挑战。



技术实现要素:

鉴于此,本发明实施例提出一种基于sgx技术的联盟区块链秘钥存储方法、装置、设备及介质,解决了秘钥文件存放在不安全的地方可能会被恶意盗取的问题,从而能够保证证书的私钥在安全环境下进行存储。

第一方面,本发明实施例提供一种基于sgx技术的联盟区块链秘钥存储方法,该方法包括:

s1.生成秘钥:将使用证书生成工具生成的秘钥或在第三方获取的秘钥,采用对称加密的方式将秘钥进行加密;

s2.传输至enclave并封装秘钥:在运行区块链平台之前,需要通过可信通道将生成的秘钥以及密码口令导入到enclave所在的服务器端;

s3.清除秘钥文件并存储封装后的文件:导入成功后,区块链平台对相应的秘钥文件和相应的密码口令都会删除,不会保存关于秘钥的任何信息,平台只存储通过enclave封装后的数据;

s4.使用秘钥:区块链平台在使用私钥时,需要先进行身份认证,身份认证通过后,平台要在enclave可信环境中对封装的数据进行解密,使用秘钥的过程都在enclave可信环境中进行,秘钥不会再被暴露。

进一步的,所述步骤s1中,所述秘钥优选私钥。

进一步的,所述步骤s1中,采用aes对秘钥进行加密。

进一步的,所述步骤s1中,加密中用的密码包括数字、字母、特殊符号。

进一步的,所述步骤s2中,使用可信通道tnc将秘钥传输到enclave中,使用enclave对传输的秘钥进行解密后再进行秘钥数据密封。

进一步的,所述步骤s2中,对秘钥封装的步骤包括:

enclave中的代码使用egetkey指令获取封装秘钥sealkey,该sealkey是结合enclave的身份、签名信息导出的,采用对称加密对秘钥进行加密,通过sealkey的公钥对加密后的私钥进行密封,然后存储到硬盘上,封装后得到返回值,然后将返回值存储到平台上。

进一步的,所述步骤s4中,区块链平台上进行身份认证的步骤包括:

区块链平台在使用enclave时,要对enclave进行认证时,首先enclave执行ereport指令,将enclave的身份和附加信息生成report结构,利用quotingenclave的报告密钥生成一个mac,然后连同report结构一起发送给qe,qe会对该结构进行验证,然后将其封装为quote结构体,并使用读取到的epid密钥对其签名,将quote和签名一同发送给服务器端进行验证,服务器端使用intel提供的认证服务进行验证并将验证消息返回给区块链平台。

第二方面,本发明实施例提供一种基于sgx技术的联盟区块链秘钥存储装置,包括:

秘钥生成模块,用于生成秘钥并对秘钥进行加密;

传输及封装模块,用于通过可信通道将生成的秘钥以及密码口令导入到enclave所在的服务器端,生成的秘钥后对秘钥进行封装;

清除及封装存储模块,用于在导入成功后,将对相应的秘钥文件和相应的密码口令删除,不保存关于秘钥的任何信息,只存储通过enclave封装后的数据;

秘钥使用模块,用于先进行身份认证,身份认证通过后,在enclave可信环境中对封装的数据进行解密。

第三方面,本发明实施例提供一种设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的基于sgx技术的联盟区块链秘钥存储方法。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面所述的基于sgx技术的联盟区块链秘钥存储方法。

在本发明实施例采用上述至少一个技术方案能够达到以下有益效果:

区块链对于证书秘钥的存放一般选择存放到区块链平台上或是由用户进行自行保管,但是如果受到攻击者恶意攻击那么就有可能损失相应的秘钥,而基于sgx的秘钥存储方法就能够很好地解决证书秘钥的存放问题,通过sgx,即使在受到恶意攻击下对应的秘钥也不会被泄露,攻击者只能获得被sgx加密后的文件并且无法解密。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本发明方法的整体执行示意图;

图2是本发明方法的整体架构流程图。

具体实施方式

下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

秘钥包含公钥与私钥,私钥用于签名,公钥用于验签,实际场景中私钥需要被妥善保管,公钥用于发送给需要验签的人,本申请实施例提供的一种基于sgx技术的联盟区块链秘钥存储方法,主要是基于私钥进行的。

实施例一:

图1为本申请实施例中提供的一种基于sgx技术的联盟区块链秘钥存储方法的整体执行示意图,图2为本申请实施例中提供的一种基于sgx技术的联盟区块链秘钥存储方法的整体架构流程图。本申请实施例中证书秘钥可以为链证书秘钥、机构证书秘钥、节点证书秘钥、sdk证书秘钥。下面采用证书秘钥以hyperledgerfabric平台生成的证书文件keystore中的私钥为例进行详细的说明。

s1:服务器端首先需要安装sgx所支持的相应环境,需要安装intel提供的sgxsdk,利用hyperlegerfabric自带的工具cryptogen生成相应的证书文件及其私钥,以生成的keystore文件夹下的私钥为例,其他相应私钥文件都可以以此为例,将私钥文件利用对称加密算法对其明文进行加密,如采用aes加密算法,加密后保存,密码需要有一定的复杂性要求(数字、字母、特殊符号),但是不需要非常复杂的密码,以免增加记忆压力。

s2:hyperlegerfabric平台对服务器端的enclave请求身份认证,验证通过后,hyperlegerfabric通过可信通道tnc将私钥文件以及aes对称秘钥传输至服务器端的enclave,在enclave内部使用秘钥将加密后的私钥文件进行解密,然后利用enclave内部的对称加密对私钥进行加密,再使用sealkey的公钥进行密封。

将上述文件传输至enclave后,enclave对解密后的秘钥文件采用对称加密算法进行加密,通过enclave中的随机数随机生成一个对称秘钥,然后利用对称加密算法对传输的秘钥文件进行加密,再调用egetkey获取sealkey,用sealkey的公钥对加密后的数据和对称秘钥进行加密后封装到磁盘中,不使用私钥文件时就不能进行解密,也不能取出对称秘钥。

s3:私钥文件传输并封装完成后将hyperlegerfabric平台上的私钥明文以及加密后的私钥文件全部删除,enclave端将enclave中封装后的秘钥文件存储至hyperledgerfabric平台上。

s4:hyperlegerfabric平台使用私钥对证书进行签名时,平台需要先对enclave请求身份认证,认证通过后,在enclave内部对封装后的数据进行解密,在enclave内部完成对私钥的使用,如对证书的签名,此过程也不会暴露私钥明文。

上述hyperlegerfabric对enclave进行身份请求认证,首先enclave执行ereport指令,将enclave的身份和附加信息生成report结构,利用quotingenclave(称其为qe,sgx多种内置enclave中的一种)的报告密钥生成一个mac,然后连同report结构一起发送给qe,qe会对该结构进行验证,然后将其封装为quote结构体,并使用读取到的epid密钥对其签名,将quote和签名一同发送给服务器端进行验证,服务器端使用intel提供的认证服务进行验证并将验证消息返回给区块链平台。

上述enclave对封装数据的解密,解密时,使用egetkey指令取出sealkey的私钥,先对封装后的数据进行解密,再取出对私钥加密的对称秘钥,对加密后的私钥再次进行解密后得到私钥明文。

需要说明的是,本发明也可以适用于对区块链中任意一种秘钥的加密存储。

实施例二:

本实施例提供的一种基于sgx技术的联盟区块链秘钥存储装置,该装置可配置于区块链节点中,该装置可执行本发明实施例一所提供的基于sgx技术的联盟区块链秘钥存储方法,具备基于sgx技术的联盟区块链秘钥存储装置相应的功能模块和有益效果。该装置包括:

秘钥生成模块,用于生成秘钥并对秘钥进行加密;

传输及封装模块,用于通过可信通道将生成的秘钥以及密码口令导入到enclave所在的服务器端,生成的秘钥后对秘钥进行封装;

清除及封装存储模块,用于在导入成功后,将对相应的秘钥文件和相应的密码口令删除,不保存关于秘钥的任何信息,只存储通过enclave封装后的数据;

秘钥使用模块,用于先进行身份认证,身份认证通过后,在enclave可信环境中对封装的数据进行解密。

示例性的,上述传输及封装模块中包含秘钥封装单元,用于在enclave中的代码使用egetkey指令获取封装秘钥sealkey,该sealkey是结合enclave的身份、签名信息导出的,采用对称加密对秘钥进行加密,通过sealkey的公钥对加密后的私钥进行密封,然后存储到硬盘上,封装后得到返回值,然后将返回值存储到平台上。

示例性的,上述秘钥使用模块中包含身份认证单元,用于在使用enclave时,要对enclave进行认证时,首先enclave执行ereport指令,将enclave的身份和附加信息生成report结构,利用quotingenclave的报告密钥生成一个mac,然后连同report结构一起发送给qe,qe会对该结构进行验证,然后将其封装为quote结构体,并使用读取到的epid密钥对其签名,将quote和签名一同发送给服务器端进行验证,服务器端使用intel提供的认证服务进行验证并将验证消息返回给区块链平台。

实施例三:

本实施例提供一种设备,设备的组件可以包括但不限于:一个或者多个处理器或者处理单元,存储器。存储器用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现实施例一所述的基于sgx技术的联盟区块链秘钥存储方法。

存储器为能够支持sgx运行的存储设备(支持的设备列表详看intelsgx官网),存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块的程序/实用工具,可以存储在例如存储器中,这样的程序模块包括但不限于一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。

设备也可以与一个或多个配置sgx的设备通信,还可与一个或者多个使得用户能与该设备交互的设备通信。这种通信可以通过intelsgx身份认证进行。

处理单元通过运行存储在存储器中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的事务请求的并行执行方法。

实施例四:

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行一种基于sgx技术的联盟区块链秘钥存储方法,该方法为实施例一记载的内容。

本发明实施例可以以”c/c++”语言程序设计语言,其他语言不支持。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

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