基于区块链技术的数字证书处理构想
2019-05-30吕凌浩
吕凌浩
在X.509标准中,PKI(Public Key Infrastructure)的定义是支持公钥管理并能支持加密、认证、完整性和不可否认服务的基础设施。简单来说,PKI就是一种使用公鑰密码理论和技术而建立的在信息安全保护领域普遍适用的系统或平台,为各种网络应用提供必要的安全服务。一个比较典型的PKI系统包括证书机构CA、PKI策略、数字证书库、证书撤销系统和PKI应用接口等。PKI是目前网络安全建设的基础与核心,是各类信息服务能够安全实施的基本保障,因此,对PKI的研究和开发是目前信息安全领域的热点。
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。作为一项新兴的技术,区块链定义了一种全新的网络互信方式,具备去中心化、分布式计算、可编程及安全可信等特点,过程高度透明,数据高度安全,凡是需要公平公开并且互相信任的领域,都可以应用区块链技术。Lux Research于2018年12月发布的《2019年的19项关键技术》报告显示,区块链是即将改变世界经济,并在未来改变人们生活方式的19项关键技术之一。
一、PKI存在问题
随着大数据时代的到来,数据体量将会呈现爆炸性上升的趋势,社会对信息安全服务的效率和多样性需求变得越来越强,人与人之间的信任关系越来越复杂易变,现有的PKI系统对于信息的保护和信任关系的建立,已经不值得完全信赖。传统PKI技术在具体应用时存在以下问题:
(一)信任锚点问题:根CA是信任的起点,必须保证其具有极高的信誉。但如何能保证CA是绝对可信的?有人提出可以把政府或国家机关作为根CA,以国家信用来担保。然而在某些情况下,国家也变得不再可信。据谷歌官方安全博客报道,2013年12月7日,他们发现一个与法国信息系统安全局(ANSSI)有关系的中级CA发行商向多个Google域名发行了伪造的CA证书。这是全球首例曝光的国家级伪造CA证书劫持加密通讯事件,在网络安全行业影响十分恶劣。
(二)中心失效问题:作为系统核心的根CA对于黑客来说是极其明显的攻击目标,攻击成本相对较低而收益却非常大。根CA一旦被攻陷,该CA给其他用户签发的证书以及CA给自己签发的根证书都将失去作用。
(三)性能瓶颈问题:PKI系统的核心是CA,它所做的工作包括证书发放、证书更新、证书撤销、证书验证等,任务繁重且无法被代理。这很容易使CA成为整个系统的性能短板,产生瓶颈问题。
(四)证书配置效率问题:用户在配置证书时,要首先向CA申请证书,CA签发证书后,用户需要将签发的证书安装在个人的终端上。在一些需要批量操作的场合例如终端设备的生产线上,由于私钥的私密性和唯一性,必须一个一个地配置安装证书,这样会浪费大量的时间和精力。
(五)树状结构问题:CA证书体系是一个层次分明的树状结构。上级CA在多数情况下以静态的方式使用自己的私钥给下级节点签发证书,而下级节点却很难证实它的上级是否可信。不仅如此,上级CA对自己的签名私钥的保护力度在很大程度上决定了下层所有节点的安全程度。因此,受到这种建立信任关系的方式的影响,为保证系统的安全可信,各级CA对其组织和人员的管理维护成本变得极其高昂。
二、基于区块链的证书处理方式
区块链技术采用了分布式存储计算、共识机制等方法,提供了一种全新的建立信任的方案,已被应用于各类业务场景,如跨境支付、保险理赔、慈善公益等。目前已有EMCSSL、CertCoin等基于区块链的PKI技术应用可以实现去中心化的认证方式,美国科技公司Pomcor也提出基于区块链的PKI系统,该系统仍然采用中心化的认证方式,使用区块链存储已发布或撤销证书的散列值。
本文提出一个新的构想,在保持原来PKI整体系统架构不变的基础上,改变证书的处理方式,将CA所要完成的工作分散化,由所有证书持有者共同完成。数字证书以区块链的形式存储,证书的申请、颁发、验证、吊销等都由系统内超过半数以上的证书持有者共同决定,初步实现PKI去中心化。
系统中的区块包含区块头和区块体两个部分,其中区块头中记录着生成本区块的时戳、上一区块的哈希值、默克尔树根等信息,区块体中记录着网络中每一份数字证书和与该证书相关的动作,以及动作执行之后的证书状态。在需要CA对证书用户的操作或请求做出响应时,由区块链网络中的超过半数的其他证书用户应用共识机制批准或禁止系统做出响应。本文提出的构想与传统PKI系统处理证书流程相似,涉及证书申请、签发、验证、撤销的过程。
证书申请:用户自己生成公私钥对,私钥由用户秘密保存,然后向区块链网络提交需要申请数字证书的消息,该消息中包括用户的公钥和验证个人身份的信息。
证书签发:新用户的证书申请消息将被网络中的所有证书用户收到,之后网络中的合法证书用户会根据新用户提交的信息验证其身份的真实性;验证通过则用自己的私钥对新用户的身份信息和公钥进行签名,生成一份数字证书。然后将当前还没添加到区块的合法证书以及证书状态作为区块体中的数据记录,打包生成一个新区块,并采用POW工作量证明来确定谁有权发布该区块,将其添加在网络中最长的区块链条上;其他证书用户接收到新区块后,就会停止对该消息的处理,转而验证新区块中记录的正确性,如果正确,那么将该区块下载到本地。其本质上是将证书记录到区块链的过程。
证书验证:当应用程序需要验证用户的身份时,证书用户则应将证书提交给应用,应用首先查看用户提交的数字证书的序列号和有效期,检查如果出现错误,则向用户返回证书验证失败的消息,并禁止该用户访问应用,如果没有问题,再向区块链网络提交证书查询请求,请求中包含要查询的证书信息;区块链中的节点向应用返回该证书目前的状态信息。
证书撤销:证书用户提出证书撤销请求,其中包括用户的证书以及可以证实用户身份的信息;网络中所有用户均能收到用户的证书吊销请求,并根据用户提交的信息验证用户身份,审核证书撤销请求通过后,修改该用户所对应证书的状态信息并生成一个新区块;之后的操作与证书签发过程一致。
三、方案可行性
本文利用区块链去中心化、不可篡改以及分布式存储处理数据等特点,将区块链技术融入传统的PKI系统中,提出了一种新的证书处理方法。该方法继承了区块链自身的一些优点,并且只需要对现存的PKI系统做出简单的改变,即可在一定程度上缓解或解决上述问题。
首先,采用基于区块链技术的分布式证书处理方法,对于中心失效和性能瓶颈问题做出有效应对。传统PKI的核心——CA机构被网络中所有证书持有者所取代,因此不存在中心节点,整个系统的安全性不会因为一个甚至多个用户出现故障或遭受攻击而受到影响,且随着网络中合法证书用户的增多,该系统的处理速度和性能会不断提高,解决了传统PKI系统中的中心节点性能瓶颈问题。
其次,取消了CA中心节点,使系统结构由树状转变为网状,节点间不存在上下级关系。各节点的安全性不再取决于某一节点的信息安全程度,而是依赖于网络中每个用户存储的区块链中的信息和大家达成的共识,这个共识是所有合法用户公认的,因此消除了根CA不可信以及树状结构维护成本高的问题。
最后,改变了证书签发与配置逻辑。在传统的PKI体系中,CA是唯一具备证书发布资质的节点,各用户只能使用证书而不能制作证书,但在本方案中,区块链网络中的任意合法证书用户都能给新用户生成证书,并经区块链系统发布出去。这有利于在某些特殊应用场景下批量生成和配置证书,提高工作效率。
四、结语
本文对现有PKI系统存在的问题和缺陷做了总结分析,结合新兴的区块链技术,在原有基础上对传统PKI进行创新,改变了数字证书的处理方式,一定程度上解决了现有的问题,并降低了PKI技术的应用门槛,提高了用户的使用体验,同时也降低了向第三方CA申请证书的费用,降低建设、维护管理系统的成本,为未来数字信用社会的普及做出贡献。