首页 / 专利库 / 资料储存系统 / 工作量证明 / 一种PKI中证书透明化的方法

一种PKI中证书透明化的方法

阅读:801发布:2020-09-02

专利汇可以提供一种PKI中证书透明化的方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种PKI中证书透明化的方法,该方法设置一条证书 区 块 链 ,证书订户在证书区块链中发布I型证书交易, 声明 所有自己目前在用的合法证书,以及发布II型证书交易,设置用来签名I型证书交易的发布密钥对,证书交易由其发布者签名,其他人无法冒充证书订户发布证书交易。证书用户验证证书时,从自己保存的证书区块链副本中寻找相应订户发布的证书交易,并检查待验证的证书是否存在于相应证书交易的有效证书列表中。本方法优点在于:证书订户在区块链中声明有效证书的信息;证书交易需要由发布者签名,签名的密钥可以通过证书交易改变;证书用户验证证书时,需要检查证书是否出现在证书区块链中,防止虚假证书造成的攻击。,下面是一种PKI中证书透明化的方法专利的具体信息内容。

1.一种PKI中证书透明化的方法,步骤包括:
1)设置一条公开的证书链,证书订户在该证书区块链中发布CA为其签发的数字证书的信息,以声明目前在用的所有合法证书;
2)上述发布的关于证书的信息由该证书订户签名,签名使用的发布密钥对由该证书订户产生和维护;
3)证书用户验证证书时,通过从证书区块链中获取该证书订户发布的关于证书的信息来检查该待验证证书是否有效。
2.如权利要求1所述的方法,其特征在于:证书订户通过在证书区块链中发布证书交易发布信息;证书交易包括I型证书交易和II型证书交易,其中,I型证书交易用以发布关于证书的信息,II型证书交易用以维护发布密钥对。
3.如权利要求2所述的方法,其特征在于:证书订户在证书区块链中周期性地发布I型证书交易或在证书状态变化时发布I型证书交易。
4.如权利要求2所述的方法,其特征在于:I型证书交易包含的信息包括:证书订户的标识、证书订户的上一证书交易的散列值、本证书交易的有效期起止时间、证书列表、验证下一I型证书交易签名应使用的发布公钥、证书订户使用发布密钥对的私钥对证书交易的签名。
5.如权利要求4所述的方法,其特征在于:I型证书交易中的证书列表包含证书订户所有的在用的有效证书,并满足如下条件:
1)列表中证书的订户与证书交易中证书订户的标识一致;
2)证书应包含完整的证书链,且在假设信任其根证书的前提下可验证通过;
3)证书列表可添加上一I型证书交易的证书列表中没有出现过的证书;
4)上一I型证书交易的证书列表中出现的证书除其自然过期或者被撤销外应继续出现,其中,证书被撤销时,证书列表中应包含相应的带有完整验证信息的CRL文件。
6.如权利要求2所述的方法,其特征在于:证书订户在初始化或更改发布密钥对时发布II型证书交易。
7.如权利要求2所述的方法,其特征在于:II型证书交易包含的信息包括:证书订户的标识、证书订户的上一证书交易的散列值、验证下一I型证书交易应使用的发布公钥;其中,若该II型证书交易为该证书订户的首个证书交易,所述的上一证书交易的散列值为0;以及还包括:
CA为证书订户签发的一有效证书以及该证书对应的私钥对该II型证书交易的签名;
一证明者列表,指明为下一II型证书交易签名的证明者的范围,证明者来自在证书区块链中发布过证书交易的证书订户;
一系列证明者的签名,其中签名的证明者来自上一II型证书交易中的证明者列表,签名使用的密钥为证明者发布密钥对的私钥。
8.如权利要求2所述的方法,其特征在于:证书用户同步最长的证书区块链到其计算机,作为证书验证的依据;验证证书时,需在证书区块链中寻找证书订户发布的证书交易,并满足以下条件:
1)存在一有效期内的证书交易,其证书列表中包含待验证的证书,且距离证书区块链末尾若干个区块以上;
2)上述证书交易之后的所有属于证书订户的证书交易,其证书列表中都包含待验证的证书;
3)待验证的证书的根证书被证书用户信任。
9.如权利要求1所述的方法,其特征在于:证书区块链包括多个区块,每一区块包含区块产生的时间、上一区块的散列值、一用以产生工作量证明的任意数字段、若干证书交易以及这些证书交易组成的Merkle树的树根值。
10.如权利要求9所述的方法,其特征在于:区块通过矿工产生;矿工是区块链网络中的挖矿服务器,收集并验证网络中新出现的证书交易,并将合法的证书交易包含在拟发布的新的区块当中。

说明书全文

一种PKI中证书透明化的方法

技术领域

[0001] 本发明涉及计算机安全领域,特别涉及一种在PKI中使用链实现证书透明化的方法。

背景技术

[0002] 公钥密码学是一类使用非对称密钥的密码学方法。公钥密码学使用一对不同的密钥,由其中一个密钥加密的信息,需要使用另一个密钥解密。通常在一对非对称密钥中,一个密钥对外公开,称之为公钥,而另一个密钥保持秘密,称之为私钥。数字签名是一种使用公钥密码学的密码技术。签名者使用自己的私钥对一个消息的摘要进行加密(即签名)。签名验证者使用签名者的公钥解密签名结果,并检查解密结果与收到消息的摘要是否一致(即验签)。如果验签通过,则说明签名来自于公钥对应的私钥的持有者,并且收到的消息与签名的消息一致。
[0003] 数字签名可以被用来进行数据源或身份认证,其前提是需要解决密钥与身份的对应问题,即验签公钥的对应私钥持有者的身份认证问题。公钥基础设施(PKI,Public Key Infrastructure)建立在公钥密码学的基础上,主要解决了密钥属于谁的问题。公钥基础设施的出现使得网络上的数字签名有了理论上的安全保障。
[0004] 在PKI中,CA机构(即第三方证书认证中心)是各方都信任的实体。CA机构的公钥是广泛所知的,它通过签发数字证书提供密钥持有者认证服务。数字证书(以下简称证书)绑定了公钥数据和对应私钥的持有者(以下简称为证书订户/证书主体)的身份信息,并由CA机构进行数字签名。数字证书中的信息,是经过CA机构严格审核的,保证其真实性。CA机构的签名,表明了证书文件的来源,也保证了证书文件的完整性。CA机构对证书信息的严格审核和对签名密钥的安全管理,是PKI体系安全运行的基础。
[0005] 然而,已经发生的一些CA机构的误操作事件和对CA机构的攻击事件表明,CA机构可能签发“虚假证书”。虚假证书可以被验证通过,但是证书中密钥的实际持有者并非证书宣称的订户。一个虚假证书可以被敌手用来发动身份冒用攻击,侵入服务器和用户之间的通信,破坏站点和用户的数据安全。更严重的是,由于CA机构是被所有人共同信任的,任何一个颁发虚假证书的CA机构都会造成对整个PKI系统安全性的威胁。
[0006] 为了缓解上述由于CA机构发布虚假证书造成的可能的攻击,业界提出了证书透明化(Certificate Transparency)方案。证书透明化方案中,所有合法的证书都是对所有人公开可见的。在以往的证书透明化方案中,CA机构和证书的订户将自己所颁发或拥有的证书提交到一个公开日志服务器。证书用户在验证证书时,需要额外地要求该证书出现在公开日志服务器中;如果该证书没有出现在公开日志服务器中,则证书用户拒绝接受该证书。同时,一旦公开日志中出现虚假证书,该虚假证书的利益相关方就能观察到该证书,并采取其他措施减少该证书可能带来的攻击(如要求CA机构撤销虚假证书)。
[0007] 已有的证书透明化技术,依赖于公开日志服务器的可用性和正确性。尤其地,应要求记录证书的日志具有Append-only特性,即服务器只可以向日志中添加新的内容,而不可修改日志中已有的内容。否则,恶意的公开日志服务器可以私下删除已经公布的虚假证书,使得虚假证书不被利益相关方发现。所以在已有的证书透明化方案中,将记录证书的日志设计成Merkle Tree的形式,并且公开日志服务器需要提供一系列证据证明自身的Append-only特性。这些要求提高了日志的维护、审计过程中的开销。
[0008] 区块链(Blockchain)技术是一种去中心化的分布式数据存储技术。在区块链中,数据以区块的形式组织;区块根据产生时间的先后,顺序地链接起来形成区块链。区块由区块链网络中的矿工通过计算工作量证明(Proof-of-Work,PoW)产生。这个过程可被视作所有矿工以计算能为权重进行投票。只要诚实的矿工的权重占多数,最终的区块链(概率上)一定是正确的。区块链技术通过密码学手段保证,一旦产生的信息添加至区块链中就不能再被篡改或伪造,除非敌手能够同时控制区块链系统中超过51%的权重。
[0009] 区块链技术的特点使其可以用以实现证书透明化。区块链中的所有信息都是公开的。任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息是透明的。进一步地,区块链中的数据在网络中的每个节点都有备份,具有很好的可用性。

发明内容

[0010] 有鉴于此,本发明的目的在于提供一种PKI中证书透明化的方法,借助区块链技术,在区块链中实现证书的透明化,防止虚假证书带来的威胁。
[0011] 为解决上述技术问题,本发明采用如下技术方案:
[0012] 一种PKI中证书透明化的方法,步骤包括:
[0013] 1)设置一条公开的证书区块链,证书订户在该证书区块链中发布CA为其签发的数字证书的信息,以声明目前在用的所有合法证书;
[0014] 2)上述发布的关于证书的信息由该证书订户签名,签名所用的发布密钥对由该证书订户产生和维护;
[0015] 3)证书用户验证证书时,通过从证书区块链中获取该证书的证书订户发布的关于证书的信息来检查该待验证证书是否有效。
[0016] 进一步地,证书区块链包括多个区块,每一区块包含区块产生的时间、上一区块的散列值、一用以产生工作量证明的任意数字段、若干证书交易以及这些证书交易组成的Merkle树的树根值。
[0017] 包含在区块中的,由证书订户发布的数据结构称为证书交易。一个区块可以同时包含多个证书交易,但是对于同一证书订户只能包含一个证书交易。证书交易需要被其发布者,也就是证书订户签名,由此其他人无法冒充该证书订户发布证书信息。签名所用的非对称密钥对,称为发布密钥对,其公钥部分称为发布公钥。
[0018] 进一步地,证书交易包括I型证书交易和II型证书交易,其中,I型证书交易主要用来发布关于证书的信息,II型证书交易主要用来维护发布密钥对。
[0019] 进一步地,所述检查该待验证证书是否有效是指检查待验证的证书是否存在于相应证书交易所包含的关于有效证书的信息中。
[0020] 进一步地,证书订户在证书区块链中周期性地发布I型证书交易,其中包含CA为证书订户签发的证书,以此声明自己目前在用的证书;或者当证书状态发生变动时,可以随时发布新的I型证书交易以更新自己的证书信息;其中,所述的证书状态发生变动,是指I型证书交易中的证书被撤销,或者证书订户获得新的数字证书。
[0021] 进一步地,证书订户使用II型证书交易维护发布密钥对,具体为:首次发布证书信息前证书订户需要发布II型证书交易,以初始化自己的发布密钥对;当发布密钥对的私钥因为任何原因丢失或者泄露时,证书订户可以通过发布II型证书交易重置自己的发布密钥对。
[0022] 进一步地,I型证书交易包含的信息有:证书订户的标识、证书订户的上一证书交易的散列值、本证书交易的有效期起止时间、证书列表、验证下一I型证书交易应使用的发布公钥、证书订户使用发布密钥对的私钥对证书交易的签名,I型证书交易具有有限的有效期。
[0023] 进一步地,I型证书交易的证书列表包含证书订户所有在用的有效证书,并满足如下条件:
[0024] 1)列表中证书的订户须与证书交易中证书订户的标识一致;
[0025] 2)证书应包含完整的证书链,且在假设信任其根证书的前提下可验证通过;
[0026] 3)证书列表可添加上一I型证书交易的证书列表中没有出现过的证书;
[0027] 4)上一I型证书交易的证书列表中的证书除其自然过期或者被撤销外应继续出现,其中,证书被撤销时,证书列表中应包含相应的CRL文件,该CRL文件应包含用以验证此CRL的完整信息(通常是一个证书链)。
[0028] 进一步地,II型证书交易包含的信息有:证书订户的标识、证书订户的上一证书交易的散列值、验证下一I型证书交易应使用的发布公钥;还包含CA机构为证书订户签发的一有效证书、该证书对应的私钥对该II型证书交易的签名,用来证明发布该证书交易的正是证书订户本身;还包含一证明者列表,证明者来自该证书订户信任的、在证书区块链中已经发布过II型证书交易的、无不良历史记录的其他证书订户,该证明者列表用来指明下一II型交易证书的证明者的范围;还包含一系列证明者的签名,其中签名的证明者应来自上一II型证书交易中的证明者列表,且签名的证明者数量不小于一系统预设的阈值;证明者使用自己当前的发布密钥对的私钥进行签名,在签名之前,证明者应检查II型证书交易的正确性,并使用传统方法验证II型证书交易中证书订户的证书。
[0029] 进一步地,区块的产生由矿工完成;矿工是区块链网络中的挖矿服务器,收集并验证网络中新出现的证书交易,并将合法的证书交易包含在拟发布的新的区块当中。
[0030] 进一步地,矿工在验证证书交易时,需遵循I型和II型证书交易的要求,具体包括:
[0031] 对于I型证书交易,矿工需验证:
[0032] 1)证书订户的上一证书交易的散列值是否符合证书区块链的历史记录;
[0033] 2)证书交易是否在有效期内;
[0034] 3)证书列表包含的证书是否属于发布该证书交易的证书订户;包含的CRL文件是否对应于被撤销的证书;证书和CRL文件是否为包含完整的、可验证通过的、证书状态正常的证书链;与前一个I型证书交易的证书列表相比,本次证书交易是否满足证书增减要求;
[0035] 4)证书交易的签名是否正确,验证签名是否正确时,矿工应使用发布交易的订户的上一个证书交易中公布的发布公钥;
[0036] 对于II型证书交易,如果该交易不是发布交易的订户的首个证书交易,矿工需验证:
[0037] 1)证书订户的上一证书交易的散列值是否符合证书区块链的历史记录;
[0038] 2)交易的证明者是否在上一II型证书交易的证明者列表中,且数量是否不小于系统预设的最小值;
[0039] 3)证明者使用各自的发布密钥对的私钥对交易的签名是否正确;
[0040] 4)发布交易的证书订户的证书完整且可验证通过;
[0041] 5)发布交易的证书订户使用4)中的证书对应的私钥签名,且签名正确;
[0042] 对于II型证书交易,如果该交易是发布交易的订户的首个证书交易,矿工需验证:
[0043] 1)证书订户的上一证书交易的散列值为0;
[0044] 2)交易的证明者的数量不小于系统预设的最小值;
[0045] 3)证明者使用各自的发布密钥对的私钥签名且签名正确;
[0046] 4)发布交易的证书订户的证书完整且可验证通过;
[0047] 5)发布交易的证书订户使用4)中证书对应的私钥签名,且签名正确。
[0048] 进一步地,矿工为拟发布的区块计算工作量证明,并将得出的解记录在区块中的“任意数”字段;其他矿工收到一个新发布的区块时,首先验证区块中包含的证书交易,再验证区块中工作量证明的解是否正确及Merkle树的树根取值是否正确;如果均正确,收到该区块的矿工将这个区块添加到自己的证书区块链副本上;每个矿工都会与其它矿工交互,同步目前最长的证书区块链副本,并且在最长的证书区块链副本的基础上继续生成新的区块。
[0049] 进一步地,验证证书的证书用户应与最长的证书区块链副本保持同步,证书用户将目前得到的最长的证书区块链副本备份到自己的计算机中,作为证书验证的依据;当证书用户收到一个证书时,需要在证书区块链中寻找证书订户发布的证书交易;当满足以下条件时,证书验证通过:
[0050] 1)存在一有效期内的证书交易,其证书列表中包含待验证的证书,且距离证书区块链末尾若干个区块以上;
[0051] 2)上述证书交易之后的所有属于证书订户的证书交易,其证书列表中都包含待验证的证书;
[0052] 3)待验证的证书的根证书被证书用户信任。
[0053] 验证证书时,证书用户不再需要使用传统的方式验证证书。这是因为在相应的证书交易被加入到证书区块链之前,证书列表中的所有证书链都已经由矿工使用传统方法验证通过。
[0054] 本发明涉及的方案,具有以下优点:
[0055] 1)可以增强PKI体系的安全性。本发明提出的方案中,合法的证书被发布在证书区块链中,并对所有人公开。此时,即使CA机构签发了虚假证书,证书用户也不会错误地接受虚假证书。这是因为虚假证书不会被真正的证书订户发布到证书区块链中,也就不会被证书用户验证通过。
[0056] 2)和现有的PKI体系完全兼容。在本发明提出的方案中,CA机构的功能和现有的PKI系统一致,CA不需要做任何操作上、商业模式上的改变。这也有利于本发明提出的方案的部署。
[0057] 3)相比传统的PKI系统,证书订户拥有更多的管理证书的权利。在传统的PKI体系中,证书的签发与撤销管理完全由CA机构完成。而在本发明提出的方案中,证书订户通过发布证书交易,可以自主且显式地限定应该被用户接受的证书的范围。
[0058] 4)证书依赖方不需要进行传统的证书验证工作。研究表明,在PKI实际应用中,一些SSL工具中对于证书验证的实现存在安全漏洞,也对数字证书应用的安全性产生威胁。在本发明提出的方案中,证书依赖方不需要自己进行传统的证书验证,仅需要检查证书链的根证书是否在信任列表中。相应的传统的证书验证工作,由矿工在区块链产生阶段完成。矿工使用的证书验证方法是公开的、被广泛认可的,杜绝了不正确的证书验证过程可能带来的安全威胁。
[0059] 5)本发明提出的方案可用性高。由于区块链是去中心化的、分布式的数据库,网络中的每一个矿工都独立地保存区块链的历史信息。任何一个矿工的失效,都不会影响整个网络中证书区块链的可用性。相反,传统的使用公开日志服务器的证书透明化方案中,一旦公开日志服务器失效或者执行非法操作,则证书透明化方案失效。
[0060] 6)本发明提出的方案具有天然的Append-only特性。区块链技术通过密码学手段保证,一旦产生的信息添加至区块链中就不能再被篡改或伪造。因此,被记录到区块链中的证书信息是Append-only的。而在传统的证书透明化方案中,证书日志需要设计成Merkle树,并额外地设计一系列证明机制以实现Append-only。附图说明
[0061] 图1是证书用户验证证书的流程示意图。
[0062] 图2是各方数据交互示意图。
[0063] 图3是I型证书交易的结构示意图。
[0064] 图4是II型证书交易的结构示意图。
[0065] 图5是区块的结构示意图。

具体实施方式

[0066] 为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
[0067] 针对本发明公开的一种PKI中证书透明化的方法,图1是证书用户采用本方法验证证书的流程示意图,图2为采用本方法各方数据交互示意图。在此列举一实施例,本实施例中的证书订户的标识使用DNS域名,相应地,CA签发的证书中,证书订户的名称也使用DNS域名。
[0068] 图3是采用本方法实现证书透明化的I型证书交易的结构示意图。其中DNS NAME、TYPE、VALIDITY分别表示证书订户的标识、证书交易的类型和有效期。TYPE应为类型I。PREVHASH是该证书订户所发布的上一个证书交易的散列值。LIST OF CERT CHAINS包含证书订户在用的所有有效证书。证书使用X.509标准,采用DER编码。NEXT PUBLISHING KEY为验证以后的I型证书交易中签名所使用的发布公钥。
[0069] 图4是采用本方法实现证书透明化的II型证书交易的结构示意图。其中DNS NAME、TYPE分别表示证书订户的名称、证书交易的类型。TYPE应为类型II。PREVHASH是该证书订户所发布的上一个证书交易的散列值。PUBLISHING KEY为验证以后的I型证书交易签名的发布公钥。CERTIFER GROUP限定了下一个II型证书交易中签名的证明者的范围。LIST OF CERTIFIERS表示为当前II型证书交易签名的证明者,SIG BY CERTIFIERS为证明者的签名。CERT是一个证书订户为该证书交易发布者的有效证书,SIG BY OWNER是使用CERT的私钥对该证书交易的签名。
[0070] 图5是采用本方法实现证书透明化的区块的结构示意图。PREV HASH是区块链中上一个区块的散列值,NONCE存放工作量证明的计算结果,TIMESTAMP为该区块开始进行计算工作量证明的解的时间。MERKLE TREE ROOT是该区块所包含的所有证书交易组成的MERKLE树的根。该区块所有证书交易的DNS NAME组成LIST OF DNS NAMES。以上所有字段组成区块头。所包含的所有证书交易,即LIST OF TRANSACTIONS组成区块体。
[0071] 本实施例中的证书用户、证书订户和矿工使用P2P网络实时地同步最新的区块链信息。具体地,证书订户向P2P网络中发布自己的证书交易并获取最长的证书区块副本。矿工从P2P网络中获取最新的区块和证书交易,以及发布新产生的区块。证书用户从P2P网络中获得最长的证书区块链副本的区块头部分。在本实施例中,P2P网络采用由Libjingle+STUN服务器的架构,在证书订户端和用户端,使用Libjingle搭建P2P客户端。
[0072] 本实施例中的证书订户是以Https服务器的形式实现的。在本实施例中,采用Apache服务器软件搭建Https服务器,并配置服务器证书。同时,对Apache软件的SSL协议进行修改,使其支持在SSL链接协商阶段加入关于证书交易的扩展字段。具体地,在SSL协商过程中的Server Hello阶段,加入新的扩展字段,根据自己发布的证书交易包含以下内容:
[0073] 1)一系列Https服务器发布的I型证书交易(均应包含此SSL链接中使用的证书),使得证书用户可以根据证书交易验证证书;2)上一条中的每个I型证书交易对应的Merkle树认证路径,使得可以根据认证路径和对应区块头中的Merkle树根验证证书交易在区块中的存在性。
[0074] 本实施例中的证书用户是以Web浏览器的形式实现的。在本实施例中,采用了Chromium浏览器,并对证书验证的过程进行了修改,实现了使用区块链验证证书的功能。具体地,新的验证方式中,浏览器需要:
[0075] 1)检查收到的证书链的根证书是否在自身的根证书列表中;2)根据访问的Https网站的域名,遍历证书区块链的区块头结构,寻找由访问的Https服务器发布的、距离区块链末尾6个区块以上的、最近的I型证书交易所在的区块,以及上述证书交易之后的、所有由访问的Https服务器发布的I型证书交易所在的区块;3)根据SSL握手过程中从Https服务器收到的证书交易具体内容和验证路径,结合区块头结构中的Merkle树根,检查收到的证书交易是否确实被包含在对应区块中;4)检查收到的证书交易是否在有效期内;5)检查收到的SSL证书是否在证书交易所包含的证书列表中。若上述过程均通过,则证书验证通过。
[0076] 以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈