密钥生成方法及装置、存储介质及电子设备与流程

文档序号:23756828发布日期:2021-01-29 17:36阅读:243来源:国知局
密钥生成方法及装置、存储介质及电子设备与流程

[0001]
本发明涉及区块链技术领域,特别涉及一种密钥生成方法及装置、存储介质及电子设备。


背景技术:

[0002]
随着区块链技术的发展和广泛应用,人们越来越关注自身在区块链中隐私数据的安全,保障用户数据隐私安全,密钥是提高其安全性的其中重要一环。为提高数据隐私的安全,通常需要为用户提供密钥对数据进行加密,为用户提供密钥的方式有多种方式,而近年的基于身份的密码体系(identity-based cryptograph,ibc)成为密码学中的热门研究。
[0003]
ibc体系依据可靠的密钥生成中心(key generation centre,kgc)根据用户的标识信息即可生成用户的密钥和管理用户密钥,用户的标识信息如手机号码、电子邮箱以及ip地址等信息,除去了传统的公钥基础设施(public keyinfrastructure,pki)体系中用户证书存储、传输以及向权威机构进行公钥校验的过程,极大简化了传统的pki系统中用户密钥的生成和管理的过程。
[0004]
发明人研究发现,ibc体系中应用kgc生成用户密钥,实现用户密钥的中心化管理,此方式虽简化了生成用户密钥的过程,但是在kgc遭受攻击时,其管理的用户密钥面临着泄漏和窃取的风险,降低了用户密钥的安全性。


技术实现要素:

[0005]
有鉴于此,本发明提供一种密钥生成方法及装置、存储介质及电子设备,应用该方法可提高用户密钥的安全性,降低用户密钥被窃取的风险。
[0006]
为实现上述目的,本发明提供如下技术方案:
[0007]
一种密钥生成方法,应用于区块链密钥生成系统,所述区块链密钥生成系统包括主密钥生成中心节点和至少一个副密钥生成中心节点,所述方法,包括:
[0008]
反馈单元,用于当接收到用户节点发送的分发私钥请求时,触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;
[0009]
触发单元,用于触发所述用户节点生成盲因子,并使用所述盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证;
[0010]
验证单元,用于当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证;
[0011]
生成单元,用于当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。
[0012]
上述的方法,可选的,所述触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,包括:
[0013]
触发所述主密钥生成中心节点依据所述用户节点的用户信息生成所述用户节点的身份标识符,并基于所述身份标识符以及该主密钥生成中心节点中预先生成的私钥生成主中间私钥。
[0014]
上述的方法,可选的,所述使用所述盲因子混淆所述主中间私钥,生成混淆数据,包括:
[0015]
调用预设的混淆算法,对所述盲因子以及所述主中间私钥进行运算,生成混淆主中间私钥和验证因子;
[0016]
将所述混淆主中间私钥和所述验证因子确定为混淆数据。
[0017]
上述的方法,可选的,所述将所述混淆数据发送至每个所述副密钥生成中心节点进行验证,包括:
[0018]
触发每个所述副密钥生成中心节点将所述混淆数据、所述主密钥生成中心节点的公钥以及所述身份标识符代入预设的第一验证算法进行验证运算,得到对所述混淆数据的验证结果,以完成对所述混淆数据的验证。
[0019]
上述的方法,可选的,所述每个所述副密钥生成中心节点基于所述混淆数据生成子中间私钥的过程,包括:
[0020]
触发每个所述副密钥生成中心节点将与其对应的私钥和所述混淆主中间私钥代入预设的私钥生成算法进行运算,将运算得到的结果确定为子中间私钥。
[0021]
上述的方法,可选的,所述将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证,包括:
[0022]
触发所述用户节点调用所述身份标识符、所述主密钥生成中心节点的公钥以及每个所述副密钥生成中心节点的公钥;
[0023]
对于每个所述子中间私钥,将该子中间私钥、所述身份标识符、所述主密钥生成中心节点的公钥以及与该子中间私钥对应的所述副密钥生成中心节点的公钥代入预设的第二验证算法进行验证运算,得到与该子中间私钥对应的运算结果,以完成对该子中间私钥的验证。
[0024]
上述的方法,可选的,所述触发所述用户节点基于各个所述子中间私钥生成用户私钥,包括:
[0025]
清除每个所述子中间私钥中的盲因子,得到与每个所述子中间私钥对应的中间私钥;
[0026]
调用预设的秘密分享算法,依据所述秘密分享算法对所有的中间私钥进行处理,得到对所有的中间私钥的处理结果,并将所述处理结果确定为用户私钥。
[0027]
一种密钥生成装置,应用于区块链密钥生成系统,所述区块链密钥生成系统包括主密钥生成中心节点和至少一个副密钥生成中心节点,所述装置,包括:
[0028]
反馈单元,用于当接收到用户节点发送的分发私钥请求时,触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;
[0029]
触发单元,用于触发所述用户节点生成盲因子,并使用所述盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证;
[0030]
验证单元,用于当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为
通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证;
[0031]
生成单元,用于当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。
[0032]
上述的装置,可选的,所述反馈单元,包括:
[0033]
第一触发子单元,用于触发所述主密钥生成中心节点依据所述用户节点的用户信息生成所述用户节点的身份标识符,并基于所述身份标识符以及该主密钥生成中心节点中预先生成的私钥生成主中间私钥。
[0034]
上述的装置,可选的,所述触发单元,包括:
[0035]
第一调用子单元,用于调用预设的混淆算法,对所述盲因子以及所述主中间私钥进行运算,生成混淆主中间私钥和验证因子;
[0036]
确定子单元,用于将所述混淆主中间私钥和所述验证因子确定为混淆数据。
[0037]
上述的装置,可选的,所述触发单元,包括:
[0038]
第二触发子单元,用于触发每个所述副密钥生成中心节点将所述混淆数据、所述主密钥生成中心节点的公钥以及所述身份标识符代入预设的第一验证算法进行验证运算,得到对所述混淆数据的验证结果,以完成对所述混淆数据的验证。
[0039]
上述的装置,可选的,还包括:
[0040]
运算单元,用于触发每个所述副密钥生成中心节点将与其对应的私钥和所述混淆主中间私钥代入预设的私钥生成算法进行运算,将运算得到的结果确定为子中间私钥。
[0041]
上述的装置,可选的,所述验证单元,包括:
[0042]
第三触发子单元,用于触发所述用户节点调用所述身份标识符、所述主密钥生成中心节点的公钥以及每个所述副密钥生成中心节点的公钥;
[0043]
运算子单元,用于对于每个所述子中间私钥,将该子中间私钥、所述身份标识符、所述主密钥生成中心节点的公钥以及与该子中间私钥对应的所述副密钥生成中心节点的公钥代入预设的第二验证算法进行验证运算,得到与该子中间私钥对应的运算结果,以完成对该子中间私钥的验证。
[0044]
上述的装置,可选的,所述生成单元,包括:
[0045]
清除子单元,用于清除每个所述子中间私钥中的盲因子,得到与每个所述子中间私钥对应的中间私钥;
[0046]
第二调用子单元,用于调用预设的秘密分享算法,依据所述秘密分享算法对所有的中间私钥进行处理,得到对所有的中间私钥的处理结果,并将所述处理结果确定为用户私钥。
[0047]
一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行上述的密钥生成方法。
[0048]
一种电子设备,具体包括存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序执行上述的密钥生成方法。
[0049]
与现有技术相比,本发明具有以下优点:
[0050]
本发明提供的方法,包括:当区块链密钥生成系统接收到用户节点发送的分发私
钥请求时,触发主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;触发所述用户节点使用生成的盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证;当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证;当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。本发明提供的方法,通过设置主密钥生成中心节点和多个副密钥生成中心节点,实现去中心化处理,通过将每个副密钥生成中心生成的子中间私钥发送给用户节点,用户节点基于各个子中间私钥生成用户私钥;设置多个副密钥生成中心节点,实现了秘密共享,每个副密钥生成中心节点生成的子中间私钥均是用户节点生成用户私钥的重要一部分,由此可以有降低了密钥泄露和被窃取的风险。
附图说明
[0051]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0052]
图1为本发明实施例提供的一种密钥生成方法的方法流程图;
[0053]
图2为本发明实施例提供的一种区块链密钥生成系统的功能流程图;
[0054]
图3为本发明实施例提供的一种用户节点验证混淆数据的方法流程图;
[0055]
图4为本发明实施例提供的一种验证子中间私钥的方法流程图;
[0056]
图5为本发明实施例提供的一种密钥生成方法的场景示例图;
[0057]
图6为本发明实施例提供的一种密钥生成方法的又一方法流程图;
[0058]
图7为本发明实施例提供的主密钥生成中心节点、各副密钥生成中心节点以及用户节点的功能结构图;
[0059]
图8为本发明实施例提供的区块链密钥生成系统和用户节点之间的数据交互的示例图;
[0060]
图9为本发明实施例提供的一种密钥生成方法的又一场景示例图;
[0061]
图10为本发明实施例提供的一种密钥生成方法的另一场景示例图;
[0062]
图11为本发明实施例提供的一种密钥生成装置的结构示意图;
[0063]
图12为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0064]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0065]
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有
明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0066]
本发明可以应用在众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
[0067]
本发明提供一种密钥生成方法,该方法应用于区块链密钥生成系统,所述区块链密钥生成系统包括主密钥生成中心节点和至少一个副密钥生成中心节点,所述方法的方法流程图如图1所示,具体说明如下所述:
[0068]
s101、当接收到用户节点发送的分发私钥请求时,触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点。
[0069]
本发明实施例提供的方法中,应用于区块链密钥生成系统,所述区块链密钥生成系统基于区块链网络搭建而成,本发明中的区块链网络可为联盟链网络,即hyperldeger fabric网络。本发明中的区块链网络的每个节点均存在对应的服务器,主密钥生成中心(key generation centre,kgc)节点存在对应的服务器,每个副密钥生成中心(key generation centre,kgc)节点均存在与其对应的服务器,用户节点也存在对应的服务器,服务器可为众多通用或专用的计算机,还可以是手持设备、便携设备或平板型设备等智能终端。用户可通过用户节点向区块链密钥生成系统发送分发私钥请求,所述分发私钥请求中包含用户请求分发的私钥的类型,分发的私钥类型分为签名私钥和加密密钥。
[0070]
本发明实施例提供的方法中,在区块链密钥生成系统投入使用前,配置区块链密钥生成系统中的公共参数,以便在生成用户私钥的过程中调用公共参数,公共参数配置的过程如下所述:
[0071]
区块链密钥生成系统中的每个kgc节点调用本地中设置的init服务,应用init服务中的sm9算法或是sm2算法选取椭圆曲线,配置相关的曲线参数,确定每个kgc节点中的公共的素数n阶的群g1、g2和g
t
,映射e:g1×
g2→
g
t
,生成元p1∈g1,p2∈g2,函数识别符hid;并将确定的n阶群g1、g2、g
t
,映射 e:g1×
g2→
g
t
、生成元p1∈g1,p2∈g2,函数识别符hid确定为区块链密钥生成系统的公共参数;其中,区块链密钥生成系统中的kgc节点为主kgc节点和副kgc节点;
[0072]
将生成的公共参数在区块链中全网广播,写入区块链网络中的每个节点,实现对区块链网络中的节点统一配置,并将公共参数上链存证。
[0073]
本发明实施例提供的方法中,区块链密钥生成系统在投入使用之前还需要配置各个kgc节点的公私钥对,此处的kgc节点为主kgc节点和副kgc节点;各个kgc节点的公私钥对的配置过程如下所述:
[0074]
每个kgc节点调用预设的主密钥生成服务,将公共参数代入所述主密钥生成服务中的算法中,生成该kgc节点的公私钥对,将该kgc节点的公钥全网进行广播,并保存该kgc节点的私钥。
[0075]
主密钥生成服务用于为主kgc节点和各副kgc节点生成公私钥对,具体内容如下所示:
[0076]
每个kgc节点分别随机选取ke∈[1,n-1]作为各自的私钥,其中n为循环群 g1、g2和g
t
的阶,为大于2
191
的素数。计算g1中的元素p
pub-e
=[ke]p1作为各自公钥,其中p1为群g1的生成元。最终生成各kgc节点的公私钥对(ke,p
pub-e
)。
[0077]
本发明实施例提供的方法中,当区块链密钥生成系统接收到用户节点发送的分发私钥请求时,触发区块链密钥生成系统中的主kgc节点对所述分发私钥请求进行解析,以获取分发私钥请求中用户节点的用户信息;依据所述用户节点的用户信息生成用户节点的主中间私钥,并将所述主中间私钥安全传送至所述用户节点。所述用户信息可为用户的邮箱地址或是手机号码,也可以是用户进入区块链网络时的登录信息,登录信息例如姓名、账号或是注册名等信息。
[0078]
s102、触发所述用户节点生成盲因子,并使用所述盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证。
[0079]
本发明实施例提供的方法中,用户节点接收到主中间私钥之后,应用预设的盲因子生成算法,生成盲因子,并使用所述盲因子混淆主中间私钥,以生成与所述主中间私钥对应的混淆数据,将所述混淆数据发送至每个所述副 kgc节点,以使每个副kgc节点对所述混淆数据进行验证,以得到每个所述副kgc节点对所述混淆数据进行验证的验证结果;其中,所述盲因子为随机数,盲因子生成算法为任意一种可生成随机数的算法,例如由c语言提供的随机数生成函数、正态分布的随机数生成算法以及蒙特卡罗法等。
[0080]
s103、当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证。
[0081]
本发明实施例提供的方法中,当每个副kgc节点输出的对混淆数据的验证结果均为验证通过时,每个所述副kgc节点生成与用户节点对应的子中间私钥,并将子中间私钥发送至用户节点,以使用户节点对每个子中间私钥进行验证。本发明实施例提供的方法中,若存在副kgc节点输出的验证结果为验证不通过的情况,则结束密钥生成流程,并向用户节点发送密钥生成出错的提示信息。
[0082]
s104、当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。
[0083]
本发明实施例提供的方法中,用户节点接收到每个副kgc节点发送的子中间私钥之后,用户节点对每个子中间私钥进行验证,得到对每个子中间私钥进行验证的验证结果,当用户节点对每个子中间私钥进行验证的验证结果均为通过时,用户节点基于各个子中间私钥生成用户私钥,其中,用户私钥即为最终生成的密钥。进一步进行说明,若存在验证结果为验证不通过的情况,则结束密钥生成流程,即用户节点结束操作。
[0084]
本发明实施例提供的方法中,当区块链密钥生成系统接收到用户节点发送的分发私钥请求时,触发主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点进行验证;当每个所述副密钥生成中心节点对混淆数据的验证结果均为通过时,将每个副密钥生成中心节点基于混淆数据生成的子中间私钥发送至用户节点进行验证;当用户节点对每个子中间私钥的验证结果均为通过时,触发用户节点基于各个子中间私钥生成用户私钥。本发明提供的密钥生成方法中,通过设置主密钥生成中心节点和多个副密钥生成中心节点,以去中间化的方式生成密钥,实现了秘密共
享,并且在生成密钥的过程中增加了数据的验证过程,以防止生成密钥的过程中的交互数据被篡改,本发明不仅简化了生成密钥的过程,还降低了因中心化生成密钥带来的安全风险,降低了密钥泄漏和被窃取的风险。
[0085]
参照图2,为本发明实施例提供的区块链密钥生成系统的功能流程图,图 2示出了本发明的区块链密钥生成系统的可实现的功能以及生成用户密钥的流程,主kgc表示主kgc节点,副kgc表示副kgc节点,用户表示用户节点。区块链密钥生成系统在应用时可分成3部分,分别是系统参数设置,主密钥生成以及用户密钥生成;其中,系统参数设置的内容为为系统设置公共参数,并将公共参数进行全网广播并上链存证;主密钥生成的内容为为主kgc生成主公私钥对(ke0,p
pub-e
)和为各副kgc生成主公私钥对(ke
i
,p
pub-ei
),并将主kgc的公钥p
pub-e
和各副kgc的公钥p
pub-ei
进行广播,其中,主密钥即为kgc 的密钥;系统参数设置部分和主密钥生成部分均在为用户生成密钥之前已设置完毕;其中,ke0为主kgc节点的私钥;p
pub-ei
为对应的副kgc节点的私钥,其中,i为大于等于1的整数,n为大于等于1的整数,n与i的取值相同,例如,n为2,则表示有两个副kgc节点,则其中一个副kgc节点的主公私钥对为(ke1,p
pub-e1
),另一个副kgc节点的主公私钥对为(ke2,p
pub-e2
)。如图 2所示,为用户的生成密钥的过程为:主kgc为用户生成身份标识符id
a
,并将用户的身份标识符进行广播,其中,身份标识符作为用户公钥;主kgc为用户生成主中间私钥de
a0
,并将主中间私钥de
a0
发送给用户,以使用户应用盲因子x对主中间私钥进行混淆,得到验证因子x、混淆的主中间私钥de
a0
',其中,混淆的主中间私钥de
a0
'即为混肴主中间私钥;用户将混淆的主中间私钥 de
a0
'和验证因子x发送给各个副kgc,以使各个副kgc验证用户发来的数据的合法性,并在每个副kgc节点对用户发来的数据的验证均通过时,每个副 kgc为用户生成子中间私钥de
a0
',并将子中间私钥de
a0
'发送给用户,用户验证每个子中间私钥de
a0
'的正确性,并在每个子中间私钥de
a0
'均正确时,基于每个子中间私钥de
a0
'得到用户私钥de
a
,获得用户私钥de
a
的过程可为:将每个子中间私钥de
a0
'的盲因子x去除,并将去除了盲因子x的子中间私钥de
a0
'组合,得到用户私钥de
a
;可选的,将每个子中间私钥de
a0
'进行组合,并将每个子中间私钥de
a0
'的盲因子x去除,得到用户私钥de
a

[0086]
本发明提供的方法中,在生成密钥的过程中,当接收到用户节点发送的分发私钥请求时,触发主密钥生成中心节点生成主中间私钥,生成主中间私钥的具体流程如下所述:
[0087]
触发所述主密钥生成中心节点依据所述用户节点的用户信息生成所述用户节点的身份标识符,并基于所述身份标识符以及该主密钥生成中心节点中预先生成的私钥生成主中间私钥。
[0088]
进一步进行说明,主kgc节点调用预设的标识生成服务对用户信息进行标识生成操作,以得到用户的身份标识符,应用预设的sm9算法对身份标识符、公共参数以及主kgc的私钥进行运算,以生成用户节点的主中间私钥,并将所述主中间私钥安全传送至所述用户节点。需要说明的是,所述身份标识符可以为由数字组成的字符串,身份标识符具有唯一性;需要说明的是所述标识生成服务用于为用户生成唯一的身份标识符,依据标识生成服务对所述用户信息进行标识生成操作,标识生成操作的具体内容为:可将对分发私钥请求解析得到的用户信息直接作为用户节点的身份标识符,或将对分发私钥请求解析得到的用户信息代入身份标识生成算法,以生成用户唯一的身份标识符,其中,所述身份标识生成算法可具体为snowflake算法或全局唯一标识符方法。本发明提供的方法中,生成用户节点的
身份标识符之后将身份标识符全网广播,以便上链存证。
[0089]
本发明实施例提供的方法中,通过使用标识生成服务生成用户节点的身份标识符,该身份标识符具有唯一性,可通过身份标识符快速识别用户节点,以及在生成用户节点的密钥的过程中,可应用身份标识符生成具有标识的主中间私钥,增加数据的可识别性。
[0090]
本发明实施例提供的方法中,用户节点在接收到主kgc节点发送的主中间私钥之后,需要生成混淆数据,生成混淆数据的过程如图3所示,具体说明如下所述:
[0091]
s301、调用预设的混淆算法,对所述盲因子以及所述主中间私钥进行运算,生成混淆主中间私钥和验证因子。
[0092]
s302、将所述混淆主中间私钥和所述验证因子确定为混淆数据。
[0093]
本发明实施例提供的方法中,将公共参数、主中间私钥以及用户节点生成的盲因子代入混淆算法中进行混淆运算,得到混淆主中间私钥和验证因子,其中,验证因子为字符串;将得到的混淆主中间私钥和验证因子确定为混淆数据;其中,关于公共参数的说明可参照图1中的说明。
[0094]
本发明实施例提供的方法中,用户节点将接收到的主中间私钥进行混淆,并将得到的混淆数据发送至每个副kgc节点进行验证,此处用户节点将主中间私钥进行混淆的目的是为了提高数据传输的安全性,将主中间私钥进行混淆相当于将主中间私钥进行加密,避免用户节点和副kgc节点之间传输的数据被窃取,进一步提高生成密钥过程的数据传输的安全性。
[0095]
本发明实施例提供的方法中,用户节点将生成的混淆数据发送至每个副 kgc节点进行验证,以每个所述副kgc节点对混淆数据进行验证的具体过程如下所述:
[0096]
触发每个所述副密钥生成中心节点将所述混淆数据、所述主密钥生成中心节点的公钥以及所述身份标识符代入预设的第一验证算法进行验证运算,得到对所述混淆数据的验证结果,以完成对所述混淆数据的验证。
[0097]
本发明实施例提供的方法中,用户节点将混淆数据发送给每个副kgc节点,触发每个副kgc节点将公共参数、主kgc节点的公钥、身份标识符以及混淆数据代入预设的第一验证算法进行运算,得到对混淆数据的验证结果,该验证结果可为数值,该数值可表示对混淆数据的验证是否通过,验证结果为验证通过或验证不通过;
[0098]
所述第一验证算法为sm9中的第一验证算法,用于各副kgc节点验证用户节点发来混淆数据,即用于验证混淆数据的合法性,具体内容如下所述:
[0099]
每个副kgc节点首先在有限域f
n
上计算t1=h1(id
a
||hid,n),其中id
a
为用户身份标识,hid为主kgc节点选择并公开的函数识别符,n为循环群g1、g2和g
t
的阶,h1()为符合国家商用密码标准的杂凑算法。然后计算t2=t1p1+p
pub-e
,其中p1为群g1的生成元,p
pub-e
为主kgc节点的公钥。最后判断 e(t2,de
a0

)=e(p
pub-e
,x)是否成立来验证用户节点发来混淆数据的合法性,若 e(t2,de
a0

)=e(p
pub-e
,x)成立,则混淆数据合法,即混淆数据的验证结果为验证通过;若e(t2,de
a0

)=e(p
pub-e
,x)不成立,则混淆数据不合法,即混淆数据的验证结果为验证不通过;其中de
a0

为用户节点发来的混淆数据中的混淆主中间私钥,x为用户节点发来的混淆数据中的验证因子,p
pub-e
为主kgc节点的公钥,映射e:g1×
g2→
g
t

[0100]
本发明实施例提供的方法中,当每个副kgc节点对混淆数据的验证结果均为通过时,将每个副kgc节点基于混淆数据生成的子中间私钥发送至用户节点进行验证,而每个副
kgc节点生成子中间私钥的过程如下所述:
[0101]
触发每个所述副密钥生成中心节点将与其对应的私钥和所述混淆主中间私钥代入预设的私钥生成算法进行运算,将运算得到的结果确定为子中间私钥。
[0102]
本发明实施例提供的方法中,所述私钥生成算法可以为sm9算法,每个副 kgc节点将自身的私钥以及混淆数据中的混淆主中间私钥代入私钥生成算法进行运算,以生成子中间私钥,其中,所述混淆主中间私钥中包含盲因子,故生成的子中间私钥也包含盲因子。本发明实施例提供的方法中,若存在副kgc节点对混淆数据的验证结果为验证不通过,则结束生成密钥流程,即不进行后续流程。
[0103]
本发明实施例提供的方法中,副kgc节点生成子中间私钥之后,将各个子中间私钥发送至用户节点,以使用户节点对子中间私钥进行验证,验证的流程如图4所示,具体说明如下所述:
[0104]
s401、触发所述用户节点调用所述身份标识符、所述主密钥生成中心节点的公钥以及每个所述副密钥生成中心节点的公钥;
[0105]
s402、对于每个所述子中间私钥,将该子中间私钥、所述身份标识符、所述主密钥生成中心节点的公钥以及与该子中间私钥对应的所述副密钥生成中心节点的公钥代入预设的第二验证算法进行验证运算,得到与该子中间私钥对应的运算结果,以完成对该子中间私钥的验证。
[0106]
本发明实施例提供的方法中,用户节点对子中间私钥进行验证需要的数据有:公共参数、身份标识符、主kgc节点的公钥以及每个所述副kgc节点的公钥;对于每个子中间私钥,用户节点将该子中间私钥、公共参数、身份标识符、主kgc节点的公钥以及与生成该子中间私钥的副kgc节点的公钥代入第二验证算法进行运算,得到对该子中间私钥的运算结果,其中,运算结果为对该子中间私钥的验证结果,验证结果为通过或不通过。
[0107]
所述第二验证算法为sm9算中的第二验证算法,用于用户节点验证各副 kgc节点发来子中间私钥的正确性,具体的内容如下所述:
[0108]
用户节点首先在有限域f
n
上计算t1=h1(id
a
||hid,n),其中id
a
为该用户身份标识,hid为主kgc节点选择并公开的函数识别符,n为循环群g1、g2和g
t
的阶,h1()为符合国家商用密码标准的杂凑算法。然后计算t2=t1p1+p
pub-e
,其中p1为群g1的生成元,p
pub-e
为主kgc节点的公钥。最后依次判断 e(t2,de
ai
)=e(p
pub-e
,p
pub-ei
)
x
是否成立来验证各副kgc节点发来de
ai
的正确性;若 e(t2,de
ai
)=e(p
pub-e
,p
ub-ei
)
x
成立,则判断该子中间私钥de
ai
正确,即该子中间私钥de
ai
验证通过;若e(t2,de
ai
)=e(p
pub-e
,p
pub-ei
)
x
不成立,则判断该子中间私钥de
ai
不正确,即该子中间私钥de
ai
验证不通过;其中de
ai
为各副kgc节点发来的子中间私钥、p
pub-e
为主kgc节点的公钥,p
pub-ei
为各副kgc节点的公钥,映射 e:g1×
g2→
g
t

[0109]
本发明实施例提供的方法中,当用户节点对子中间私钥的验证结果存在验证不通过时,则结束流程;当用户节点对每个子中间私钥的验证结果均为验证通过时,则触发用户节点基于各个子中间私钥生成用户私钥;生成用户私钥的具体过程如下所述:
[0110]
清除每个所述子中间私钥中的盲因子,得到与每个所述子中间私钥对应的中间私钥;
[0111]
调用预设的秘密分享算法,依据所述秘密分享算法对所有的中间私钥进行处理,得到对所有的中间私钥的处理结果,并将所述处理结果确定为用户私钥。
[0112]
本发明实施例提供的方法中,所述秘密分享算法具体可为:blakley秘密分享、ab秘密分享、kgh秘密分享、多级门限秘密分享等算法,不同的秘密分享算法对中间私钥的处理方式不同;对中间私钥的处理过程,一种可实现的方式:确定每个所述中间私钥的标识符,所述标识符为其对应的副kgc节点的标识符;依据所述标识符确定每个所述中间私钥的排列顺序,并按照所述排列顺序将每个所述中间私钥进行排序,得到中间私钥序列,并将所述中间私钥序列确定为用户私钥。其中,所述标识符可为数字或是编号,所述标识符可表示副kgc节点的排列顺序;每个中间私钥依据其标识符确定排列顺序,每个中间私钥依据其排列顺序进行排列,得到由中间私钥组成的中间私钥序列,将所述中间私钥序列确定为用户私钥。对中间私钥的处理过程,另一种可实现的方式:将中间私钥进行累加,得到最终私钥。
[0113]
本发明实施例提供的方法中,通过将子中间私钥的盲因子去除,得到与子中间私钥对应的中间私钥,依据所述秘密分享算法对所有的中间私钥进行处理,可得到用户私钥,应用本发明提供的方法,将通过验证的各个子中间私钥进行处理,得到用户私钥。本发明设置主kgc节点和多个副kgc节点做去中心化处理,使生成密钥的信息分散在各个kgc节点中,由用户节点本地组装得到用户密钥,通过秘密共享,保障了密钥信息在传输和存储上的安全性,有效降低用户密钥遭到泄漏和被窃取的风险;用户密钥可理解为本发明中的用户私钥,密钥信息可理解为本发明中的主kgc节点、副kgc节点和用户节点之间传输的内容,例如主中间私钥和混淆数据等。
[0114]
参照图5,为本发明提供的一场景示例图,图5可体现出主kgc节点、各副 kgc节点以及用户节点的网络部署图,为每个用户部署服务器,该服务器即为用户节点,用户可通过该服务器访问区块链密钥生成系统,区块链密钥生成系统中设置有主kgc节点和多个副kgc节点,主kgc节点和各副kgc节点均存在对应的区块链节点,可理解为配置n个副kgc节点,其中,n为大于等于1的正整数;本发明支持为多个用户节点生成密钥,每个用户节点生成密钥的过程均相同,此处以一个用户节点进行说明;区块链密钥生成系统在应用之前应配置公共参数,公共参数为每个kgc节点调用椭圆曲线,配置相关的曲线参数中的公共的素数n阶的群g1、g2和g
t
,映射e:g1×
g2→
g
t
,生成元p1∈g1, p2∈g2,函数识别符hid;将公共参数进行全网广播,为每个节点统一配置公共参数。主kgc节点根据公共参数生成公私钥对(ke0,p
pub-e
),其中,ke0为主kcg 节点的私钥,p
pub-e
为主kgc节点的公钥,主kgc节点将私钥ke0保存,将公钥p
pub-e
全网广播,使得区块链网络中的各个节点获取主kgc节点的公钥;n个副kgc 节点分别生成各自的公私钥对(ke
i
,p
pub-ei
),其中,1≤i≤n;ke
i
为副kgc节点的私钥,p
pub-ei
为副kgc节点的公钥;每个副kgc节点将自身的私钥进行保存,并将公钥进行全网广播,使得区块链网络中的各个节点获取每个副kgc节点的公钥。用户节点向区块链密钥生成系统发送分发私钥请求,区块链密钥生成系统和用户节点进行协商,最终生成用户节点的用户密钥。
[0115]
参照图6,为区块链密钥生成系统和用户节点进行协商的流程图,对图6 的说明如下所述:
[0116]
s501、用户节点向区块链密钥生成系统发送分发私钥请求。
[0117]
本发明实施例提供的方法中,用户节点向区块链密钥生成系统发送的分发私钥请求有两种类型,一种是请求分发加密密钥,一种是请求分发签名密钥,这两种密钥的协商过程相同。
[0118]
s502、调用主kgc节点生成用户节点的身份标识符,并将所述身份标识符进行广播。
[0119]
本发明实施例提供的方法中,所述用户节点的身份标识符可用id
a
表示,其中,用户节点为已注册的节点,主kgc节点调用用户节点的用户信息,以及标识生成算法,并使用标识算法对用户信息进行处理,得到用户节点的身份标识符,将身份标识符发送至每个副kgc节点和用户节点。
[0120]
s503、主kgc节点生成用户节点的主中间私钥,并将所述主中间私钥发送至所述用户节点。
[0121]
本发明实施例提供的方法中,主kgc节点依据sm9的私钥生成算法,对公共参数、身份标识符id
a
以及主kgc节点的私钥ke0进行处理,生成主中间私钥 de
a0
,该主中间私钥与用户节点对应。
[0122]
s504、用户节点向每个副kgc节点发送混淆数据。
[0123]
本发明实施例提供的方法中,用户节点接收到主kgc节点发送的主中间私钥de
a0
后,根据预设的盲因子生成算法,生成盲因子x,盲因子x为随机数,使用盲因子x对主中间私钥进行混淆,得到包含混淆主中间私钥de
a0
'和验证因子x的混淆数据;将所述混淆数据发送至每个副kgc节点,以使每个副kgc节点对混淆数据进行验证。
[0124]
s505、每个副kgc节点对用户节点发送的混淆数据进行验证,并判断每个所述副kgc节点对混淆数据的验证结果是否为验证通过,若每个副kgc节点对混淆数据的验证结果为验证通过,则执行506;若存在副kgc节点对混淆数据的验证结果为验证不通过,则执行s507。
[0125]
本发明实施例提供的方法中,每个副kgc节点调用公共参数、主kgc节点的公钥p
pub-e
以及身份标识符id
a
;将公共参数、主kgc节点的公钥p
pub-e
,身份标识符id
a
以及混淆数据输入sm9中的第一验证算法,以得到对混淆数据的验证结果,验证结果有两种情况,一种为验证通过,另一种为验证不通过。
[0126]
s506、副kgc节点向用户节点发送子中间私钥。
[0127]
本发明实施例提供的方法中,当每个副kgc节点对混淆数据的验证结果均为验证通过时,触发每个副kgc节点将其私钥ke
i
和混淆数据中的混淆主中间私钥de
a0
'代入sm9的私钥生成算法进行运算,得到子中间私钥de
ai
,并将子中间私钥de
ai
发送至用户节点。
[0128]
s507、结束。
[0129]
本发明实施例提供的方法中,结束用户密钥生成流程,可选的,还可生成验证失败的信息,并将验证失败的信息向所述用户节点发送。
[0130]
s508、用户节点对每个子中间私钥进行验证,判断每个子中间私钥验证的验证结论是否均为通过,若每个子中间私钥的验证结论均为通过,则执行s509;若存在子中间私钥的验证结论为不通过,则执行s510。
[0131]
本发明实施例提供的方法中,用户节点接收每个副kgc节点发送的子中间私钥de
ai
,并验证接收到的所有子中间私钥,将所有的子中间私钥输入sm9的第二验证算法进行运算,得到对所有子中间私钥的运算结果,该运算结果为对所有子中间私钥的验证结论,验证结论有两种情况,一种是验证通过,一种是验证不通过。
[0132]
s509、得到用户密钥。
[0133]
本发明实施例提供的方法中,当用户节点对每个子中间私钥de
ai
的验证结论为验证通过时,去除每个子中间私钥de
ai
中的盲因子x;并依据秘密共享算法对去除了盲因子的子中间私钥进行处理,得到用户密钥de
a
;所述用户密钥 de
a
即为用户私钥de
a
。用户节点将用户密钥进行保存。
[0134]
s510、结束。
[0135]
本发明实施例提供的方法中,得到的用户密钥有两种类型,一种是加密密钥,一种是签名密钥,密钥的类型可根据用户节点的需求生成,本发明提供的方法均支持这两种类型的密钥的生成;加密密钥和签名密钥的长度有所不同,应用方式也不同;对于加密密钥,用户节点可用身份标识符和主kgc 节点的公钥、副kgc节点的公钥对明文数据进行加密,使用身份标识符和用户私钥对加密的数据进行解密。对于签名密钥,用户节点使用身份标识符和用户私钥进行签名,使用身份标识符和主kgc节点的公钥、副kgc节点的公钥进行验签。
[0136]
本发明实施例提供的方法中,将多个kgc分为一个主kgc和多个副kgc两级,降低了后续用户使用密钥的复杂度,简化了公钥校验流程,通过设置多个kgc节点,在系统收到攻击时,只要有一个kgc节点是可信的,即使其他的 kgc节点都有恶意行为,攻击者无法获得用户密钥,由此降低用户密钥泄漏的风险;本发明还有效解决了传统pki中密钥的更新、校验等操作开销过大,密钥托管、传输和存储存在安全风险的问题,并且本发明具有向下兼容性,在只有一个kgc节点或没有kgc时,可应用原始sm9算法生成用户密钥。
[0137]
参考图7,为本发明提供的主kgc节点、各副kgc节点以及用户节点的功能结构图,用户节点提供用户服务(user client),由用户直接登录访问该服务,该服务提供盲因子混淆生成、效验kgc数据和用户秘钥生成等功能;区块链密钥生成系统包含kgc节点和区块链账本服务;kgc节点提供kgc密钥生成、用户id生成、用户中间密钥生成,以及相应数据上链操作;图8说明了主kgc节点、各副kgc节点以及用户节点在协商的过程中调用的功能服务。
[0138]
参考图8,为本发明提供的生成密钥时,区块链密钥生成系统和用户节点之间的数据交互的示例图,该整体流程图可进一步说明图5中主kgc节点、各副kgc节点以及用户节点之间的交互过程,其中,区块链密钥生成系统设置一个主kcg和n个副kgc,主kgc为用户生成主中间私钥,用户再与各个副kgc协商得到个子中间私钥,最后由用户将接收到的所有子中间私钥组合得到最终的用户私钥;如图8所示,主kgc和各副kgc均生成各自的主密钥对,并将各自的主公钥进行广播,用户a向区块链密钥生成系统请求分发私钥,由主kgc向用户分发中间私钥,用户a对中间私钥进行处理后,将处理后得到的参数发送至各副kgc,以使每个副kgc对参数进行处理后分别向用户a发送子中间私钥,使得用户a将子中间私钥进行组成,得到私钥;最后使用私钥将数据加密后与用户b进行通讯。基于图8中主kgc、各副kgc以及用户之间密钥的协商过程,本发明针对用户请求的不同密钥,提供具体应用示例说明图8中流程的实现,具体内容如下所述:
[0139]
应用本发明的区块链密钥生成系统生成密钥前,系统需要进行初始化配置,配置公共参数;配置公共参数的主要过程为:主kgc以及每个副kgc调用本地init服务,选取恰当椭圆曲线,配置相关曲线参数,确定公共的素数n阶的群g1、g2和g
t
,映射e:g1×
g2→
g
t
,生成元p1∈g1,p2∈g2,函数识别符hid,最后将公共系统参数全网广播各用户本地进行统一配置,并上链存证,其中,所述公共系统参数等同于本发明的公共参数;其中,关于init服务的调用说明表如表1所示,其中,系统参数组为公共参数。
[0140]
init参数初始化服务功能主体主kgc、n个副kgc功能描述主kgc和副kgc生成系统参数组输入参数无输出参数n、g1、g2、g
t
、e、p1、p2、hid
[0141]
表1
[0142]
应用示例一:
[0143]
当用户请求生成加密密钥时,针对加密解密过程,主kgc和副kgc分别生成各自的加密主密钥对,并为用户生成用于用户加密中间密钥,最后由用户自行组装成用户加密私钥。后续用户u
a
使用身份标识符id
a
和主kgc的主公钥p
pub-e
、每个副kgc的主公钥p
pub-ei
进行加密,使用身份标识符id
a
和用户私钥 de
a
进行解密;其中,所述用户即为上述实例中的用户节点;主kgc即为上述实例中的主kgc节点;副kgc即为上述实例中的副kgc节点。
[0144]
当接收到用户发送的分发私钥请求时,该分发私钥请求具体为请求分发加密密钥,主kgc调用create kgc-key服务生成主公私钥对(ke0,p
pub-e
),主kgc 秘密保存ke0,广播p
pub-e
;其中,关于主kgc调用create kgc-key服务的调用说明表如表2所示。
[0145]
create kgc-key主密钥生成服务功能主体主kgc功能描述主kgc生成主公私钥对输入参数系统参数组输出参数(ke0,p
pub-e
)
[0146]
表2
[0147]
进一步进行说明,n个副kgc分别调用create kgc-key服务生成各自的主公私钥对(ke
i
,p
pub-ei
),副kgc各自秘密保存自己的ke
i
,广播p
pub-ei
,这里1≤i≤n;其中,所述create kgc-key服务,即主密钥生成服务,可理解为上文中的主密钥生成服务,create kgc-key服务用于为主kgc节点和各副kgc节点生成公私钥对,关于主kgc调用create kgc-key服务的调用说明表如表3所示。
[0148][0149][0150]
表3
[0151]
进一步的,主kgc调用create user-id服务,为用户a生成唯一的身份标识符id
a
,并将id
a
在网络中广播;其中,create user-id服务,即用户身份标识生成服务,可理解为上文中的标识生成服务,create user-id服务用于为用户生成具有唯一性的身份标识符。关于主kgc调用create user-id服务的调用说明表如表4所示。
[0152][0153]
表4
[0154]
进一步的,主kgc调用create user-key服务为用户a生成主中间私钥de
a0
,再将主中间私钥de
a0
安全传送给用户a;其中,用create user-key服务,即主中间私钥生成服务,该服务设置有sm9算法,用于生成用户的主中间私钥。
[0155]
其中,主kgc调用create user-key服务的调用说明表如表5所示。
[0156][0157]
表5
[0158]
进一步的,用户a调用bf confusion服务,生成盲因子x,并用盲因子混淆主中间私钥de
a0
,将混淆后的主中间私钥de
a0
'和验证因子x发送给每个副 kgc;其中,bf confusion服务,即盲因子混淆服务,bf confusion服务可理解为上文中的混淆算法,bf confusion服务用于混淆主中间私钥de
a0
,并生成混淆后的主中间私钥de
a0
'和验证因子x,其中,混淆后的主中间私钥de
a0
'和验证因子x可理解为上文中的混淆数据;混淆后的主中间私钥de
a0
'可理解为上文中的混淆主中间私钥。其中,用户a调用bf confusion服务的调用说明表如表6所示。
[0159][0160]
表6
[0161]
进一步的,各副kgc分别调用verify user-data服务验证用户a发来数据的合法性;其中,verify user-data服务,即用户数据验证服务,verify user-data 服务可理解为上文中的第一验证算法,verify user-data服务用于各kgc验证用户a所发送的混淆后的主中间私钥de
a0
'和验证因子x的合法性,混淆后的主中间私钥de
a0
'和验证因子x可理解为上文中的混淆数据,其中各副kgc分别调用verify user-data服务的调用说明表如表7所示。
[0162][0163]
表7
[0164]
进一步的,每个副kgc对混淆后的主中间私钥de
a0
'和验证因子x验证均为通过后,每个副kgc分别调用create user-key服务为用户a生成子中间私钥 de
ai
,并将各自生成的de
ai
安全传送给用户a;其中,create user-key服务,即为子中间私钥生成服务,create user-key服务可理解为上文中的私钥生成算法,create user-key服务用于每个kgc为用户a生成子中间私钥de
ai
,其中,每个副kgc分别调用create user-key服务的调用说明表如表8所示。
[0165][0166]
表8
[0167]
进一步的,用户a调用verify kgc-data服务依次验证n个kgc发来的子中间私钥de
ai
的正确性,其中,verify kgc-data服务,即为中间私钥验证服务, verify kgc-data服务可理解为上文中的第二验证算法服务,verify kgc-data 服务用于用户验证各副kgc节点发送的子中间私钥的正确性,其中用户a调用 verify kgc-data服务的调用说明表如表9所示。
[0168][0169]
表9
[0170]
进一步的,每个子中间私钥验证通过后,用户a调用create user-key服务将n个子中间私钥组合,并去除盲因子x,得到用户私钥de
a
,用户私钥即为用户密钥;create user-key服务,即为用户私钥生成服务,可理解为上文中的秘密分享算法,create user-key服务用于用户将去除了盲因子的子中间私钥进行组合,得到用户私钥,其中,用户a调用create user-key服务的调用说明表如
[0171]
表10所示。
[0172][0173]
表10
[0174]
为具体说明加密密钥在实际中的应用,基于应用示例一,本发明提供一对应的场景示例图进行说明,具体如图9所示;
[0175]
参照图9,展示了用户b向用户a发送密文的流程;其中,主kgc和多个副 kgc组成区块链密钥生成系统,区块链密钥生成系统中的主kgc和副kgc预先全网广播公共参数和加密主公钥、用户身份标识符,加密主公密钥为主kgc 的公钥和副kgc的公钥;用户b向用户a发送密文时,使用用户a的id标识和主公密钥进行加密,将加密后的密文发送至用户a;用户a向区块链密钥生成系统请求分发私钥,区块链密钥生成系统进行协商后生成多个中间私钥,并将各个中间私钥发送给用户a,用户a对各个中间私钥进行验证,当各个中间私钥验证通过时,将各个中间私钥进行组装,得到私钥,并使用私钥对密文进行解密,得到明文;其中,中间私钥可理解为上文中的子中间私钥。
[0176]
应用示例二:
[0177]
需要说明的是,应用示例二中的一些说明可参照应用实例一中的内容,应用示例二中不再进行赘述。
[0178]
当用户请求生成签名密钥时,针对签名验签过程,主kgc和副kgc分别生成各自的签名主密钥对,并为用户生成用于用户签名中间密钥,最后由用户自行组装成用户签名私钥。后续用户u
a
使用身份标识符id
a
和用户私钥ds
a
进行签名,使用身份标识符id
a
和主kgc的主公钥p
pub-s
、每个副p
pub-si
进行验签。
[0179]
当接收到用户发送的分发私钥请求时,该分发私钥请求具体为请求分发签名密钥,主kgc调用create kgc-key服务生成主公私钥对(ks0,p
pub-s
),主kgc 秘密保存ks0,广播p
pub-s
,其中,主kgc调用create kgc-key服务的调用说明表如表11所示。
[0180]
create kgc-key主密钥生成服务功能主体主kgc功能描述主kgc生成主公私钥对输入参数系统参数组输出参数(ks0,p
pub-s
)
[0181]
表11
[0182]
进一步的,n个副kgc分别调用create kgc-key服务生成各自的主公私钥对(ks
i
,p
pub-si
),副kgc各自秘密保存自己的ks
i
,广播p
pub-si
,这里1≤i≤n;其中, n个副kgc分别调用create kgc-key服务的调用说明表如表12所示。
[0183]
create kgc-key主密钥生成服务功能主体n个副kgc功能描述副kgc生成主公私钥对输入参数系统参数组输出参数(ks
i
,p
pub-si
)
[0184]
表12
[0185]
进一步的,主kgc调用create user-id服务,为用户a生成唯一的身份标识符id
a
,并将id
a
在网络中广播,其中,主kgc调用create user-id服务的调用说明表如表13所示。
[0186][0187]
表13
[0188]
进一步的,主kgc调用create user-key服务为用户a生成主中间私钥ds
a0
,再将主中间私钥ds
a0
安全传送给用户a,其中,主kgc调用create user-key服务的调用说明表如表14所示。
[0189][0190]
表14
[0191]
进一步的,用户a调用bf confusion服务,生成盲因子x,并用盲因子混淆主中间私钥ds
a0
,将混淆后的主中间私钥ds
a0
'和验证因子x发送给每个副 kgc,其中,用户a调用bf confusion服务的调用说明表如表15所示。
[0192][0193]
表15
[0194]
进一步的,各副kgc分别调用verify user-data服务验证用户a发来数据的合法性,其中,各副kgc分别调用verify user-data服务的调用说明表如表16 所示。
[0195][0196][0197]
表16
[0198]
进一步的,每个副kgc对混淆后的主中间私钥de
a0
'和验证因子x验证均为通过后,副kgc分别调用create user-key服务为用户a生成子中间私钥ds
ai
,并将各自生成的ds
ai
安全传送给用户a;其中,各副kgc分别调用createuser-key服务的调用说明表如表17所示。
[0199][0200]
表17
[0201]
进一步的,用户a调用verify kgc-data服务依次验证n个kgc发来的子中间私钥ds
ai
的正确性,其中,用户a调用verify kgc-data服务的调用说明表如表18所示。
[0202][0203]
表18
[0204]
进一步的,每个子中间私钥验证均通过后,用户a调用create user-key服务将n个子中间私钥组合,并去除盲因子x,得到用户私钥ds
a
,其中,用户a 调用create user-key服务的调用说明表如表19所示。
[0205][0206]
表19
[0207]
需要说明的是,主kgc节点本地存储主kgc的主公私钥对、副kgc的主公钥、以及网络中各用户的身份标识符。n个副kgc节点本地分别存储自己的主公私钥对、主kgc的主公钥、以及网络中各用户的身份标识符。网络中的各用户节点本地存储主kgc和副kgc的主公钥和自己的私钥和身份标识符。
[0208]
为具体说明签名密钥在实际中的应用,基于应用示例二,本发明提供一对应的场景示例图进行说明,具体如图10所示;
[0209]
参照图10,用户b向用户a发送数字签名的流程;其中,主kgc和多个副kgc 组成区块链密钥生成系统,区块链密钥生成系统中的主kgc和副kgc预先全网广播公共参数和加密主公钥、用户身份标识符,加密主公密钥为主kgc的公钥和副kgc的公钥;用户a向区块链密钥生成提供请求分发私钥,区块链密钥生成系统进行协商后生成多个中间私钥,并将各个中间私钥发送给用户a,用户 a对各个中间私钥进行验证,当各个中间私钥验证通过时,将各个中间私钥进行组装,得到私钥,用户a用该私钥进行签名,并向用户b发送数字签名,使得用户b使用用户a的id标识和主公钥进行验签。
[0210]
与图1所述的方法相对应,本发明实施例还提供了一种密钥生成装置,用于对图1中方法的具体实现,本发明实施例提供的密钥生成装置可以应用在由计算机构建而成的区块链密钥生成系统中,其结构示意图如图11所示,具体包括:
[0211]
反馈单元601,用于当接收到用户节点发送的分发私钥请求时,触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;
[0212]
触发单元602,用于触发所述用户节点生成盲因子,并使用所述盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证;
[0213]
验证单元603,用于当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证;
[0214]
生成单元604,用于当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。
[0215]
本发明实施例提供的装置中,当区块链密钥生成系统接收到用户节点发送的分发私钥请求时,触发主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;触发所述用户节点使用生成的盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证,在每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,触发每个所述副密钥生成中心节点将生成的子中间私钥发送至所述用户节点进行验证;当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。本发明提供的密钥生成装置中,通过设置主密钥生成中心节点和多个副密钥生成中心节点,以去中间化的方式生成密钥,实现了秘密共享,本发明不仅简化了生成密钥的过程,还降低了因中心化生成密钥带来的安全风险,降低了密钥泄漏和被窃取的风险。
[0216]
本发明实施例提供的装置中,所述反馈单元601,包括:
[0217]
第一触发子单元,用于触发所述主密钥生成中心节点依据所述用户节点的用户信息生成所述用户节点的身份标识符,并基于所述身份标识符以及该主密钥生成中心节点中预先生成的私钥生成主中间私钥。
[0218]
本发明实施例提供的装置中,所述触发单元602,包括:
[0219]
第一调用子单元,用于调用预设的混淆算法,对所述盲因子以及所述主中间私钥进行运算,生成混淆主中间私钥和验证因子;
[0220]
确定子单元,用于将所述混淆主中间私钥和所述验证因子确定为混淆数据。
[0221]
本发明实施例提供的装置中,所述触发单元602,包括:
[0222]
第二触发子单元,用于触发每个所述副密钥生成中心节点将所述混淆数据、所述主密钥生成中心节点的公钥以及所述身份标识符代入预设的第一验证算法进行验证运算,得到对所述混淆数据的验证结果,以完成对所述混淆数据的验证。
[0223]
本发明实施例提供的装置中,还包括:
[0224]
运算单元,用于触发每个所述副密钥生成中心节点将与其对应的私钥和所述混淆主中间私钥代入预设的私钥生成算法进行运算,将运算得到的结果确定为子中间私钥。
[0225]
本发明实施例提供的装置中,所述验证单元603,包括:
[0226]
第三触发子单元,用于触发所述用户节点调用所述身份标识符、所述主密钥生成中心节点的公钥以及每个所述副密钥生成中心节点的公钥;
[0227]
运算子单元,用于对于每个所述子中间私钥,将该子中间私钥、所述身份标识符、所述主密钥生成中心节点的公钥以及与该子中间私钥对应的所述副密钥生成中心节点的公钥代入预设的第二验证算法进行验证运算,得到与该子中间私钥对应的运算结果,以完成对该子中间私钥的验证。
[0228]
本发明实施例提供的装置中,所述生成单元604,包括:
[0229]
清除子单元,用于清除每个所述子中间私钥中的盲因子,得到与每个所述子中间私钥对应的中间私钥;
[0230]
第二调用子单元,用于调用预设的秘密分享算法,依据所述秘密分享算法对所有的中间私钥进行处理,得到对所有的中间私钥的处理结果,并将所述处理结果确定为用户私钥。
[0231]
本发明实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在的设备执行上述的密钥生成方法。
[0232]
本发明实施例还提供了一种电子设备,其结构示意图如图12所示,具体包括存储器701,以及一个或者一个以上的程序702,其中一个或者一个以上程序702存储于存储器701中,且经配置以由一个或者一个以上处理器 703执行所述一个或者一个以上程序702执行以下操作:
[0233]
当接收到用户节点发送的分发私钥请求时,触发所述主密钥生成中心节点依据所述用户节点的用户信息生成主中间私钥,并将所述主中间私钥反馈至所述用户节点;
[0234]
触发所述用户节点生成盲因子,并使用所述盲因子混淆所述主中间私钥,生成混淆数据,将所述混淆数据发送至每个所述副密钥生成中心节点进行验证;
[0235]
当每个所述副密钥生成中心节点对所述混淆数据的验证结果均为通过时,将每个所述副密钥生成中心节点基于所述混淆数据生成的子中间私钥发送至所述用户节点进行验证;
[0236]
当所述用户节点对每个所述子中间私钥的验证结果均为通过时,触发所述用户节点基于各个所述子中间私钥生成用户私钥。
[0237]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0238]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0239]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0240]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1