摘 要
公 钥 基 础 设 施(Public Key Infrastructure,PKI)技术是应对网络信息安全的一项关键技术,其利用数字证书实现了身份认证和信息传输的不可抵赖性。作为一项普适性的安全基础设施,PKI 技术体系经过多年发展已经日趋成熟并在信息安全领域得到广泛应用。
然而,传统集中式的 PKI 技术,利用第三方权威可信的证书管理(Certificate Authority,CA)中心进行数字证书的发布与认证,其 CA中心权限过高,证书的管理操作完全依赖于可信的第三方机构。PKI 的安全性是基于数字证书的完全可信性,一旦 CA 中心被攻击且颁发错误证书,将给整个 PKI 体系运行带来不可估量的风险。目前,因 CA 中心被攻击而造成的安全事件也频繁发生,提高 PKI 系统的安全性迫在眉睫。
同时,随着数字证书应用背景的变化,集中式的数字证书系统暴露出许多问题。传统的PKI/CA 技术依赖于集中式的证书发布目录和黑名单目录,在分布式大数据和物联网背景下,数字证书发布和认证的数量将迎来爆发式的增长,现有的集中式管理方式不能满足业务需求,且维护成本较高。
在政策、技术、市场因素的共同驱动下,产生了一种新的数字身份形态——分布式数字身份,分布式基础设施改变了权威第三方控制数字身份的模式,让用户自主控制和管理数字身份,减少对受信任中介的依赖性。作为分布式体系中的代表技术,区块链技术 成为分布式数字身份的技术基础,采用哈希链的数据结构改变了电子数据易被篡改的问题,利用“区块 + 共识算法”解决了分布式系统的数据不一致性问题,拜占庭容错能力保证跨实体运行系统不受少数节点恶意行为的影响,从而在降低信任风险的同时有效降低了参与协作的维护成本。
本文提出一种基于联盟链的分布式数字证书管理系统,将区块链作为 PKI 的完整性保护的“公告板”来支持数字证书的发布、更新、认证和废除,多个 CA 中心和政府管理部门作为联盟链的记账节点,共同管理一个分布式、难以篡改的公开证书账本,并支持实时的证书状态查询和证书有效性认证,具有全网公开可访问、可信验证、操作成本低廉等优势,数字证书全生命周期管理支持政府管理部门的监督和审核,极大地提升了证书管理的透明性、权威性和防伪造性。
1 基础知识
1.1 Fabric 联盟链技术
2008 年,中本聪提出了一个分布式、去中心化的公共账本,该技术最初是用于加密货币交易的金融应用程序,随着该技术的成熟和发展,区块链技术的特性为传统系统提供了分布式解决方案。通过点对点通信网络,区块链能够消除第三方授权的需求,避免了单点故障和中心权威的问题。通过共识机制可以在一个不可信的环境下实现数据的可信交易,区块链网络中的每个节点存储一个分布式账本,采用链式的数据结构,使得攻击者无法攻击区块链网络,从而保证数据安全。
Fabric 项目 是 Hyperledger 区块链社区的一个分支,与其他的区块链网络不同,Fabric 设有准入机制,各联盟节点得到准许后才能加入。此外,Fabric 具有以下优势:
(1)交易速度快。不同类型的区块链网络采用不同类型的共识机制,共识机制的选择非常影响交易的速度,如比特币和以太坊这种公有链,网络的交易需要由所有节点参与,这无疑大大降低了交易的速度。Fabric 项目通过准入机制仅允许部分节点参与交易达成共识,这显著提升了交易速度,且提供配置文件可自定义的出块速度。
(2) 数 据 默 认 不 公 开。Fabric 通 道 机 制可以保证数据的安全读取,维护区块链网络,Fabric 链 上 数 据 只 有 加 入 通 道 的 节 点 才 可 以访问。
(3)部分去中心化。Fabric 属于联盟链,将集中式的权威中心转化为多个联盟节点达成共识协议,既避免了单点故障问题,又通过准入机制限制了参与记账节点。由于参与联盟链的成员是设限的,因此 Fabric 更容易达成共识,数据上链效率更高且更有利于监管。
1.2 RSA 动态累加器
密码累加器能够将集合中的所有元素进行累加,并高效地给出任意元素的成员证明,即该元素是否存在于集合中。密码累加器主要分为静态累加器、动态累加器和通用累加器 3 种类型,其中,静态累加器针对静态集合中元素的累加,动态累加器允许从累加集合中动态地添加和删除元素,通用累加器能够同时支持成员证明和非成员证明。
1993 年,Benalon 等 人 首 次 提 出 RSA 动态累加器,Camenisch 等人 提出第一个 RSA动态累加器方案,允许向累加器动态地添加或删除值,并支持成员证人的公开更新。Li 等人 在 Camenisch 等人的方案中加入了对非成员证人的支持,提出了通用的 RSA 动态累加器方案,支持非成员证人的公开更新。
然而,以上 RSA 动态累加器方案在进行值的添加和删除操作时,需要依赖密钥完成累加值的公开更新,使得更新的过程与累计集合中的元素无关。当没有密钥的情况下,累加值的更新需要重新对更新后的集合进行运算,当累计集合中的元素过于庞大时,每次更新集合后重新计算累加值会产生大量的计算开销。
在区块链系统中,由于构成区块链网络的所有节点是分布式且互不可信的,因此累加器的密钥 不能被泄露,成员证人只能进行逐一验证,无法进行批量验证。采用适用于区块链的 RSA 动态累加器算法结构 ,在不使用密钥的情况下,使用公开参数完成累加器的公开批量更新,同时提供成员证人的聚合算法,使得一批数量为 n 的证人的验证次数从降低为
1.3 Kademila 分布式哈希表
在 基 于 分 布 式 哈 希 表(Distributed Hash Table,DHT)的点对点(Peer to Peer,P2P)网络中,资源的关键字通过哈希计算得到要查找的 key 值,P2P 系统中的每个节点都负责管理一部分哈希空间,它负责保存某段范围的 key值。每个节点存储一张 <key,value> 分布式哈希表 DHT,key 对应着 KeyID,value 对应着所在节点的通信信息,如 IP、端口号等信息。当开始搜索某个资源时,先用哈希函数计算出需要搜索资源的 key 值,然后通过自身的 DHT,在P2P 网络中找到与之匹配的 key 值存储的节点,返回这个节点后标识符给出需要查询节点的通信信息,通常这个过程也是一个迭代的过程,大多数情况下,需要在网络中迭代很多次才能找到相应的节点,最后与之建立连接,取得资源。DHT 就是为了解决在非结构化分布式网络中查找资源的盲目性的问题而引入的。
Kademlia 是一种通过点对点分布式哈希表 DHT 协议算法,由 Petar 和 David 在 2002 年为 P2P 网络而设计。Kademlia 算法中资源通过哈希函数计算出 key 值和 value 值,同时存储在离 key 值本身较近的多台机器上,value 值就是该资源存放的机器通信信息。当 P2P 网络中某个机器查找需要的资源时,先用哈希函数计算出该资源的标识符并称为 key 值,通过 DHT算法提供的接口,查找到该 key 值,通过递归的查找过程,最终能查找到负责存储该 key 值的机器,再与之通信,就能够得到该 key 值的value 值,而通过 value 值可以得到该资源存储在哪台机器上,并直接与机器建立连接就可以下载到该资源。
Kademlia 是一个基于 XOR 异或的 DHT 算法,用异或来标识符的距离并进行量化,再根据距离组织一个 K 桶的链表作为路由表。使用 160位的哈希算法(如 SHA1),每个 Kademlia 节点都有一个 160 位的节点 ID,并提供一种查找算法,该算法将“更近”的节点连续定位到任何所需的 ID,以对数级的步数快速收敛到查找目标。Kademlia 有效地将节点视为二叉树中的叶子,每个节点的位置由其 ID 的最短唯一前缀确定。Kademila 算法的查找效率较高,其存储基于查找算法,份数由用户定义,但其算法的维护复杂度也较高。
2 系统设计
图 1 系统架构
2.1 客户端
客户端首先通过指纹识别、PIN 码等多种登录方式进行用户身份认证,并注册用户信息。注册完成后,客户端向系统提交用户关于证书签发、更新、废除、认证的请求,并将用户的证书、加密密钥对 和累加证据值存储在数字钱包中。
2.2 证书管理中心
证书管理中心是数字证书管理系统的核心,提供证书签发和管理功能,代表客户端向密钥管理中心发出密钥产生、更新和恢复请求,为用户签发证书。CA 中心作为联盟链网络各组织的主节点和背书节点,负责验证证书发布提案的合法性、证书账本的状态更新,多家 CA 中心共同维护一份证书账本,即证书一旦发布至联盟链上,其合法性已得到参与 CA 中心的认可。为实现“证书互联互通”提供一个具有开放性且不可篡改的数据平台,利用技术手段解决中心化模式下证书发布目录和黑名单目录数据不一致、异步无法校验、数据易篡改等问题,在降低信任风险的同时有效降低了参与方协作的维护成本。
2.3 密钥管理中心
密钥管理(Key Management,KM)中心主要负责密钥的管理,包括密钥的产生、分发、更新、备份 / 恢复、归档、销毁等流程的管理。在基于联盟链的数字证书认证系统中,密钥管理中心负责为用户生成加密密钥对,并采用数字信封的方式将该密钥对发送到客户端。加密密钥对既可以用于加密通信的传输,也可以用于签名密钥对的更新和废除。
密钥证书管理中心采用 1 024 位或 2 048 位RSA 密钥长度,由于密钥管理系统需要与客户端进行通信,在通信的过程中应该是安全的,因此密钥管理中心采用了基于简单公钥机制安全通信协议 SPKM 与客户端进行数据通信。
2.4 联盟链
采用轻量级的证书上链模式,将证书状态元组包含的用户身份、状态、密钥类型、签名值、累加证据值形成交易单发布在联盟链上,利用 K-V(Key-Value)数据库将完整的证书存储在本地数据库中。轻量级的证书上链模式既满足了证书使用过程中的功能需求,又极大地提高了联盟链的使用性能。
采用多链并行共识的机制,由于联盟链分布式的特性需要共识机制保持系统的有效运行,共识过程意味着多个参与主节点对上链数据的发生顺序、合法性以及账本状态达成一致。多家 CA 中心作为联盟链网络各组织的主节点和背书节点,负责证书上链操作的背书和账本状态的更新,本质上 CA 中心是证书发布平台的主要操控者。国家管理部门作为系统的超级节点,支持证书全生命周期的管理和监控,在发挥联盟链技术开放特性的前提下,支持国家管理部门的有效控制和监督。
此外,整个排序服务由 Kafka 集群、Orderer排序服务节点提供,为各参与主节点提供可订阅的主题。每个主题是一个通道,每个通道包含一个行业的证书。订阅该通道的参与主节点可接收到对应的区块,每个参与主节点可根据管理策略订阅一个或多个通道,并只能访问订阅通道上的交易。这种方式使得联盟链发布的证书支持各行业通用的功能,即“一证通用”,又满足各行业证书有效的数据分离和监管,打破证书使用的行业壁垒,减轻 CA 中心管理负担,降低证书使用的企业成本,使联盟链技术的优势得到充分发挥。
2.5 累加器 DHT表
比特币联盟链上的数据呈线性增长,大约为 0.1353 GB/ 天,若根据该增长率估算,比特币联盟链的数据(不包括数据索引)将达到大约 6 TB。随着数据量的增加,客户端进行证书认证和搜索的负担随之增加,同步整个证书账本的成本也越来越高,成为影响证书上链的一个重要技术壁垒。
采用 RSA 动态累加器和 Kademila 分布式哈希表实现对区块证书的快速验证和搜索,其原理是当发布证书形成一个新的区块时,将证书的公钥 pk 作为唯一标识符,将其加入累加器中,返回对应的累加证据值ω ,并将累加器的状态元组包含的用户身份、公钥、累加证据值、区块高度存储至分布式哈希表 DHT 中。
当客户端进行证书认证时,提交用户身份、公钥和证据值进行验证,首先确认添加的公钥是否属于集合中的元素,若累加证据值验证为成员证人,则表示该证书已发布至联盟链上;若累加证据值验证为非成员证人,则表示该证书未发布在联盟链上,直接终止证书搜索。若证书确实在链上,则调用 Kademila 算法的分布式哈希表,通过哈希函数计算出 key 值和 value 值,计算目标区块的逻辑距离,并返回对应的区块高度bid ,即可快速找出证书存储的区块位置。
3 流程设计
用户在客户端利用指纹识别、PIN 码、动态短信等多种认证方式进行身份注册,一旦身份认证通过,每个用户分配一个联盟链钱包。联盟链钱包负责保存用户证书、加密密钥对签名密钥对和累加证据值ω 。
(1)签名密钥对用于身份认证利用签名算法对用户的身份和公钥进行绑定。
(2)加密密钥对用于加密通信,同时在签名密钥安全受到威胁时可用于签发新的密钥和废除旧的密钥,并存储在安全的联盟链钱包中。
3.2 证书发布
用户本地生成签名密钥对证书管理 CA 中心向密钥管理 KM 中心提交用户身份id 和签名公钥申请加密密钥对,KM 中心利用硬件加密机生成加密密钥对通过数字信封的加密方式传输至客户端安全保存。CA 中心向联盟链提交证书发布申请形成证书发布交易单,调用智能合约,证书注册流程具体操作如图 2 所示。
图 2 证书注册流程
(1)遍历累加器分布式哈希表验证用户在链上是否有对应的公钥和区块。
(2)若该用户身份未注册过,验证证书发布操作是否为用户本人发起的,使用签名算法进行验证
(3)若验证通过,智能合约调用累加新成员算法计算出身份添加到累加器生成的新证据和状态值;若验证不通过,则丢弃该证书发布交易单。
(4)参与 CA 中心对该交易进行背书,将数字证书和证书状态元组排序上链,一旦证书发布在联盟链上,则表示该证书签发成功。其中 id 为用户身份;register为证书处于注册状态;keytype 为密钥类型,包括签名密钥和加密密钥;values 为利用签名算法对用户身份和公钥进行绑定;ω为证书公钥对应累加器中的证据值。
3.3 证书更新
若 用 户 的 签 名 证 书 遭 遇 安 全 威 胁, 用 户可以进行证书更新操作,其本质是对签名公钥进行更新并签发新的证书。证书更新流程具体操作如图 3 所示。
图 3 证书更新流程
(1)首先客户端本地生成新的签名密钥并利用本地保存的加密密钥对对新签名密钥对进行更新操作。利用旧私钥对新公钥和用户身份id进行签名并利用新私钥对用户身份id 进行签名
(2)CA 中心利用签名验签算法对更新的操作和身份进行验证,首先对证书更新的身份进行验证验证新密钥的身份是否为用户原身份
(3)若验证通过,CA 中心提交证书更新请求生成对应交易单,智能合约调用累加器分布式哈希 DHT 表。首先验证该身份是否已在链上注册,若已注册,则再进行新公钥的累加更新累加证据值和累加器状态
(4)CA 中 心 对 证 书 更 新 交 易 单 进 行 背书操作,并将更新证书和新的证书状态元组排序上链,则签发更新证书操作完成。
3.4 证书认证
比特币联盟链上的数据呈线性增长,随着数据量的增加,客户端进行证书认证和搜索的负担也随之增加,同步整个证书账本的成本也越来越高,成为影响证书上链的一个重要技术壁垒。本系统采用 RSA 动态累加器和 Kademila分布式哈希表,在无须遍历整条联盟链的前提下,将证书公钥 pk 作为唯一标识符,实现对数字证书的快速认证。证书认证流程具体操作如图 4 所示。
图 4 证书认证流程
(1)客户端提出证书认证请求,提交用户身份、签名公钥和累加证据值 发送至 RSA 动态累加器,利用证书公钥 pk 进行成员证人或非成员证人的验证,调用累加器验证算法
(2)若验证通过,遍历 Kademila 分布式哈希表找出对应的累加器状态元组利用证书公钥 pk 对应找出用户 id,查询证书状态元组路由表,计算节点和区块的逻辑距离,快速遍历出区块高度 bid,若展示对应的区块证书,则证书认证操作完成。
3.5 证书废除
在联盟链技术中,一旦证书上传至链上,则永久保持无法删除,因此在该系统中证书废除是利用更新证书状态元组组的方式完成废除功能。证书废除流程具体操作如图 5 所示。
图 5 证书废除流程
(1)客户端申请证书废除,提交用户身份、签名公钥、累加证据值和本次操作的签名 发送至 CA 中心。
(2)CA中心通过签名验签验证该证书废除操作是否为本人发起。若验证通过,则提交证书废除申请至联盟链生成对应交易单。
(3)遍历分布式哈希表找出对应的累加器状态元组调用累加器验证算法
(4)若验证通过,则证明该公钥已在链上发布, 通 过 调 用 累 加 器 证 据 删 除 算 法在累加器中删除该公钥的累加值并更新累加器状态为
(5)CA 中心对证书废除交易单进行背书,将新的证书状态元组排序上链,后续进行证书使用时,若遍历到证书状态则表明该证书已被废除。
4 结 语
区块链通过充当 PKI 的受完整性保护的“公告板”来支持密钥和证书的查询,在大多数情况下,基于 PKI 的“公告板”形成的证书认证系统,既可以验证证书,也依赖于区块链实现流转、验证。基于联盟链的分布式数字证书系统具有以下优势。
(1)可公开访问。此分布式账本是公共可访问的,因此任何人都可以在没有中介的情况下使用它。通过在尽可能广泛的范围里部署分散节点网络,实现即使一个或多个节点关闭或无法运行,人们仍可以随时访问该网络。
(2)可信验证。分布式账本的每个节点都运行分布式数字身份账本,分布式账本能够生成状态证明,客户端可以使用状态证明来了解分类账本的状态,而不必下载和访问整个分类账本。此外,联盟链由政府、机构、用户等多类型节点组成,有利于证书的使用和监管,提高可靠性和可信赖性。
(3)操作成本低廉。考虑到作为分布式数字身份需要成为广泛可用的基础设施,账本上的交易验证及账本访问应该是成本低廉的,以覆盖更广泛的网络受众。
引用格式:唐敏璐 , 孟茹 . 基于联盟链的分布式数字证书管理系统 [J]. 信息安全与通信保密 ,2022(9):91-100.
商务合作 | 开白转载 | 媒体交流 | 理事服务
请联系:15710013727(微信同号)
《信息安全与通信保密》杂志投稿
联系电话:13391516229(微信同号)
《通信技术》杂志投稿
联系电话:15198220331(微信同号)
还没有评论,来说两句吧...