用于托管区块链用户私钥的方法和装置与流程

文档序号:17068691发布日期:2019-03-08 23:07阅读:157来源:国知局
用于托管区块链用户私钥的方法和装置与流程

本公开内容属于信息技术领域,尤其涉及一种用于托管区块链用户私钥的方法、装置以及一种相应的计算机可读存储介质。



背景技术:

区块链(blockchain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。区块链具有去中心化、反篡改、数据一致性存储、过程透明可追踪等技术优势,其被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景。

区块链的去中心化信任与控制是基于现代密码学的密码机制来实现的,每个区块链用户使用其对应的私钥和证书生成有效的数字签名,以保障在区块链网络上发起的操作的合法性。在现有的区块链网络中,用户私钥和证书的管理通常有两种方式。在一种方式中,由区块链即服务(baas,blockchainasaservice)系统来创建和管理用户组织的私钥和证书,它们以加密方式保存在baas系统的数据库中。当用户登录baas账号之后,在线发起区块链上的操作时,baas系统将获取用户私钥对消息进行签名,然后发送给相关区块链节点。在另一种方式中,baas系统不保存任何用户私钥,而是提供给用户用于私钥证书管理的本地客户端,当用户需要在线发起区块链上的操作时,用户先在线发起操作请求,然后在本地客户端上对该请求进行批准,即对消息进行签名。客户端将经签名的消息发送给baas系统,再由后者发送给相关区块链节点。



技术实现要素:

总体上,本公开内容的实施例提供了用于托管区块链用户私钥的方案。

本公开内容的实施例的第一方面提出了一种用于托管区块链用户私钥的方法,所述方法包括:

a.接收来自客户端的第一操作请求,其中,所述第一操作请求包括baas平台的baas用户标识和一个或多个用户的标识信息,所述一个或多个用户与所述baas用户标识相关联;

b.根据所述一个或多个用户的标识信息,在第一可信环境中分别创建与所述一个或多个用户相对应的一个或多个私钥和证书;以及

c.将所述baas用户标识、所述一个或多个用户的标识信息以及相应的所述一个或多个私钥和证书通过安全方式关联地存储在与所述baas平台相关联的非易失性存储设备中。

本公开内容的实施例的第二方面提出了一种用于托管区块链用户私钥的装置,所述装置包括:

至少一个处理器;以及

存储器,其用于存储指令,当所述指令被执行时使得所述至少一个处理器执行以下步骤:

a.接收来自客户端的第一操作请求,其中,所述第一操作请求包括baas平台的baas用户标识和一个或多个用户的标识信息,所述一个或多个用户与所述baas用户标识相关联;

b.根据所述一个或多个用户的标识信息,在第一可信环境中分别创建与所述一个或多个用户相对应的一个或多个私钥和证书;以及

c.将所述baas用户标识、所述一个或多个用户的标识信息以及相应的所述一个或多个私钥和证书通过安全方式关联地存储在与所述baas平台相关联的非易失性存储设备中。

本公开内容的实施例的第三方面提出了一种用于托管区块链用户私钥的方法,所述方法包括:

a.向baas平台发送第一操作请求以请求由所述baas平台在第一可信环境中创建与一个或多个用户相对应的一个或多个私钥和证书,其中,所述第一操作请求包括所述baas平台的baas用户标识和所述一个或多个用户的标识信息,所述一个或多个用户与所述baas用户标识相关联,并且其中,所述baas用户标识、所述一个或多个用户的标识信息以及相应的所述一个或多个私钥和证书通过安全方式被关联地存储在与所述baas平台相关联的非易失性存储设备中;

b.向所述baas平台发送第二操作请求以请求由所述baas平台在第二可信环境中通过所述安全方式从所述非易失性存储设备中获取与特定用户相对应的特定私钥以对消息进行签名,其中,所述第二操作请求包括操作类型信息、所述baas用户标识、特定用户的标识信息以及与所述消息相关的特定信息,所述特定用户是所述一个或多个用户中待签名的用户,所述特定信息用于生成所述消息;

c.从所述baas平台接收第三操作请求,所述第三操作请求包括呈现给所述特定用户的与所述第二操作请求相关的信息,以请求所述特定用户确认签名操作;以及

d.响应于接收到所述第三操作请求,向所述baas平台发送所述特定用户的确认信息以确认所述签名操作。

本公开内容的实施例的第四方面提出了一种用于托管区块链用户私钥的装置,所述装置包括:

至少一个处理器;以及

存储器,其用于存储指令,当所述指令被执行时使得所述至少一个处理器执行以下步骤:

a.向baas平台发送第一操作请求以由所述baas平台在第一可信环境中创建与一个或多个用户相对应的一个或多个私钥和证书,其中,所述第一操作请求包括所述baas平台的baas用户标识和所述一个或多个用户的标识信息,所述一个或多个用户与所述baas用户标识相关联,并且其中,所述baas用户标识、所述一个或多个用户的标识信息以及相应的所述一个或多个私钥和证书通过安全方式被关联地存储在与所述baas平台相关联的非易失性存储设备中;

b.向所述baas平台发送第二操作请求以请求所述baas平台在第二可信环境中通过所述安全方式从所述非易失性存储设备中获取与特定用户相对应的特定私钥以对消息进行签名,其中,所述第二操作请求包括操作类型信息、所述baas用户标识、所述特定用户的标识信息以及与所述消息相关的特定信息,所述特定用户是所述一个或多个用户中待签名的用户,所述特定信息用于生成所述消息;

c.从所述baas平台接收第三操作请求,所述第三操作请求包括呈现给所述特定用户的与所述第二操作请求相关的信息,以请求所述特定用户确认签名操作;以及

d.响应于接收到所述第三操作请求,向所述baas平台发送所述特定用户的确认信息以确认所述签名操作。

本公开内容的实施例的第五方面提出了一种计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令在装置中运行时使得所述装置执行根据本公开内容的实施例的第一方面或第三方面所述的用于托管区块链用户私钥的方法。

附图说明

结合附图并参考以下详细说明,本公开内容的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开内容的若干实施例,在附图中:

图1示出了本公开内容的实施例可以应用于其中的示例性baas平台系统100的示意架构图。

图2示出了根据本公开内容的实施例的用于托管区块链用户私钥的方法200的流程图。

图3示出了根据本公开内容的实施例的用于托管区块链用户私钥的方法300的流程图。

图4示出了根据本公开内容的实施例的用于托管区块链用户私钥的装置400的示意图。

图5示出了根据本公开内容的实施例的用于托管区块链用户私钥的具体示例500。

具体实施方式

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

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

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。

本公开内容中的术语“第一”、“第二”仅用于描述指代、目的或某具体事物,而不能理解为指示或暗示相对重要性,或者隐含指明所指示的技术特征的数量。

本公开内容中的术语“多个”是指两个或两个以上。

本公开内容中的术语“可信环境”(或称可信执行环境tee(trustedexecutionenvironment))是指计算设备(例如,智能手机、平板电脑、机顶盒、智能电视等)上提供的一个安全区域,其可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。可信环境提供一个隔离的执行环境,保护其不受恶意软件的攻击,使特权或者非特权的软件无法访问该环境,提供的安全特征包含:隔离执行、可信应用的完整性、可信数据的机密性、安全存储等。例如,由处理器级的软件防护扩展(softwareguardextensions,sgx)或安全加密虚拟化(secureencryptedvirtualization,sev)创建的安全环境可以理解为可信环境。应当理解,可信环境还可以包括通过类似技术形成的安全环境。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。

如前所述,在现有的区块链网络中,通常采用两种方式来管理用户私钥和证书。在一种方式中,由baas系统来创建和管理用户组织的私钥和证书,它们以加密方式保存在baas系统的数据库中。这种方法的优点是用户可以在线发起操作,具有良好的用户体验,然而其缺点是用户担心baas服务提供商是否能安全地保管用户私钥,并且还担心服务商会不会窃取用户私钥。为消除这种安全性的顾虑,baas服务提供商可以选择主流云服务提供商的硬件加密服务,但目前通常仅在特定云环境(例如,金融云环境)中才提供此类服务,这就要求baas系统本身必须部署在特定云环境中,这增加了实现成本以及baas用户的成本。在另一种方式中,baas系统不保存任何用户私钥,而是提供给用户用于私钥证书管理的本地客户端,这种方法的优点是用户自己保管私钥,而不必担心baas服务提供商托管用户私钥时的安全隐患,然而其缺点是需要通过线上发起操作请求和线下批准两个步骤来完成,导致用户体验不佳。另外,客户端的安全性完全依赖于用户自身所处信息技术环境的安全性,即假定用户能够安全地保管好自己的私钥。

为了解决上述方式中存在的问题,并且为了兼顾安全性和可用性,本公开内容的实施例提供了由baas平台托管区块链用户私钥的方案,该方案采用安全隔离技术,通过在安全隔离的可信环境中创建和管理用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并使可信环境之外的程序(例如,诸如病毒程序之类的恶意程序、诸如操作系统(os)或虚拟机监控器(vmm)之类的特权程序或其他非特权程序等)无法威胁在可信环境中执行的动作的安全性,从而有效地提高对用户私钥的保护性。此外,这种可信环境的安全性服务可以容易地通过硬件级(例如,诸如中央处理器(cpu)之类的处理器等)安全技术来实现或升级,与使用硬件加密服务的方案相比,可以显著降低baas平台创建和管理用户私钥的成本。

目前,基于云的baas成为区块链技术的一个应用热点。例如,用户(诸如各个企业)通过对baas服务提供商所提供的baas平台进行设置,使其在云上创建相应的虚拟机实例并且安装部署多节点的区块链,从而获得符合自己应用需求的区块链,以高效地开发区块链业务。baas平台不仅降低了安装、配置、管理以及使用区块链的难度和成本,还能够为用户提供个性化的服务。本文中以基于云平台的实施例来示例说明用于托管区块链用户私钥的方案。本领域技术人员可以理解,本公开的实施例并不限于应用于基于私有云、公有云或者非基于云平台的区块链。

图1示出了本公开内容的实施例可以应用于其中的示例性baas平台系统100的示意架构图。在图1中,baas平台系统100基于云110而架设,其包括baas平台120、由baas平台120管理的多个区块链130、140、150、160以及示意性示出的存储设备170。baas平台系统100可以为用户提供公有链、联盟链或私有链服务。存储设备170用于存储baas平台系统100的各种配置数据、用户信息、日志数据等等。例如,baas平台120的用户从用户设备(或客户端)180例如经由baas平台120服务商公开的接口(例如,应用程序接口(applicationprograminterface,api))来与baas平台120交互。baas平台120可以管理(例如,创建等)多个区块链网络130、140、150和160,区块链网络130-160可以是特定于用户的,各自包括若干个区块链节点。在云应用环境中,区块链网络的至少一个节点可以对应于在云上创建的虚拟机实例,虚拟机实例中运行相应的节点应用程序。各个区块链网络具有相应的区块链应用,诸如金融、征信、物联网、经济贸易结算、资产管理等领域的各种应用。

需要注意的是,尽管区块链网络130、140、150和160被示意为各自独立,但各区块链网络也可以包括共同的区块链节点。例如,某个区块链节点可以属于一个或多个区块链网络。另外,图1中的区块链网络、用户以及存储设备的数量仅是示意而非限制,其可以是任意数量。

图2示出了根据本公开内容的实施例的用于托管区块链用户私钥的方法200的流程图。可以将该方法200实现在图1的baas平台系统100上,下面将参照图1和图2来描述方法200。方法200可以由图1中的baas平台120执行。如流程图所示,方法200可以包括以下步骤:

步骤201:接收来自客户端的第一操作请求,其中,第一操作请求包括baas平台的baas用户标识和一个或多个用户的标识信息,该一个或多个用户与该baas用户标识相关联。例如,用户以baas用户标识(id)(例如,公司a(例如,银行等))登录baas平台120,baas平台120接收用户从客户端180向baas平台120发送的第一操作请求,该第一操作请求用于请求创建一个或多个用户(例如,公司a的各部门的管理员等)的私钥和证书,该第一操作请求可以包括baas用户id和一个或多个用户的标识信息(例如,用户名)。此外,该一个或多个用户可以是针对该baas用户标识所创建的区块链具有授予访问权限的用户。

步骤202:根据该一个或多个用户的标识信息,在第一可信环境中分别创建与该一个或多个用户相对应的一个或多个私钥和证书。在该步骤中,通过采用安全隔离技术,通过在安全隔离的可信环境中创建用户私钥和证书,使用户可以确信其私钥没有泄露的安全隐患,并免受恶意程序、特权程序或非特权程序的威胁,提高对用户私钥的保护性。

步骤203:将该baas用户标识、该一个或多个用户的标识信息以及相应的该一个或多个私钥和证书通过安全方式关联地存储在与该baas平台相关联的非易失性存储设备中。在该步骤中,将所创建的私钥和证书以某种方式安全地存储在存储设备中,以便后续供其他可信环境能够以类似方式安全地访问所存储的私钥和证书。

在一些实施例中,方法200还可以包括以下步骤:接收来自客户端的第二操作请求,其中,第二操作请求包括操作类型信息、baas用户标识、特定用户的标识信息以及与待签名的消息相关的特定信息,该特定用户是该一个或多个用户中待签名的用户,该特定信息用于生成该消息。例如,baas平台120接收用户从客户端180向baas平台发送的第二操作请求,该第二操作请求可以例如对应于区块链上发起的操作(例如,发起交易引起的操作或发起配置管理引起的操作等),第二操作请求可以包括操作类型信息、baas用户id、待签名的特定用户的标识信息(例如,用户名)以及与待签名的消息相关的特定信息(例如,生成待签名消息所需的必要信息)。例如,操作类型信息指示配置管理操作,进一步地,操作类型信息可以更详细地指示诸如联盟管理(例如,新建联盟、新组织加入联盟等)、通道管理(例如,新建通道、向通道添加组织、向通道增加节点等)或智能合约管理(例如,向通道增加节点、安装智能合约、初始化智能合约、升级智能合约等)之类的配置管理操作。在其他示例中,操作类型信息可以指示其他类型的操作。

在一些实施例中,方法200还可以包括以下步骤:根据baas用户标识、特定用户的标识信息和该消息,在第二可信环境中通过该安全方式从非易失性存储设备获取与特定用户相对应的特定私钥,并使用特定私钥对该消息进行签名。在该步骤中,通过采用安全隔离技术,在安全隔离的可信环境中获取用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并免受恶意程序、特权程序或非特权程序的威胁,提高对用户私钥的保护性。在一些实施例中,方法200中的该步骤可以进一步包括:将baas用户标识、特定用户的标识信息以及该消息存储在第二可信环境中;转移至非可信环境,根据特定用户的标识信息,在该非可信环境中向客户端发送第三操作请求,第三操作请求包括呈现给特定用户的与第二操作请求相关的信息,以请求特定用户确认签名操作;从客户端接收响应于第三操作请求而发送的特定用户的确认信息以确认该签名操作,并将所述确认信息返回至第二可信环境;以及在第二可信环境中,基于确认信息被验证通过,根据特定用户的标识信息,通过安全方式从非易失性存储设备中获取与特定用户的标识信息相对应的特定私钥,并使用该特定私钥对消息进行签名。在上述进一步的步骤中,通过与用户交互确认验证签名操作,进一步增强了使用用户私钥进行签名的安全性。

在一些实施例中,方法200还可以包括以下步骤:从第二可信环境返回经签名的消息,向与操作类型信息相对应的区块链节点发送该经签名的消息。举例而言,在区块链为联盟链的情况下,当操作类型信息指示向通道添加节点的操作时,将经组织管理员签名的消息发送给相对应的peer节点。

在一些实施例中,步骤203可以包括:基于特定访问策略将baas用户标识、该一个或多个用户的标识信息以及相应的该一个或多个私钥和证书关联地存储在非易失性存储设备中,该特定访问策略确定不同于第一可信环境的其他可信环境能够访问非易失性存储设备中的baas用户标识、该一个或多个用户的标识信息以及相应的该一个或多个私钥和证书。例如,该特定访问策略可以是拥有共同作者(author)的可信环境可以共享通过该安全方式存储在非易失性存储设备中的数据,或者,也可以采用其他任何适当的特定访问策略。

在一些实施例中,第一可信环境和第二可信环境可以包括由处理器提供的安全环境,诸如通过前述的sgx或sev技术等创建的安全环境。

在一些实施例中,第二操作请求是基于由用户发起区块链交易引起的操作或基于由用户发起区块链配置管理引起的操作。

根据图2的实施例,通过在安全隔离的可信环境中创建和管理用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并使可信环境之外的程序(例如,诸如病毒程序之类的恶意程序、诸如操作系统(os)或虚拟机监控器(vmm)之类的特权程序或其他非特权程序等)无法威胁在可信环境中执行的动作的安全性,从而有效地提高对用户私钥的保护性。此外,这种可信环境的安全性服务可以容易地通过硬件级(例如,诸如中央处理器(cpu)之类的处理器等)安全技术来实现或升级,与使用硬件加密服务的方案相比,可以显著降低baas平台创建和管理用户私钥的成本。

图3示出了根据本公开内容的实施例的用于托管区块链用户私钥的方法300的流程图。可以将该方法300实现在图1的baas平台系统100上,下面将参照图1和图2来描述方法300。方法300可以由图1中的用户设备(或客户端)180执行。如流程图所示,方法300可以包括以下步骤:

步骤301:向baas平台发送第一操作请求以请求由baas平台在第一可信环境中创建与一个或多个用户相对应的一个或多个私钥和证书,其中,第一操作请求包括baas平台的baas用户标识和该一个或多个用户的标识信息,该一个或多个用户与baas用户标识相关联,并且其中,baas用户标识、该一个或多个用户的标识信息以及相应的该一个或多个私钥和证书通过安全方式被关联地存储在与baas平台相关联的非易失性存储设备中。例如,用户以baas用户id登录baas平台120,并从客户端180向baas平台120发送第一操作请求,该第一操作请求用于请求由baas平台120在第一可信环境中创建与一个或多个用户相对应的一个或多个私钥和证书,并且该一个或多个用户的私钥和证书通过安全方式被存储在与baas平台120相关联的非易失性存储设备中。在该步骤中,客户端请求baas平台通过采用安全隔离技术,通过在安全隔离的可信环境中创建用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并免受恶意程序、特权程序或非特权程序的威胁,提高对用户私钥的保护性。此外,由于客户端无需保管密钥,避免了对客户端信息技术环境安全性的依赖。

步骤302:向baas平台发送第二操作请求以请求由baas平台在第二可信环境中通过安全方式从非易失性存储设备获取与特定用户相对应的特定私钥以对消息进行签名,其中,第二操作请求包括操作类型信息、baas用户标识、与特定用户相关的标识信息以及与该消息相关的特定信息,特定用户包括在该一个或多个用户中。例如,用户通过客户端180向baas平台120发送第二操作请求,该第二操作请求用于请求baas平台120在第二可信环境中通过安全方式从非易失性存储设备获取与特定用户相对应的特定私钥以对消息进行签名。在该步骤中,客户端请求baas平台通过采用安全隔离技术,通过在安全隔离的可信环境中使用用户私钥进行签名,使用户可以确信其私钥没有泄露的安全隐患,并免受恶意程序、特权程序或非特权程序的威胁,提高对用户私钥使用的安全性。

步骤303:从baas平台接收第三操作请求,其中,第三操作请求包括呈现给特定用户的与第二操作请求相关的信息,以请求特定用户确认签名操作。例如,客户端180从baas平台120接收用于请求特定用户确认签名操作的第三操作请求,即baas平台120通知用户确认签名请求,该第三操作请求包括呈现给特定用户的与第二操作请求相关的信息。

步骤304:响应于接收到第三操作请求,向baas平台发送特定用户的确认信息以确认该签名操作。例如,用户通过客户端180向baas平台120发送确认信息以确认签名请求。

在一些实施例中,该安全方式是基于特定访问策略,该特定访问策略确定不同于第一可信环境的其他可信环境是否能够访问非易失性存储设备中的baas用户标识、该一个或多个用户的标识信息以及相应的该一个或多个私钥和证书。例如,该特定访问策略可以是拥有共同作者(author)的可信环境可以共享通过该安全方式存储在非易失性存储设备中的数据,或者,也可以采用其他任何适当的特定访问策略。

在一些实施例中,第一可信环境和所述第二可信环境可以包括由处理器提供的安全环境。

在一些实施例中,第二操作请求是基于由用户发起区块链交易引起的操作或基于由用户发起区块链配置管理引起的操作。

根据图3的实施例,通过在安全隔离的可信环境中创建和管理用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并使可信环境之外的程序(例如,诸如病毒程序之类的恶意程序、诸如操作系统(os)或虚拟机监控器(vmm)之类的特权程序或其他非特权程序等)无法威胁在可信环境中执行的动作的安全性,从而有效地提高对用户私钥的保护性。此外,这种可信环境的安全性服务可以容易地通过硬件级(例如,诸如中央处理器(cpu)之类的处理器等)安全技术来实现或升级,与使用硬件加密服务的方案相比,无需依赖特定的云环境,同时可以显著降低baas平台创建和管理用户私钥的成本。

图4示出了根据本公开内容的实施例的用于托管区块链用户私钥的示例性装置400的示意图。如图4所示,装置400包括至少一个处理器401和存储器402,当存储在存储器402中的指令执行时使得该至少一个处理器401执行本文所描述的方法(例如,图2的方法200和图3的方法300)的步骤中的任何一个或多个步骤。

存储器402还可以存储数据,例如指令在执行时所操作的数据等。存储器402可以包括易失性存储器和非易失性存储器,诸如只读存储器(rom)、随机存取存储器(ram)、移动盘、磁盘、光盘和u盘等。处理器401可以是中央处理器(cpu)、微控制器、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)或其他可编程逻辑器件、或是被配置为实现本公开的实施例的一个或多个集成电路。

图5示出了根据本公开内容的实施例的用于托管区块链用户私钥的具体示例500。示例500示出了在客户端501、baas平台502和区块链网络503之间的交互过程。客户端501可以是如图1中所示的用户设备180,baas平台502可以是如图1中所示的baas平台120,区块链网络503可以是如图1中所示的任何区块链网络。baas平台502可以包括软件部分504和硬件部分505,其中,软件部分504可以表示区块链应用进程空间,硬件部分505可以表示baas平台120的相关硬件部件。如图5所示,区块链应用进程空间504包括第一应用地址空间511、第二应用地址空间521和第三应用地址空间531。第一应用地址空间511可以包括第一可信环境512和存储在其中的第一代码513,第二应用地址空间521可以包括第二可信环境522和存储在其中的第二代码523,第三应用地址空间531可以包括非可信环境532和存储在其中的第三代码533。如图5所示,硬件部件505可以包括存储器506(诸如ram之类的易失性存储器等)、处理器模块507(诸如cpu模块等)、存储设备508(诸如磁盘驱动器之类的非易失性存储设备等)。例如,当调用并执行可信环境中的代码(例如,第一可信环境512中的第一代码513),处理器模块507可以将该可信环境中的代码和数据以隔离地加载到存储器506中的独立存储区中,以确保其机密性和完整性,使得只有该可信环境中的代码才能访问该独立存储区,并且免受恶意代码的破坏,并使得该可信环境之外的特权或非特权代码无法访问该独立存储区。应当理解,虽然将存储设备508示出为集成到baas平台502,但是存储设备508可以在baas平台502之外并与baas平台502接口连接。

如示例500所示,该交互过程可以包括:1、baas用户以baas用户id登录baas平台,从客户端501向baas平台发送私钥和证书创建请求(即,第一操作请求)以便为一个或多个用户创建私钥和证书,该请求可以包括baas用户id和一个或多个用户的标识信息(例如,用户名);2、baas平台502在接收到该私钥和证书创建请求时,安全地调用baas平台502的第一应用地址空间511(例如,私钥管理服务应用地址空间)中的第一可信环境512中的第一代码513(例如,私钥管理代码)以创建一个或多个用户的私钥和证书,第一代码513的入口参数包括baas用户id和一个或多个用户的标识信息,并将baas用户id、一个或多个用户的标识信息以及一个或多个私钥和证书通过安全方式关联地存储在与baas平台502相关联的存储设备508中;3、从客户端501向baas平台502发送区块链操作请求(即,第二操作请求,诸如交易请求或配置管理请求等),该请求可以包括操作类型信息、baas用户id、待签名的特定用户的标识信息以及用于构造待签名消息所需的必要信息;4、baas平台502在接收到该区块链操作请求时,基于该必要信息来构造待签名的消息,并安全地调用并执行被存储在第二应用地址空间521(例如,区块链操作服务应用地址空间)中的第二可信环境522中的第二代码523(例如,消息签名代码),其中,第二代码523的入口参数包括baas用户id、特定用户的标识信息、待签名的消息以及随机数nonce,该随机数nonce用于生成与签名请求的标识符以唯一地标识签名请求(例如,以避免重复的签名请求),并且其中,如果需要请求用户确认签名操作,则在执行第二代码523的过程中,将baas用户id、特定用户的标识信息以及待签名的消息存储在第二可信环境522中,并调用和执行被存储在第三应用地址空间531(例如,签名确认验证服务应用地址空间)中的非可信环境532中的第三代码533(例如,签名确认验证代码),第三代码533的入口参数包括baas用户id、特定用户的标识信息、操作类型信息和签名请求的标识符;5、baas平台502在执行第三代码533时,向客户端501发送请求(即,第三操作请求)以确认签名请求,包括呈现给特定用户的与第二操作请求(或签名请求等)相关的信息,以请求特定用户确认签名操作;6、从客户端501向baas平台502发送确认签名信息以确认签名操作;7、在baas平台502接收到确认签名信息时,将确认签名信息返回给第二可信环境522;8、在第二可信环境522中,在验证通过该确认签名信息后,继续执行第二代码523,通过安全方式从存储设备508获取与特定用户的标识信息相对应的特定私钥,并使用该特定私钥对消息进行签名;9、从第二可信环境522返回经签名的消息,baas平台502将经签名的消息发送给区块链503中的区块链节点,即,发送到与操作类型信息相对应的区块链节点(例如,联盟链中的各种节点,诸如orderer节点、peer节点等)。应当理解,上述的步骤4-7中的一些步骤是可选的,如果无需请求用户确认签名操作,则可以省略步骤4-7中的一些步骤的一个或多个动作。此外,可以以多种方式来实现与用户交互的签名确认过程(即,步骤5和6),诸如短信验证码确认、二维码扫描确认、用户口令校验等。

根据图5的实施例,通过在安全隔离的可信环境中创建和管理用户私钥,使用户可以确信其私钥没有泄露的安全隐患,并使可信环境之外的程序(例如,诸如病毒程序之类的恶意程序、诸如操作系统(os)或虚拟机监控器(vmm)之类的特权程序或其他非特权程序等)无法威胁在可信环境中执行的代码的安全性,从而有效地提高对用户私钥的保护性。此外,这种可信环境的安全性服务可以容易地通过硬件级(例如,诸如中央处理器(cpu)之类的处理器等)安全技术来实现或升级,与使用硬件加密服务的方案相比,可以显著降低baas平台创建和管理用户私钥的成本。

另外或替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明内容的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

一般而言,本公开内容的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开内容的实施例的各方面图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

应当注意,尽管在上文的详细描述中提及了装置的若干模块或单元,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开内容的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。

以上所述仅为本公开内容的实施例可选实施例,并不用于限制本公开内容的实施例,对于本领域的技术人员来说,本公开内容的实施例可以有各种更改和变化。凡在本公开内容的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开内容的实施例的保护范围之内。

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