基于区块链的密钥管理方法、系统及存储介质与流程

文档序号:24289810发布日期:2021-03-17 00:38阅读:498来源:国知局
基于区块链的密钥管理方法、系统及存储介质与流程

本公开涉及计算机和通信技术领域,具体而言,涉及一种基于区块链的密钥管理方法及系统、计算机可读存储介质和电子设备。



背景技术:

随着区块链技术的发展,区块链技术应用到越来越多的领域中。例如,在金融领域、信息安全、计算资源共享、娱乐、社交、供应链管理或医疗等领域均得到了广泛应用。

采用区块链技术的企业服务,在应用过程中会经常使用私钥进行签名处理,所以很多企业会将账户私钥放在服务器上,这样能够减少人工操作的工作量,同时也可以进行一些自动化的操作。相关技术中,企业在服务器上的私钥存储一般有以下几种方式:

(1)、将私钥privatekey存在磁盘上。

(2)、将私钥privatekey存在数据库中。

(3)、程序根据用户信息生成加密密码,并利用该加密密码将privatekey加密成keystore(密钥存储文件),将私钥privatekey存在数据库中,将密钥存储文件keystore存在磁盘中。

(4)、程序根据用户信息生成加密密码,并利用该加密密码将私钥privatekey加密成密钥存储文件keystore,并且将加密密码和密钥存储文件keystore存入数据库中。

(5)、程序根据用户信息以一定规则生成加密密码,并利用该加密密码将私钥privatekey加密成密钥存储文件keystore,将密钥存储文件keystore存在磁盘中。

(6)、程序根据用户信息以一定规则生成加密密码,并利用该加密密码将私钥privatekey加密成密钥存储文件keystore,将密钥存储文件keystore存入数据库中。

对于上述(1)和(2)两种情况,如果运维人员作恶或黑客攻击,就能够直接获取到私钥privatekey,安全性极差。

对于上述(3)和(4)两种情况,虽然不是直接存储私钥privatekey,但是存储了加密密码和密钥存储文件keystore,也是可以利用加密密码直接解密密钥存储文件keystore获得私钥privatekey的,安全性差。

对于上述(5)和(6)两种情况,密钥存储文件keystore的加密密码在程序中生成,然后密钥存储文件keystore另外存储,此情况相对于前面(1)-(4)的情况,安全性虽然要好,但是如果开发程序的人员和运维人员共同作恶,那么也是可以直接获取到私钥的。由此可以获知,相关技术中采用的私钥存储不够安全,由此会导致利用该私钥签名的待签名数据不够安全,无法保证最终的上链数据的安全可靠性。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解。



技术实现要素:

本公开实施例提供一种基于区块链的密钥管理方法及系统、计算机可读存储介质、电子设备,能够解决上述相关技术中存在的如何保证私钥的安全性,以实现待签名数据的正确签名,保证上链数据的安全可靠性的技术问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

本公开实施例提供一种基于区块链的密钥管理方法,所述方法包括:业务服务器通过外网接收签名请求,并将所述签名请求通过内网发送至离线服务器;其中,所述签名请求携带待签名数据和目标用户标识;所述业务服务器根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥;所述业务服务器接收所述离线服务器传送的离线服务公钥,根据所述离线服务公钥和所述业务服务私钥生成目标公钥;其中,所述离线服务公钥由所述离线服务器根据所述目标用户标识获得的对应离线服务私钥得到;所述业务服务器接收所述离线服务器根据所述待签名数据和所述离线服务私钥生成的离线服务签名,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名;所述业务服务器将所述目标公钥和所述目标签名传输至区块链网络中的节点设备,以便所述节点设备利用所述目标公钥对所述目标签名进行验证,在验证通过后将所述待签名数据上链。

本公开实施例提供一种基于区块链的密钥管理系统,所述系统包括:业务服务器,用于通过外网接收签名请求,并将所述签名请求通过内网发送至离线服务器,其中所述签名请求携带待签名数据和目标用户标识;根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥;离线服务器,用于通过内网接收所述业务服务器发送的所述签名请求,根据所述目标用户标识获得离线服务私钥及对应的离线服务公钥;将所述离线服务公钥传递至所述业务服务器;根据所述待签名数据和所述离线服务私钥,生成并向所述业务服务器发送离线服务签名;其中,所述业务服务器还用于接收所述离线服务公钥和所述离线服务签名,根据所述离线服务公钥和所述业务服务私钥生成目标公钥,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名;将所述目标公钥和所述目标签名传输至区块链网络中的节点设备,以便所述节点设备利用所述目标公钥对所述目标签名进行验证,在验证通过后将所述待签名数据上链。

本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的基于区块链的密钥管理方法。

本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的基于区块链的密钥管理方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的方法。

在本公开的一些实施例所提供的技术方案中,一方面,通过在业务服务器和离线服务器上分别存储业务服务私钥和离线服务私钥,实现了将私钥分成两部分的分离存储方案,即使作恶人员拿到业务服务器上保存的业务服务私钥,但因为无法获取离线服务器上保存的离线服务私钥,因此也无法获取最终的私钥,从而能够保证私钥存储的安全性;另一方面,当企业服务利用私钥进行待签名数据的自动化处理以实现区块链上链时,通过离线服务器和业务服务器的共同管理来生成待签名数据的目标签名,能够保证最终上链数据的安全性和可靠性,能够防止企业内部或外部人员作恶而导致资金丢失的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本公开的一实施例的基于区块链的密钥管理方法的流程图。

图2示意性示出了根据本公开的另一实施例的基于区块链的密钥管理方法的流程图。

图3示意性示出了根据本公开的又一实施例的基于区块链的密钥管理方法的流程图。

图4示意性示出了根据本公开的再一实施例的基于区块链的密钥管理方法的流程图。

图5示意性示出了根据本公开的一实施例的基于区块链的密钥管理方法的示意图。

图6示意性示出了根据本公开的一实施例的基于区块链的密钥管理方法的交互流程图。

图7是本公开实施例提供的基于区块链的密钥管理方法应用于区块链网络的一个可选的结构示意图。

图8是本公开实施例提供的区块结构一个可选的示意图。

图9示意性示出了根据本公开的一实施例的基于区块链的密钥管理系统的框图。

图10示出了适于用来实现本公开实施例的电子设备的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。

附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。

下面首先对本公开实施例中涉及的部分术语进行解释说明。

区块链(blockchain):是分布式数据存储,点对点传输,共识机制,加密算法等计算机技术的新型应用模型。区块链本质上是一个去中心化的数据库,是一串使用密码学相关联产生的数据块,各个数据块之间通过随机散列(也称哈希算法)实现链接,后一个区块包含前一个区块的哈希值。区块链技术在数字资产,智能合约,物流追踪,产品保护等场景有着广泛应用。

私钥(privatekey):区块链的私钥是一串随机数。一般地,这串随机数比较长,例如可以为256位,由0和1组成,但本公开并不限定于此。

零知识证明:又名零知识协议,是一种基于概率的验证方法,在证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

ecdsa(ellipticcurvedigitalsignaturealgorithm,椭圆曲线数字签名算法):是一种椭圆曲线,其优点是在已知公钥的情况下,无法推导出该公钥对应的私钥,另外可以在不暴露私钥的任何信息情况下,使用一些方法来证明默认拥有公钥所对应的私钥。ecdsa可以在区块链中使用。

同态加密:是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。本质上,同态加密是指,对明文进行环上的加法和乘法运算再加密,与加密后对密文进行相应的运算,结果是等价的。

图1示意性示出了根据本公开的一实施例的基于区块链的密钥管理方法的流程图。本公开实施例提供的方法可以应用于基于区块链的密钥管理系统,如图9所示,基于区块链的密钥管理系统可以包括离线服务器910和业务服务器920,离线服务器910和业务服务器920之间通过内网连接,业务服务器920可以与外网通信,例如从终端设备700接收签名请求。如图1所示,本公开实施例提供的方法可以包括以下步骤。

在步骤s110中,业务服务器通过外网接收签名请求,并将所述签名请求通过内网发送至离线服务器;其中,所述签名请求携带待签名数据和目标用户标识。

本公开实施例中,在服务器管理私钥的过程中,将服务器分割成两层:业务服务器和离线服务器。其中,业务服务器是直接可被外网连接,可直接对接用户的,用户可以通过其终端设备上安装的客户端向业务服务器发起签名请求,在下面的实施例中,以用户u1作为目标用户为例进行举例说明,其对应的目标用户标识记为userid,可以是任意的能够将该用户u1与其他的用户唯一区别开来的信息,用户u1可以是任意的用户。

其中,离线服务器通过内网对接业务服务器,每次签名请求由业务服务器从客户端接收到后,再发送至离线服务器,每次的签名请求和某一个目标用户例如u1相关联。在该签名请求中携带了待签名数据m和目标用户标识userid。

可以理解的是,业务服务器和离线服务器可以是在物理上独立的不同服务器,但也可以部署在同一物理上的服务器上,本公开对此不做限定。

在步骤s120中,所述业务服务器根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥。

本公开实施例中,所述业务服务器可以根据所述签名请求中携带的目标用户标识获得业务服务私钥及对应的业务服务公钥,所述离线服务器可以根据所述签名请求中携带的所述目标用户标识获得离线服务私钥及对应的离线服务公钥。其中,在下面的实施例中,可以将业务服务器上的私钥称之为业务服务私钥,标记为prvkey1,其对应的密钥存储文件称之为业务服务密钥存储文件,标记为keystore1(也可以简写为ks1),所对应的加密密码称之为业务服务加密密码,标记为pwd1,业务服务私钥prvkey1对应的业务服务公钥可以标记为p1。可以将离线服务器上的私钥称之为离线服务私钥,标记为prvkey2,其对应的密钥存储文件称之为离线服务密钥存储文件,标记为keystore2(也可以简写为ks2),所对应的加密密码称之为离线服务加密密码,标记为pwd2,离线服务私钥prvkey2对应的离线服务公钥可以标记为p2。

其中,密钥存储文件keystore(包括ks1和ks2)是存储私钥的一种文件格式,它使用加密密码(包括pwd1和pwd2)来加密私钥,以起到一定程度上的保护作用。

假设u1需要发起一笔签名,其可以向业务服务器发起签名请求,该签名请求携带目标用户标识userid、目标业务码和待签名数据m,业务服务器可以根据目标用户标识userid和目标业务码查询业务服务数据库业务服务私钥及对应的业务服务公钥。生成用户u1对应的业务服务私钥prvkey1和业务服务公钥,以及获得业务服务私钥prvkey1及其对应的业务服务公钥的过程可以参见下图2实施例的描述。

在步骤s130中,所述业务服务器接收所述离线服务器传送的离线服务公钥,根据所述离线服务公钥和所述业务服务私钥生成目标公钥;其中,所述离线服务公钥由所述离线服务器根据所述目标用户标识获得的对应离线服务私钥得到。

本公开实施例中,离线服务器可以根据所述签名请求中携带的目标用户标识获得离线服务私钥及其对应的离线服务公钥,然后,离线服务器可以将其离线服务公钥传递给业务服务器,业务服务器接收到该离线服务公钥后,可以根据接收到的离线服务公钥和该业务服务器自身的业务服务私钥生成目标公钥p,具体可以参见下图3实施例的描述。

在步骤s140中,所述业务服务器接收所述离线服务器根据所述待签名数据和所述离线服务私钥生成的离线服务签名,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名。

离线服务器可以根据待签名数据和离线服务私钥生成离线服务签名s’。本公开实施例中,可以采用任意一种合适的签名方法,例如rsa(提出该算法的三人开头字母拼在一起组成的)数字签名、dss(datasignaturestandard,公钥数字签名,电子签章)数字签名、elgamal(一个基于迪菲-赫尔曼密钥交换的非对称加密算法)数字签名、ecdsa数字签名等等,在下面的举例说明中,均以ecdsa为例进行举例说明,但本公开并不限定于此。

业务服务器根据离线服务器发送的离线服务签名s’生成目标签名(r,s)的过程可以参见下图4和图5的描述。

在步骤s150中,所述业务服务器将所述目标公钥和所述目标签名传输至区块链网络中的节点设备,以便所述节点设备利用所述目标公钥对所述目标签名进行验证,在验证通过后将所述待签名数据上链。

本公开实施例中,业务服务器可以在获得目标公钥p之时即将其传递至区块链网络中的节点设备,并不要求和目标签名一起发送至区块链网络中的节点设备。当区块链网络中的节点设备接收到业务服务器发送的目标签名后,其可以利用预先存储的目标公钥p对目标签名进行验证,在验证通过后将待签名数据m上链,反之,则不能上链。

本公开实施方式提供的基于区块链的密钥管理方法,一方面,通过在业务服务器和离线服务器上分别存储业务服务私钥和离线服务私钥,实现了将私钥分成两部分的分离存储方案,即使作恶人员拿到业务服务器上保存的业务服务私钥,但因为无法获取离线服务器上保存的离线服务私钥,因此也无法获取最终的私钥,从而能够保证私钥存储的安全性;另一方面,当企业服务利用私钥进行待签名数据的自动化处理以实现区块链上链时,通过离线服务器和业务服务器的共同管理来生成待签名数据的目标签名,能够保证最终上链数据的安全性和可靠性,能够防止企业内部或外部人员作恶而导致资金丢失的问题。本公开实施例提供的基于区块链的密钥管理方法,能够防止运维人员和黑客作恶,即使作恶人员拿到离线服务器端的离线服务私钥,但是因无法获取到业务服务器端的业务服务私钥,因此也无法获取最终的私钥。

图2示意性示出了根据本公开的另一实施例的基于区块链的密钥管理方法的流程图。本公开实施例中,所述签名请求还可以包括目标业务码。本公开实施例中,业务码是离线服务器分配给业务服务器的一个业务标识码,例如实际情况中,同一个业务请求方可能会有多个业务,比如财务可能会有专门的发工资的账户和报销的账户,那么为了区分这两个业务,会有两个不同私钥来进行操作。如果没有业务码,那么可能一个业务请求方就只有一个私钥,那么就无法区分使用。业务码的作用就是为了让业务方能够同时拥有多个私钥。所述业务码中包括所述目标业务码。

相比上述图1实施例,图2实施例的不同之处在于,进一步还可以包括以下步骤。

在步骤s210中,所述业务服务器生成所述业务服务私钥和所述业务服务随机盐值,并获取所述业务服务固有盐值。

具体的,业务服务器可以调用底层函数例如ecdsa.generatekey来生成业务服务私钥prvkey1。

然后,业务服务器可以生成与目标用户标识userid唯一对应的业务服务随机盐值salt1(可以简写为st1)。本公开实施例中,通过给不同用户生成不同的随机盐值,可以保证强制破解难度。

业务服务器获取业务服务固有盐值subsalt1(可以简写为subst1),其中业务服务固有盐值subsalt1可以从代码中获取,也可以是输入的。这里假设代码中有固有字段subsalt1作为业务服务固有盐值,如:www.jiuqi.com。

在步骤s220中,所述业务服务器对所述目标用户标识、所述业务服务随机盐值和所述业务服务固有盐值进行拼接处理,获得所述业务服务拼接串。

然后,业务服务器在程序中,拼接目标用户标识userid、业务服务随机盐值salt1和业务服务固有盐值subsalt1,获得业务服务拼接串pwdall1=userid+salt1+subsalt1。

在步骤s230中,所述业务服务器随机生成所述业务服务位移量,并使用所述业务服务位移量对所述业务服务拼接串进行位移变化处理,获得所述业务服务初始加密密码。

业务服务器随机生成业务服务位移量tag1(可以简写为tg1)。

本公开实施例中,例如可以使用tag1=生成rank(0,16)函数来生成位移量tag1,以将规律性拼接串模糊化,同时也是为了后续缩短加密密码做混淆。

业务服务器使用tag1将pwdall1进行位移变化,获得业务服务初始加密密码pwdblur1。

在步骤s240中,所述业务服务器对所述业务服务初始加密密码进行截取处理,生成所述业务服务加密密码。

业务服务器截取业务服务初始加密密码pwdblur1的预定位例如前16位(在下面的举例说明中,以前16位为例进行举例说明,但本公开并不限定于此),作为业务服务密钥存储文件keystore1的业务服务加密密码pwd1。截取初始加密密码的前16位可以提高后续的解密速度。

这里考虑到单纯的使用salt1,会导致最后的加密密码pwd1较长,如果不使用位移量tag1直接截取,那么salt1或subsalt1可能都未起到作用,这样安全性也会降低。使用tag1位移量,是将原来固有的顺序打乱,然后截取数据,这样就会能够保证所有的数据都有用到,同时也能够保证pwd1的长度不会过长。

在步骤s250中,所述业务服务器使用所述业务服务加密密码加密所述业务服务私钥,获得业务服务密钥存储文件。

业务服务器使用业务服务加密密码pwd1加密业务服务私钥prvkey1,获得业务服务密钥存储文件keystore1(可以简写为ks1)。

在步骤s260中,所述业务服务器将所述业务服务密钥存储文件、所述业务服务位移量、所述业务服务随机盐值与所述目标用户标识和所述目标业务码关联存储至业务服务数据库中。

然后,业务服务器可以将业务服务密钥存储文件keystore1、业务服务位移量tag1、业务服务随机盐值salt1与目标用户标识userid和所述目标业务码关联存储至业务服务数据库中。

本公开实施例中,在业务服务数据库中,目标业务码和目标用户标识userid与加密后的业务服务密钥存储文件keystore1具有唯一关联性,做一个业务上的唯一关联,使得同一个用户在多个业务中可以拥有不同的私钥,因此,后续业务服务器可以通过目标业务码和目标用户标识userid获取到加密后的业务服务私钥prvkey1。

继续参考图2,上述图1实施例中的步骤s120可以进一步包括以下步骤。

在步骤s121中,所述业务服务器根据所述签名请求中的所述目标用户标识和所述目标业务码,从所述业务服务数据库中获取所述业务服务密钥存储文件、所述业务服务位移量和所述业务服务随机盐值。

u1发起签名请求,业务服务器从业务服务数据库中获取与用户u1的目标用户标识userid以及目标业务码唯一对应的业务服务密钥存储文件keystore1,业务服务位移量tag1和业务服务随机盐值salt1。并且,业务服务器获取业务服务固有盐值subsalt1。

在步骤s122中,所述业务服务器对所述目标用户标识、所述业务服务随机盐值和所述业务服务固有盐值进行拼接处理,获得业务服务拼接串。

业务服务器根据上述创建时的操作,同样进行数据的拼接,获取pwd1=userid+salt1+subsalt1。

在步骤s123中,所述业务服务器使用所述业务服务位移量对所述业务服务拼接串进行位移变化处理,获得业务服务初始加密密码。

业务服务器获取pwdblur1=pwdall1使用tag1值进行位移。

在步骤s124中,所述业务服务器对所述业务服务初始加密密码进行截取处理,生成业务服务加密密码。

例如,业务服务器获取pwd1=pwdblur1截取前16位。

在步骤s125中,所述业务服务器使用所述业务服务加密密码解密所述业务服务密钥存储文件,获得所述业务服务私钥。

业务服务器使用pwd1解密keystore1获取业务服务私钥prvkey1。

在步骤s126中,所述业务服务器根据所述业务服务私钥生成所述业务服务公钥。

在示例性实施例中,在所述业务服务器通过内网将所述签名请求发送至所述离线服务器之前,所述方法还可以包括:所述业务服务器接收所述离线服务器签发的应用程序接口标识、应用程序接口密钥及业务码,所述业务码包括目标业务码;所述业务服务器向所述离线服务器发送所述应用程序接口标识、所述应用程序接口密钥、所述目标业务码、所述目标用户标识和业务服务器地址,以便所述离线服务器对从所述业务服务器接收到的所述业务服务器地址、所述应用程序接口标识、所述应用程序接口密钥和所述目标业务码进行鉴权。

本公开实施例中,当业务服务器请求离线服务器的服务时,可以提供离线服务器签发的apiid(applicationprogramminginterfaceidentity,应用程序接口标识)、apikey(applicationprogramminginterfacekey,应用程序接口密钥)、业务服务器地址(例如ip(internetprotocol,网际互联协议)地址)和目标业务码(一种业务标识代码,用于唯一区别每项业务)。离线服务器接收到业务服务器发送的请求(例如下文的业务请求)时,先对业务服务器地址ip进行鉴权,当业务服务器地址ip鉴权通过后,再对接收到的apiid和apikey做授权鉴权。

在示例性实施例中,所述方法还可以包括:鉴权通过后,所述离线服务器生成所述离线服务私钥和与所述目标用户标识唯一对应的离线服务随机盐值,并获取离线服务固有盐值;所述离线服务器对所述目标用户标识、所述离线服务随机盐值和所述离线服务固有盐值进行拼接处理,获得离线服务拼接串;所述离线服务器随机生成离线服务位移量,并使用所述离线服务位移量对所述离线服务拼接串进行位移变化处理,获得离线服务初始加密密码;所述离线服务器对所述离线服务初始加密密码进行截取处理,生成离线服务加密密码;所述离线服务器使用所述离线服务加密密码加密所述离线服务私钥,获得离线服务密钥存储文件;所述离线服务器将所述离线服务密钥存储文件、所述离线服务位移量、所述离线服务随机盐值与所述目标用户标识和所述目标业务码关联存储至离线服务数据库中。

业务服务器使用apiid、apikey、目标业务码、userid以及ip和离线服务器建立安全通讯,离线服务器收到后,通过权限验证后,类似的,从离线服务数据库中解密出离线服务私钥prvkey2。

具体的,鉴权通过后,可以在离线服务器和业务服务器之间建立一个安全通讯的通道。离线服务器可以调用底层函数例如ecdsa.generatekey来生成离线服务私钥prvkey2,然后,离线服务器可以生成与目标用户标识userid唯一对应的离线服务随机盐值salt2(可以简写为st2),并获取离线服务固有盐值subsalt2(可以简写为subst2),其中离线服务固有盐值subsalt2可以从代码中获取,也可以是输入的;然后,离线服务器拼接userid、salt2和subsalt2,获得离线服务拼接串pwdall2;离线服务器随机生成离线服务位移量tag2(可以简写为tg2);离线服务器使用tag2将pwdall2进行位移变化,获得离线服务初始加密密码pwdblur2;离线服务器可以截取pwdblur2的预定位(在下面的举例说明中,以前16位为例进行举例说明,但本公开并不限定于此),生成离线服务加密密码pwd2;离线服务器使用pwd2加密prvkey2,获得离线服务密钥存储文件keystore2(可以简写为ks2);然后,离线服务器可以将离线服务密钥存储文件keystore2、离线服务位移量tag2、离线服务随机盐值salt2与目标用户标识userid和所述目标业务码关联存储至离线服务数据库中。

假设目标用户为用户u1,其在业务服务器中注册成为新的用户,业务服务器根据用户u1的用户信息生成其对应的账户,可以通过以上方式来实现,其基本设计理念是程序和运维分离,彼此不可知。当业务服务器和离线服务器通过上述鉴权建立了安全通讯通道后,在安全通讯的通道下,业务服务器和离线服务器可以分别将业务服务私钥和离线服务私钥转化为业务服务密钥存储文件keystore1和离线服务密钥存储文件keystore2进行存储。

在示例性实施例中,在所述业务服务器通过内网将所述签名请求发送至所述离线服务器之后,所述方法还可以包括:所述离线服务器接收所述业务服务器发送的所述应用程序接口标识、所述应用程序接口密钥、所述目标业务码、所述目标用户标识和所述业务服务器地址;所述离线服务器对接收到的所述业务服务器地址、所述应用程序接口标识、所述应用程序接口密钥和所述目标业务码进行鉴权。

本公开实施例中,离线服务器只能是可信任的业务服务器才能访问,但是为了进一步加强安全性,防止业务服务器被攻克而肆意访问离线服务器,可以对可信任的业务服务器也进行多重鉴权。在上述账户生成过程以及这里的发起签名阶段都需要保证安全可靠,防止中间被拦截篡改,所以需要业务服务器和离线服务器之间两次建立安全通讯的通道。

在示例性实施例中,所述方法还可以包括:鉴权通过后,所述离线服务器根据所述签名请求中的所述目标用户标识和所述目标业务码,从所述离线服务数据库中获取所述离线服务密钥存储文件、所述离线服务位移量和所述离线服务随机盐值;所述离线服务器对所述目标用户标识、所述离线服务随机盐值和所述离线服务固有盐值进行拼接处理,获得所述离线服务拼接串;所述离线服务器使用所述离线服务位移量对所述离线服务拼接串进行位移变化处理,获得所述离线服务初始加密密码;所述离线服务器对所述离线服务初始加密密码进行截取处理,生成所述离线服务加密密码;所述离线服务器使用所述离线服务加密密码解密所述离线服务密钥存储文件,获得所述离线服务私钥;所述离线服务器根据所述离线服务私钥生成所述离线服务公钥。

图3示意性示出了根据本公开的又一实施例的基于区块链的密钥管理方法的流程图。如图3所示,上述图1实施例中的步骤s130可以进一步包括以下步骤。

在步骤s131中,所述业务服务器将所述业务服务公钥传递至所述离线服务器,以便所述离线服务器利用所述离线服务私钥同态加密所述业务服务公钥,生成所述目标公钥。

例如,业务服务器可以通过零知识证明方式将业务服务公钥安全传递给离线服务器。

在步骤s132中,所述业务服务器接收所述离线服务器传递的所述离线服务公钥。

例如,业务服务器可以通过零知识证明方式从离线服务器安全接收离线服务公钥。

在步骤s133中,所述业务服务器利用所述业务服务私钥同态加密所述离线服务公钥,生成所述目标公钥。

具体地,用户u1可以通过以下方式来生成一个对应的私钥账户:在业务服务器中,业务服务私钥和目标用户标识userid是绑定存储的,在离线服务器中,离线服务私钥和目标用户标识userid是绑定存储的,因此,根据签名请求中的目标用户标识userid,可以分别确定业务服务器中的业务服务私钥prvkey1和离线服务器中的离线服务私钥prvkey2,业务服务器根据业务服务私钥prvkey1可以生成对应的业务服务公钥p1,离线服务器根据离线服务私钥prvkey2可以生成对应的离线服务公钥p2;然后业务服务器使用零知识证明方式将业务服务私钥prvkey1对应的业务服务公钥p1传递至离线服务器,离线服务器使用零知识证明方式将离线服务私钥prvkey2对应的离线服务公钥p2传递至业务服务器,使用零知识证明方式来传递公钥,可以防止传递过程中业务服务公钥p1和离线服务公钥p2被替换,从而可以保证最终生成的目标公钥p的正确性;业务服务器利用自身的业务服务私钥prvkey1同态加密接收到的离线服务公钥p2,可以获得最终的目标公钥p,离线服务器利用自身的离线服务私钥prvkey2同态加密接收到的业务服务公钥p1,也可以获得最终的目标公钥p,即业务服务器和离线服务器将各自的公钥传送给对方,使用自己的私钥及对方的公钥可以生成最终的目标公钥。

图4示意性示出了根据本公开的再一实施例的基于区块链的密钥管理方法的流程图。本公开实施例中,所述目标签名可以包括第一部分和第二部分。如图4所示,上述图1实施例中的步骤s140可以进一步包括以下步骤。

在步骤s141中,所述业务服务器将所述业务服务私钥的业务服务密钥存储文件发送至所述离线服务器。

安全通讯建立成功后,业务服务器和离线服务器使用prvkey1和prvkey2进行ecdsa签名,获得最终的签名数据作为目标签名。

下面结合图5进行举例说明。如图5所示,可以包括私钥分离存储阶段和签名阶段。

其中,在私钥分离存储阶段,业务服务器根据公式p1=prvkey1*g获得业务服务私钥prvkey1对应的业务服务公钥p1,其中g为椭圆曲线参数,离线服务器根据公式p2=prvkey2*g获得离线服务私钥prvkey2对应的离线服务公钥p2,然后离线服务器将p2传递给业务服务器,业务服务器将p1传递给离线服务器,业务服务器根据公式p=prvkey1*p2利用prvkey1同态加密p2获得目标公钥p,离线服务器根据公式p=prvkey2*p1利用prvkey2同态加密p1获得目标公钥p。

继续参考图5,业务服务器将加密后的prvkey1即ks1传递给离线服务器。

在步骤s142中,所述业务服务器生成业务服务随机数及对应的业务服务随机点。

业务服务器生成业务服务随机数k1,并根据公式r1=k1*g生成对应的业务服务随机点r1。

在步骤s143中,所述业务服务器将所述业务服务随机点传递至所述离线服务器,以便所述离线服务器生成所述待签名数据的哈希值,生成离线服务随机数及对应的离线服务随机点,根据所述离线服务随机数和所述业务服务随机点生成目标随机点,并根据所述哈希值、所述目标随机点、所述业务服务密钥存储文件、所述离线服务私钥和所述离线服务随机数生成所述离线服务签名。

所述业务服务器可以通过零知识证明方式将所述业务服务随机点传递至所述离线服务器。在签名阶段,离线服务器对待签名数据m进行哈希运算,即z=哈希(m)。离线服务器生成离线服务随机数k2,并根据公式r2=k2*g生成对应的离线服务随机点r2。离线服务器根据公式r=k2*r1生成目标随机点r。离线服务器可以根据公式s’=(z+r*ks1*prvkey2)/k2计算获得离线服务签名s’。

在步骤s144中,所述业务服务器接收所述离线服务器传递的所述离线服务随机点。

离线服务器通过零知识证明方式将r2安全传递业务服务器。

在步骤s145中,所述业务服务器接收所述离线服务器发送的所述离线服务签名。

离线服务器将s’传递给业务服务器。

业务服务器通过零知识证明方式将r1安全传递给离线服务器。

在步骤s146中,所述业务服务器根据所述业务服务随机数和所述离线服务随机点生成所述目标随机点。

业务服务器根据公式r=k1*r2生成目标随机点r。

在步骤s147中,所述业务服务器利用所述业务服务公钥解密所述离线服务签名,并根据所述业务服务随机数生成所述待签名数据的所述第一部分,并将所述目标随机点作为所述第二部分。

业务服务器可以利用其自身的业务服务公钥p1解密s’,标记为d(s’)=(z+r*prvkey1*prvkey2)/k2,然后通过公式s=d(s’)/k1计算获得目标签名的第二部分,并获得最终的目标签名(r,s)。

图6示意性示出了根据本公开的一实施例的基于区块链的密钥管理方法的交互流程图。如图6所示,离线服务器和业务服务器通过内网通信,业务服务器可以通过外网与客户端(假设对应用户u1)和区块链网络进行通信。

在步骤s1中,离线服务器向业务服务器签发应用程序接口标识和应用程序接口密钥,若需要区分不同业务,还可以签发业务码,所述业务码中可以包括目标业务码。

业务服务器接收离线服务器签发的apiid、apikey以及业务码并存储在业务服务器。

在步骤s2中,用户通过终端设备上安装的客户端向业务服务器发送注册请求。

业务服务器接收客户端发送的注册请求,并响应该注册请求,生成用户u1的目标用户标识userid。

在步骤s3中,业务服务器可以将该目标用户标识返回给客户端。

在步骤s4中,用户通过客户端向业务服务器发送业务请求。

业务服务器接收到该业务请求,该业务请求通过目标用户标识userid与用户u1关联。

在步骤s5中,业务服务器根据该业务请求,向离线服务器提交存储的apiid、apikey、ip(业务服务器地址)、目标业务码和userid。

在步骤s6中,离线服务器从业务服务器接收到该业务请求,并对该业务请求中的应用程序接口标识、应用程序接口密钥和业务服务器地址进行第一次鉴权。

若第一次鉴权通过,则在离线服务器和业务服务器之间建立安全通讯通道。

在步骤s71中,业务服务器生成业务服务私钥及对应的业务服务公钥p1。

例如,业务服务器调用ecdsa.generatekey来生成业务服务私钥prvkey1,并生成对应的业务服务公钥p1。

在步骤s72中,离线服务器生成离线服务私钥及对应的离线服务公钥。

离线服务器调用ecdsa.generatekey来生成离线服务私钥prvkey2,并生成对应的离线服务公钥p2。

在步骤s81中,业务服务器将业务服务私钥转换为业务服务密钥存储文件,并将业务服务密钥存储文件、业务服务位移量、业务服务随机盐值与目标用户标识和目标业务码绑定存储至业务服务数据库。

业务服务器将prvkey1转换为ks1,并将ks1、tg1、st1与userid和目标业务码绑定存储至业务服务数据库。

在步骤s82中,离线服务器将离线服务私钥转换为离线服务密钥存储文件,并将离线服务密钥存储文件、离线服务位移量、离线服务随机盐值与目标用户标识和目标业务码绑定存储至离线服务数据库。

离线服务器将prvkey2转换为ks2,并将ks2、tg2、st2与userid和目标业务码绑定存储至离线服务数据库。

步骤s81和s82的实现具体可以参见上述图2实施例。

本公开实施例中,离线服务器是一个部分私钥管理服务,它会保管多个业务方中的每个业务方下的多个用户的部分私钥,而每个用户的私钥都是不一样的,所以需要根据userid+目标业务码来精准找到对应的部分私钥(离线服务私钥),以与业务方的部分私钥(业务服务私钥)进行共同操作。

在步骤s91中,业务服务器将业务服务公钥传递至离线服务器。

业务服务器将p1传递至离线服务器。

在步骤s92中,离线服务器将离线服务公钥传递至业务服务器。

离线服务器将p2传递至业务服务器。

在步骤s101中,业务服务器用业务服务私钥同态加密离线服务公钥获得目标公钥。

业务服务器用prvkey1同态加密p2获得p,代表用户u1的账户。

在步骤s102中,离线服务器用离线服务私钥同态加密业务服务公钥获得目标公钥。

离线服务器用prvkey2同态加密p1获得p,代表用户u1的账户。

在步骤s11中,用户通过客户端向业务服务器发送签名请求。

在步骤s12中,业务服务器接收该签名请求,根据目标用户标识和目标业务码从业务服务数据库中获取业务服务密钥存储文件、业务服务位移量、业务服务随机盐值。

业务服务器接收该签名请求,根据userid和目标业务码从业务服务数据库中获取ks1、tg1和st1。

在步骤s13中,业务服务器根据目标用户标识、业务服务密钥存储文件、业务服务位移量、业务服务随机盐值获得业务服务私钥。

业务服务器根据userid、ks1、tg1和st1获得prvkey1。

在步骤s14中,业务服务器将该签名请求再发送至离线服务器。

离线服务器接收到该签名请求后,首先对该签名请求进行第二次鉴权,若第二次鉴权通过,则在离线服务器和业务服务器之间建立安全通讯通道。

在步骤s15中,离线服务器根据目标用户标识和目标业务码从离线服务数据库中获取离线服务密钥存储文件、离线服务位移量和离线服务随机盐值。

离线服务器根据userid和目标业务码从离线服务数据库中获取ks2、tg2和st2。

在步骤s16中,离线服务器根据目标用户标识、离线服务密钥存储文件、离线服务位移量和离线服务随机盐值获得prvkey2。

离线服务器根据userid、ks2、tg2和st2获得prvkey2。步骤s12-s16的实现具体可以参见上述图3实施例。

在步骤s17中,离线服务器和业务服务器使用离线服务私钥和业务服务私钥获得待签名数据的目标签名。

离线服务器和业务服务器使用prvkey2和prvkey1获得待签名数据m的目标签名(r,s)。步骤s17的实现具体可以参见上述图5实施例。

在步骤s18中,业务服务器将目标签名和目标公钥发送至区块链网络。

业务服务器得到目标签名(r,s)后,将其发送至区块链的节点设备,因为此时的目标签名(r,s)是最终的签名数据,其公钥是两方共同生成的目标公钥p。本公开实施例中,是根据业务服务器的业务服务私钥和离线服务器的离线服务私钥来共同生成新的目标公钥,只能双方合作才能进行相应的签名。

在步骤s19中,区块链网络验证通过后,将待签名数据上链。

本公开实施方式提供的基于区块链的密钥管理方法,通过将私钥分离在业务服务器和离线服务器上存储,达到共同管理的功能,保证了企业进行区块链上链服务时,私钥保管的安全性,能够防止内部或外部人员作恶而导致资金丢失的问题。即使作恶人员拿到离线服务器端的离线服务私钥,但是因无法获取业务服务器端的业务服务私钥,因此也无法获取最终的私钥。

图7是本公开实施例提供的基于区块链的密钥管理方法应用于区块链网络的一个可选的结构示意图。

参见图7,图7是本公开实施例提供的基于区块链的密钥管理方法应用于区块链网络的一个可选的结构示意图,由多个节点200(接入网络中的任意形式的计算设备,如服务器、用户终端,即上述实施例中的节点设备)和客户端300形成,节点之间形成组成的点对点(p2p,peertopeer)网络,p2p协议是一个运行在传输控制协议(tcp,transmissioncontrolprotocol)协议之上的应用层协议。在智能合约检测系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。

参见图7示出的区块链网络中各节点的功能,涉及的功能包括:

1)路由,节点具有的基本功能,用于支持节点之间的通信。

节点除具有路由功能外,还可以具有以下功能:

2)应用,用于部署在目标区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链网络中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。

例如,应用实现的业务包括:

2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链网络中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。

2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链网络中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。

2.3)目标智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,目标智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。

3)目标区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到目标区块链中就不会再被移除,区块中记录了区块链网络中节点提交的记录数据。

参见图8,图8是本公开实施例提供的区块结构(blockstructure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。目标区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

图9示意性示出了根据本公开的一实施例的基于区块链的密钥管理系统的框图。如图9所示,本公开实施例提供的基于区块链的密钥管理系统900可以包括离线服务器910和业务服务器920。其中,离线服务器910和业务服务器920之间通过内网通信。业务服务器920可以通过外网与终端设备700通信,还可以通过外网与区块链网络800通信。

本公开实施例中,业务服务器920可以用于通过外网接收签名请求,并将所述签名请求通过内网发送至离线服务器,其中所述签名请求携带待签名数据和目标用户标识;根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥。离线服务器910可以用于通过内网接收所述业务服务器发送的所述签名请求,根据所述目标用户标识获得离线服务私钥及对应的离线服务公钥;将所述离线服务公钥传递至所述业务服务器;根据所述待签名数据和所述离线服务私钥,生成并向所述业务服务器发送离线服务签名。其中,业务服务器920还用于接收所述离线服务公钥和所述离线服务签名,根据所述离线服务公钥和所述业务服务私钥生成目标公钥,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名;将所述目标公钥和所述目标签名传输至区块链网络中的节点设备,以便所述节点设备利用所述目标公钥对所述目标签名进行验证,在验证通过后将所述待签名数据上链。

在示例性实施例中,在所述业务服务器将所述签名请求发送至所述离线服务器之前,所述离线服务器还可以用于向所述业务服务器签发应用程序接口标识、应用程序接口密钥及业务码,所述业务码包括目标业务码。所述离线服务器还可以用于接收所述业务服务器发送的所述应用程序接口标识、所述应用程序接口密钥、所述目标业务码、所述目标用户标识和业务服务器地址。所述离线服务器还可以用于对接收到的所述业务服务器地址、所述应用程序接口标识、所述应用程序接口密钥和所述目标业务码进行鉴权。

在示例性实施例中,鉴权通过后,所述离线服务器还可以用于生成所述离线服务私钥和与所述目标用户标识唯一对应的离线服务随机盐值,并获取离线服务固有盐值。所述离线服务器还可以用于对所述目标用户标识、所述离线服务随机盐值和所述离线服务固有盐值进行拼接处理,获得离线服务拼接串。所述离线服务器还可以用于随机生成离线服务位移量,并使用所述离线服务位移量将所述离线服务拼接串进行位移变化,获得离线服务初始加密密码。所述离线服务器还可以用于对所述离线服务初始加密密码进行截取处理,生成离线服务加密密码。所述离线服务器还可以用于使用所述离线服务加密密码加密所述离线服务私钥,获得离线服务密钥存储文件。所述离线服务器还可以用于将所述离线服务密钥存储文件、所述离线服务位移量、所述离线服务随机盐值与所述目标用户标识和所述目标业务码关联存储至离线服务数据库中。

在示例性实施例中,所述业务服务器还可以用于生成所述业务服务私钥和业务服务随机盐值,并获取业务服务固有盐值。所述业务服务器还可以用于对所述目标用户标识、所述业务服务随机盐值和所述业务服务固有盐值进行拼接处理,获得业务服务拼接串。所述业务服务器还可以用于随机生成业务服务位移量,并使用所述业务服务位移量将所述业务服务拼接串进行位移变化,获得业务服务初始加密密码。所述业务服务器还可以用于对所述业务服务初始加密密码进行截取处理,生成业务服务加密密码。所述业务服务器还可以用于使用所述业务服务加密密码加密所述业务服务私钥,获得业务服务密钥存储文件。所述业务服务器还可以用于将所述业务服务密钥存储文件、所述业务服务位移量、所述业务服务随机盐值与所述目标用户标识和所述目标业务码关联存储至业务服务数据库中。

在示例性实施例中,所述签名请求还可以包括所述目标业务码。其中,所述业务服务器根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥,可以通过执行以下步骤实现:所述业务服务器根据所述签名请求中的所述目标用户标识和所述目标业务码,从所述业务服务数据库中获取所述业务服务密钥存储文件、所述业务服务位移量和所述业务服务随机盐值;所述业务服务器对所述目标用户标识、所述业务服务随机盐值和所述业务服务固有盐值进行拼接处理,获得所述业务服务拼接串;所述业务服务器使用所述业务服务位移量对所述业务服务拼接串进行位移变化处理,获得所述业务服务初始加密密码;所述业务服务器对所述业务服务初始加密密码进行截取处理,生成所述业务服务加密密码;所述业务服务器使用所述业务服务加密密码解密所述业务服务密钥存储文件,获得所述业务服务私钥;所述业务服务器根据所述业务服务私钥生成所述业务服务公钥。

在示例性实施例中,所述离线服务器还可以用于接收所述业务服务器发送的所述应用程序接口标识、所述应用程序接口密钥、所述目标业务码、所述目标用户标识和所述业务服务器地址。所述离线服务器还可以用于对接收到的所述业务服务器地址、所述应用程序接口标识、所述应用程序接口密钥和所述目标业务码进行鉴权。

在示例性实施例中,所述离线服务器根据所述目标用户标识获得离线服务私钥及对应的离线服务公钥,可以通过执行以下步骤实现:鉴权通过后,所述离线服务器根据所述签名请求中的所述目标用户标识和所述目标业务码,从所述离线服务数据库中获取所述离线服务密钥存储文件、所述离线服务位移量和所述离线服务随机盐值;所述离线服务器对所述目标用户标识、所述离线服务随机盐值和所述离线服务固有盐值进行拼接处理,获得所述离线服务拼接串;所述离线服务器使用所述离线服务位移量对所述离线服务拼接串进行位移变化处理,获得所述离线服务初始加密密码;所述离线服务器对所述离线服务初始加密密码进行截取处理,生成所述离线服务加密密码;所述离线服务器使用所述离线服务加密密码解密所述离线服务密钥存储文件,获得所述离线服务私钥;所述离线服务器根据所述离线服务私钥生成所述离线服务公钥。

在示例性实施例中,所述离线服务器将所述离线服务公钥传递至所述业务服务器,以使所述业务服务器根据所述离线服务公钥和所述业务服务私钥生成目标公钥,可以通过执行以下步骤实现:所述离线服务器将所述离线服务公钥传递至所述业务服务器,所述业务服务器将所述业务服务公钥传递至所述离线服务器;所述离线服务器利用所述离线服务私钥同态加密所述业务服务公钥,生成所述目标公钥;所述业务服务器利用所述业务服务私钥同态加密所述离线服务公钥,生成所述目标公钥。

在示例性实施例中,所述离线服务器根据所述待签名数据和所述离线服务私钥,生成并向所述业务服务器发送离线服务签名,可以通过执行以下步骤实现:所述业务服务器将所述业务服务私钥的业务服务密钥存储文件发送至所述离线服务器;所述离线服务器生成所述待签名数据的哈希值;所述业务服务器生成业务服务随机数及对应的业务服务随机点,所述离线服务器生成离线服务随机数及对应的离线服务随机点;所述业务服务器将所述业务服务随机点传递至所述离线服务器,所述离线服务器将所述离线服务随机点传递至所述业务服务器;所述离线服务器根据所述离线服务随机数和所述业务服务随机点生成目标随机点;所述离线服务器根据所述哈希值、所述目标随机点、所述业务服务密钥存储文件、所述离线服务私钥和所述离线服务随机数生成所述离线服务签名;所述离线服务器将所述离线服务签名发送至所述业务服务器。

在示例性实施例中,所述目标签名可以包括第一部分和第二部分。其中,所述业务服务器接收所述离线服务签名,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名,可以通过执行以下步骤实现:所述业务服务器根据所述业务服务随机数和所述离线服务随机点生成所述目标随机点;所述业务服务器利用所述业务服务公钥解密所述离线服务签名,并根据所述业务服务随机数生成所述待签名数据的所述第一部分,并将所述目标随机点作为所述第二部分。

本公开实施例的基于区块链的密钥管理系统的其它内容可以参照上述实施例。

下面参考图10,其示出了适于用来实现本申请实施例的电子设备的结构示意图。图10示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。图10中的电子设备中可以包括离线服务器和业务服务器。

参照图10,本公开实施例提供的电子设备可以包括:处理器1001、通信接口1002、存储器1003和通信总线1004。

其中处理器1001、通信接口1002和存储器1003通过通信总线1004完成相互间的通信。

可选的,通信接口1002可以为通信模块的接口,如gsm(globalsystemformobilecommunications,全球移动通信系统)模块的接口。处理器1001用于执行程序。存储器1003用于存放程序。程序可以包括计算机程序,该计算机程序包括计算机操作指令。其中,程序中可以包括:视频客户端的程序。

处理器1001可以是一个中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本公开实施例的一个或多个集成电路。

存储器1003可以包含高速ram(randomaccessmemory,随机存取存储器)存储器,也可以还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

其中,程序可具体用于:业务服务器通过外网接收签名请求,并将所述签名请求通过内网发送至离线服务器;其中,所述签名请求携带待签名数据和目标用户标识;所述业务服务器根据所述目标用户标识获得业务服务私钥及对应的业务服务公钥;所述业务服务器接收所述离线服务器传送的离线服务公钥,根据所述离线服务公钥和所述业务服务私钥生成目标公钥;其中,所述离线服务公钥由所述离线服务器根据所述目标用户标识获得的对应离线服务私钥得到;所述业务服务器接收所述离线服务器根据所述待签名数据和所述离线服务私钥生成的离线服务签名,并根据所述离线服务签名和所述业务服务公钥生成所述待签名数据的目标签名;所述业务服务器将所述目标公钥和所述目标签名传输至区块链网络中的节点设备,以便所述节点设备利用所述目标公钥对所述目标签名进行验证,在验证通过后将所述待签名数据上链。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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