在区块链上签发数字证书的方法、装置及存储介质与流程

文档序号:18144116发布日期:2019-07-10 11:26阅读:197来源:国知局
在区块链上签发数字证书的方法、装置及存储介质与流程

本发明涉及信息安全技术领域,特别是涉及一种在区块链上签发数字证书的方法、装置及存储介质。



背景技术:

目前,区块链系统使用ca(certificateauthority,认证授权)机构签发数字证书标识节点和用户身份。不同的节点和用户属于不同的机构,通常机构使用自身的ca机构为节点和用户签发数字证书。在区块链系统包括多个ca机构的情况下,数字证书的签发机构会公开用户的渠道信息。.在一些业务场景中,参与链上交易的机构不希望公开用户的渠道信息,ca机构使用环签名技术对数字证书进行签名可以隐藏用户与数字证书签发机构之间的关系,但在使用基于环签名技术对数据证书进行签名时,通常需要对环进行定义并把环签名规则,例如构成环的信息发布到区块链系统上,从而导致ca机构对这些信息的管理较为复杂。



技术实现要素:

基于此,有必要针对基于环签名技术对数字证书进行签名操作较为复杂的问题,提供一种在区块链上签发数字证书的方法、装置及存储介质。

根据本发明的第一个方面,提供了一种在区块链上签发数字证书的方法,所述方法应用于第一认证授权ca机构的服务器,所述方法包括:在接收到数字证书申请方发出的数字证书申请后,通过与所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,得到环签名证书,所述环签名证书中包括所述环成员的公钥信息;所述环由所述第一ca机构以及区块链系统中的至少一个ca机构构成;将所述环签名证书发送给所述申请方的设备。

可选地,所述通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名之前,还包括:选择区块链系统中的至少一个已在区块链系统上发布根证书或节点证书的第二ca机构与所述第一ca机构构成所述环。

可选地,所述通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,包括:依次使用所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书;按照所述环成员公钥参与所述环签名计算的顺序,将各所述环成员的公钥或公钥标识存储为所述环签名证书的证书持有人唯一标识dn项。

可选地,所述通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,包括:按照预设顺序依次使用各所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书,所述环签名证书的自定义扩展数字域中包括按照所述预设顺序排序的至少两个oid,所述至少两个oid分别与所述各环成员的公钥对应。

可选地,所述各环成员的公钥信息存储于所述环签名证书的证书持有人唯一标识dn项的一个组织项中。

可选地,所述环成员的公钥信息,包括:所述各环成员的公钥以及,所述各环成员的公钥参与对所述待签名证书进行的环签名计算的顺序。

可选地,所述方法还包括:记录与所述第一ca机构构成所述环的所述至少一个第二ca机构;选择所述区块链系统中除所述至少一个第二ca机构以外的第三ca机构与所述第一ca机构构成新的与所述第一ca机构对应的环。

根据本发明的第二个方面,提供了一种在区块链上签发数字证书的装置,所述装置应用于第一认证授权ca机构的服务器,所述装置包括:签名模块,用于在接收到数字证书申请方发出的数字证书申请后,通过与所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,得到环签名证书,所述环签名证书中包括所述环成员的公钥信息;所述环由所述第一ca机构以及区块链系统中的至少一个ca机构构成;发送模块,用于将所述环签名证书发送给所述申请方的设备。

根据本发明的第三个方面,提供了一种在区块链上签发数字证书的装置,包括:存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如本发明第一个方面所述的在区块链上签发数字证书的方法的步骤。

根据本发明的第四个方面,提供了一种非易失性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行根据本发明第一个方面所述的在区块链上签发数字证书的方法的步骤。

本发明的在区块链上签发数字证书的方法、装置及存储介质,通过环签名算法对待签名数字证书进行签名,得到环签名证书,在环签名证书中包括环成员的公钥信息,使得证书的验证方设备可直接根据环签名证书中的该公钥信息来对环签名证书进行验证,使得签发环签名证书的ca机构无需再额外维护或发布环构成的信息,简化了ca机构的操作,提高了ca机构签发环签名证书的效率,也便于环签名证书的验证方设备获取该公钥信息。

附图说明

图1是根据一示例性实施例示出的一种在区块链上签发数字证书的方法的流程图;

图2是根据一示例性实施例示出的一种在区块链上签发数字证书的方法的流程图;

图3是根据一示例性实施例示出的一种在区块链上签发数字证书的装置的框图;

图4是根据一示例性实施例示出的一种在区块链上签发数字证书的装置的框图;

图5是根据一示例性实施例示出的一种在区块链上上签发数字证书的装置的框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1是根据一示例性实施例示出的一种在区块链上签发数字证书的方法的流程图,所述方法应用于第一ca机构的服务器,如图1所示,所述方法包括如下步骤:

步骤101:在接收到数字证书申请方发出的数字证书申请后,通过与所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,得到环签名证书,所述环签名证书中包括所述环成员的公钥信息;所述环由所述第一ca机构以及区块链系统中的至少一个ca机构构成;

其中,数字证书的申请方的设备例如用户设备或区块链系统中的节点设备。

其中,环签名证书的证书内容中可保存有环成员的公钥或公钥标识,其中,公钥或公钥标识可按照各环成员参与环签名计算的顺序进行排序。证书的数据域可以使用证书的dn(distinguishedname,证书持有人唯一标识)。

在本发明的在区块链上签发数字证书的方法的一个示例性实施场景中,上述第一ca机构可以为区块链系统中的任意一个ca机构,区块链系统中的各ca机构在初始化时,签发根证书或中间证书,将签发的根证书或中间证书发布到区块链系统上。在数字证书的申请方的设备向区块链系统中的第一ca机构申请数字证书时,申请方的设备向第一ca机构的服务器提交自身的身份信息,该申请方可以是节点或用户,第一ca机构的服务器在根据该信息确定申请方的身份后合法后,第一ca机构的服务器确定可为该申请方签发数字证书,第一ca机构的服务器可从已向区块链系统上发布根证书或中间证书的多个ca机构中随机选择至少一个ca机构与第一ca机构构成环,构成环的这些ca机构可称为环成员,可通过该环的所有环成员对待签名的数字证书进行环签名计算,得到环签名证书,将该环签名证书发送给申请方的设备,通过这种随机组成环的方式,能够提高环签名证书的安全性,或者,第一ca机构的服务器也可以从已向区块链系统上发布根证书或中间证书的多个第二ca机构中选择预先指定好的第二ca机构与第一ca机构构成环,再基于该环的所有环成员对待签名数字证书进行环签名,得到环签名证书,将该环签名证书发送给申请方的设备,其中,假设区块链上系统具有a、b、c、d、e以及f六个ca机构,其中,a为上述第一ca机构,c、d和e被预先配置可以和a构成环,假设目前c和d已在区块链系统上发布根证书或中间证书,则a的服务器可以选择c以及d与a构成环,则a、c以及d均为构成的环的环成员。

其中,ca机构的服务器对待签名数字证书进行环签名的过程可包括:构成环的各ca机构分别具有对应的公钥和私钥组成的密钥对,例如,构成环的各ca机构可预先自行通过非对称加密算法生成代表自身身份的公私钥对,例如,ca1机构、ca2机构,…,can机构的公私钥对分别为(p1,s1),(p2,s2),…,(pn,sn),其中,p1,p2…,pn依次为各环成员的公钥或公钥标识,s1,s2…,sn依次为各环成员的私钥。在一个例子中,在ca1机构的服务器为用户或节点签发数字证书时,可基于消息m、各环成员的公钥(p1,p2,…,pn)以及一个私钥(在本实施例中,该私钥为ca1机构的私钥s1)基于环签名算法进行计算得到环签名,输入参数为(m,si,p1,…,pn),其中,各环成员的公钥参与环签名计算的顺序为(p1,p2,…,pn),在后续环签名证书的验证方验证该环签名时,需要使用与生成该环签名时同样的公钥顺序(p1,p2,…,pn),故可将各环成员的公钥参与环签名计算的顺序作为各环成员的公钥信息保存在环签名证书中。

步骤102:将所述环签名证书发送给所述申请方的设备。

在步骤102中,在数字证书的申请方的设备为用户设备时,可将环签名证书发送至该用户设备,在数据证书的申请方的设备为区块链系统中的节点设备时,可将环签名证书发送至该节点设备。

在本实施例的签发数字证书的方法中,通过环签名算法对待签名数字证书进行签名,得到环签名证书,在环签名证书中包括环成员的公钥信息,使得证书的验证方设备可直接根据环签名证书中的该公钥信息来对环签名证书进行验证,使得签发环签名证书的ca机构无需再额外维护或发布环构成的信息,简化了ca机构的操作,提高了ca机构签发环签名证书的效率,同时也便于环签名证书的验证方设备获取该公钥信息。

图2是根据一示例性实施例示出的一种在区块链上签发数字证书的方法的流程图,如图2所示,该方法在图1所示的方法的基础上,在通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名之前还可包括:步骤103:选择区块链系统中的至少一个已在区块链系统上发布根证书或节点证书的第二ca机构与所述第一ca机构构成所述环。例如,第一ca机构的服务器可以在已向区块链系统上发布根证书或中间证书的多个ca机构中随机选择一定个数的第二ca机构(第一ca机构的服务器从多个ca机构中随机选择出的ca机构称为第二ca机构)来构成与第一ca机构对应的环,选择的第二ca机构的个数可根据第一ca机构的服务器预先配置的策略进行确定,例如,第一ca机构的服务器预先配置的策略中定义了一个指定的个数i,则第一ca机构的服务器在每次签发证书时,即从已向区块链系统发布根证书或中间证书的多个ca机构中选择i个数的第二ca机构与第一ca机构构成环。如果已向区块链系统发布根证书或中间证书的ca机构的个数小于i,则可以选择全部已向区块链系统发布根证书或中间证书的ca机构与第一ca机构构成环。此外,第一ca机构的服务器预先配置的策略中还可定义第一ca机构每次签发数字证书时所选择的第二ca机构的个数可以是在一个预设数值范围内随机选择的一个数值。例如,第一ca机构的服务器在选择与第一ca机构构成环的第二ca机构之前,可在预先设定的数值范围内随机选择一个数值,该预先设定的数值范围例如[2,10],则可以选择的随机数包括2、3、4、5、6、7、8、9以及10,假设当前第一ca机构的服务器从该数值范围内随机选择的数值为5,则第一ca机构的服务器在本次对待签名证书进行环签名时可从已向区块链系统发布根证书或中间证书的所有ca机构中随机选择5个ca机构与第一ca机构构成环。而第一ca机构的服务器在下一次进行环签名时,如果基于预设设定的数值范围随机选择的数值为6,可从已向区块链系统发布根证书或中间证书的所有ca机构中随机选择6个ca机构与第一ca机构构成环,从而可使得第一ca机构的服务器在每次为用户或节点签发数字证书时,都使用不同的环进行环签名,可进一步提高环签名证书的安全性。

在一种可实现方式中,通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名可包括:依次使用所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书;按照所述环成员公钥参与所述环签名计算的顺序,将各所述环成员的公钥或公钥标识存储为所述环签名证书的证书持有人唯一标识dn项。其中,数字证书可具有多个dn项,例如,commonname(通用名),emailaddress(email地址),organization(组织的名称),如公司名或机构名,“organizationalunit”是用于说明公司中的部门。“locality”是通常用于描述组织所在的城市或地区。“stateorprovince”组织所在的省或州,“country”所在国家(地区)名称的两个字符的缩写,这些信息组合为一系列属性值对,称为dn,用于唯一标识数字证书的主题。其中,o项(也称组织项)指的是组织对应的信息。其中,数字证书的dn项可按如下顺序进行排列:c=us,st=state,l=cityname,o=exampleorg,u=security,n=server.example.org,dn项的规范可遵循x.501中的规定,可使用在ldap(lightweightdirectoryaccessprotoco,轻量目录访问协议)中,目录树的组织形式通常是根节点在最上层,下层节点一般小于根节点,例如根节点为国家,下层节点可依次为省、市、组织、部门以及主体,由于证书的dn项具有顺序,故可将参与环签名计算的各环成员的公钥或公钥标识按照其参与环签名计算的顺序存储于环签名证书的dn项中,从而保存各环成员的公钥参与环签名计算的顺序。由于环签名证书中包括了环成员以及环成员的公钥参与环签名计算的顺序信息,故签发环签名证书的ca机构无需再维护或发布构成环构成信息,进一步简化了ca机构进行环签名的操作,降低了环签名操作的复杂度,同时,也便于环签名证书的验证方设备获取环成员以及环成员的公钥参与环签名计算的顺序信息。

在一种可实现方式中,通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名可包括:按照预设顺序依次使用各所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书,所述环签名证书的自定义扩展数字域中包括按照所述预设顺序排序的至少两个oid(objectidentifier,对象标识符),所述至少两个oid分别与所述各环成员的公钥对应。虽然数字证书的自定义扩展项中的信息本身不具有顺序,但可将环成员的公钥参与环签名计算的顺序信息包含在自定义oid中,例如,可使每个环成员的公钥对应一个oid,按照各环成员的公钥参与环签名计算的顺序对各环成员的公钥对应的oid进行排序,然后将排序后的oid和/或oid与公钥之间的对应关系记录在环签名证书的自定义扩展项中,或者,可直接按照环成员的公钥参与环签名计算的顺序将环成员的公钥或公钥标识作为oid顺序存储在环签名证书的自定义扩展项中,从而使得环成员的公钥信息被编码在环签名证书的自定义扩展信息项中。环签名证书的获取方的设备在获取到环签名证书后,根据环签名证书的自定义扩展项中顺序排列的oid即可获知参与该环签名证书的环签名计算的环成员的以及环成员的公钥的顺序。基于此,ca机构可自行定义各环成员参与环签名计算的顺序,增加了环签名操作的灵活性,也进一步提高了环签名的安全性。

在一种可实现方式中,所述各环成员的公钥信息存储于所述环签名证书的证书持有人唯一标识dn项的一个组织项中。鉴于数字证书的dn项本身具有顺序,故参与环签名计算的环成员的公钥或公钥标识可按照其参与环签名计算的顺序存储于环签名证书的dn项中,例如,将顺序排序后的各环成员的公钥或公钥标识作为环签名证书的一个o项记录在环签名证书中,从而实现将环成员的公钥信息编码在环签名证书的o项中,以标识该环签名证书的颁发者的信息的目的,基于此,可以借助数字证书dn项本身具有的顺序来读取各环成员的公钥,从而获知各环成员的公钥以及各公钥参与环签名计算的顺序,无需在对各环成员的公钥参与环签名计算的顺序进行定义,进一步简化了ca机构的环签名操作。

在一种可实现方式中,所述环成员的公钥信息可包括:所述各环成员的公钥以及,所述各环成员的公钥参与对所述待签名证书进行的环签名计算的顺序。例如,在环签名证书中环成员的公钥信息可以为顺序排列的所述环成员的公钥,或顺序排列的所述环成员的公钥标识,或为顺序排列的与环成员的公钥或公钥标识对应的oid。此外,环成员的公钥信息中还可以体现出参与环签名计算的各环成员,以及环成员的个数,例如,根据环成员的公钥或公钥标识可获知对应的环成员,以及根据环成员的公钥或公钥标识的个数可获知参与环签名计算的环成员的个数。在环签名证书的验证方设备对该环签名证书中的签名进行验证时,可从环签名证书的o项或自定义扩展项中获取顺序排列的环成员的公钥、或者环成员的公钥标识,或者与环成员的公钥对应的oid,根据获取到的信息获知参与环签名计算的环成员以及各环成员的公钥的顺序,在获知环签名以及进行环签名计算时所使用的消息m以及所有的环成员的公钥(p1,…,pn)这些信息后,可以使用这些信息基于环签名验证算法对环签名证书中的环签名进行验证。

在一种可实现方式中,所述方法还可包括:记录与所述第一ca机构构成所述环的所述至少一个第二ca机构;选择所述区块链系统中除所述至少一个第二ca机构以外的第三ca机构与所述第一ca机构构成新的与所述第一ca机构对应的环。例如,第一ca机构的服务器每次为用户设备或节点设备签发数字证书时,均可构成不同的环,例如,构成环的ca机构不同和/或构成环的ca机构的个数不同。在一个例子中,根据第一ca机构的服务器预先配置的策略,其在本次为用户设备或节点设备签发数字证书时,在区块链系统上发布根证书或中间证书的ca机构中选择a、b以及c三个第二ca机构与第一ca机构构成环,使用该环中的所有环成员对待签名证书进行环签名,得到环签名证书;第一ca机构的服务器在下一次签发证书时根据预先配置的策略,则选择已在区块链系统上发布根证书或中间证书的b、c、d、e四个第二ca机构与第一ca机构构成环,使用该环中所有的环成员对证书进行环签名,得到环签名证书,从而使得第一ca机构每次进行环签名时构成环的ca机构不同,或ca机构的个数也不同,从而可进一步提高环签名的安全性。

图3是根据一示例性实施例示出的一种在区块链上签发数字证书的装置的框图,所述装置应用于第一ca机构的服务器,如图3所示,所述装置30包括如下组成部分:

签名模块31,用于在接收到数字证书申请方发出的数字证书申请后,通过与所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名,得到环签名证书,所述环签名证书中包括所述环成员的公钥信息;所述环由所述第一ca机构以及区块链系统中的至少一个ca机构构成;

发送模块32,用于将所述环签名证书发送给所述申请方的设备。

图4是根据一示例性实施例示出的一种在区块链上签发数字证书的装置的框图,如图4所示,该装置40在图3所示的装置的基础上,还可包括:选择模块33,用于通过所述第一ca机构对应的环中的各环成员对与所述数字证书申请对应的待签名证书进行环签名之前,选择区块链系统中的至少一个已在区块链系统上发布根证书或节点证书的第二ca机构与所述第一ca机构构成所述环。

在一种可实现方式中,所述签名模块31可用于:依次使用所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书;按照所述环成员公钥参与所述环签名计算的顺序,将各所述环成员的公钥或公钥标识存储为所述环签名证书的证书持有人唯一标识dn项。

在一种可实现方式中,所述签名模块31可用于:按照预设顺序依次使用各所述环成员的公钥对所述待签名证书进行的环签名计算,得到所述环签名证书,所述环签名证书的自定义扩展数字域中包括按照所述预设顺序排序的至少两个oid,所述至少两个oid分别与所述各环成员的公钥对应。

在一种可实现方式中,所述各环成员的公钥信息存储于所述环签名证书的证书持有人唯一标识dn项的一个组织项中。

在一种可实现方式中,所述环成员的公钥信息可包括:所述各环成员的公钥以及,所述各环成员的公钥参与对所述待签名证书进行的环签名计算的顺序。

在一种可实现方式中,所述装置还包括:

记录模块,用于记录与所述第一ca机构构成所述环的所述至少一个第二ca机构;确定模块,用于选择所述区块链系统中除所述至少一个第二ca机构以外的第三ca机构与所述第一ca机构构成新的与所述第一ca机构对应的环。。

图5是根据一示例性实施例示出的一种在区块链上签发数字证书的装置的框图。如图5所示,该装置500可以包括:处理器501,存储器502,多媒体组件503,输入/输出(i/o)接口504,以及通信组件505。

其中,处理器501用于控制该装置500的整体操作,以完成上述的在区块链上签发数字证书的方法中的全部或部分步骤。存储器502用于存储各种类型的数据以支持在该装置500的操作,这些数据例如可以包括用于在该装置500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件503可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器502或通过通信组件505发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口504为处理器501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件505用于该装置500与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件505可以包括:wi-fi模块,蓝牙模块,nfc模块。

在一示例性实施例中,上述装置500可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的签发数字证书的方法。

在另一示例性实施例中,还提供了一种包括程序指令的非临时性计算机可读存储介质,例如包括程序指令的存储器502,上述程序指令可由装置500的处理器501执行以完成上述的在区块链上签发数字证书的方法。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

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