马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
作者:微信文章
原创 亚洲金融合作协会 亚洲金融合作协会 2025年02月28日 16:44 北京

第八章 新一代商业金融联盟链的组成和分布式证书管理解决方案
第一节 链上、链下数据协同技术是联盟链发展重要方向
联盟链兼顾了公有链的去中心、私有链的高效,同时它对监管友好,是目前中国最具实际应用前景的技术。在产业化应用方面,不仅仅局限在金融领域,在金融行业、法律、医疗、能源、娱乐、公益等领域都有应用。这与国外有所区别,西方区块链的发展基本上是基于金融创新带动别的行业的创新,而中国除了金融创新外,更重要的是在各个行业的应用。
1、链上链下数据协同技术:传统信息系统与区块链系统各有一定的局限性,一方面,区块链系统需要通过链下系统扩展计算和存储能力;另一方面,现有系统(链下)需要与区块链系统对接以解决信息孤岛、防篡改等问题,这就要求链上链下数据能够有效协同,以确保链上链下数据的关联性与一致性。
目前国内外对于链上链下数据协同相关的技术研究包括:
(1)侧链和状态通道:为了提高性能和计算能力;
(2)跨链技术:为了增加链与链之间互操作性和可扩展性;
(3)链下计算:提高数据的隐私保护能力;
(4)链下存储:提高数据的存储能力。
图10:联盟链技术协同关联性与一致性
针对目前的发展现状,在链上链下数据协同技术方面,已经有了一些初步成果,可以提供国产、自主、可控,完善的中国国密算法支持,提供系统的链上链下协同服务技术。包括:大规模可信存储、集群节点数量可达数万节点;支持智能合约跨链互操作的通用跨链服务;“数据可用不可见”的数据共享等等。
2、诸多应用场景落地
(1)在供应链金融领域,供应链存在上游和下游多个参与方,其中上游存在多级供应商,下游存在多级经销商,通过联盟链让他们可以基于底层联盟链网进行信息共享、信任背书,实现更低成本、更高效的融资,从而实现供应链金融区块链核心价值;
(2)在存证溯源场景,通过联盟链实现的是存证或商品从产生到中间经过各阶段流程,再到最终受众的全流程溯源,这个过程中产品溯源信息具有链上不可篡改的特性;
(3)在资产证券化场景,整体资产证券化流程涉及多个阶段,各个阶段又有多个参与方,同一阶段内的参与方具有资产信息、流程信息共享的需求,不同阶段间的数据信息又有隔离的需求,联盟链的多通道正是解决这一场景痛点的最佳解决方案;
(4)在企业级新数据协作与共享场景,特定领域的相关数据具有高度敏感性同时又有多方数据协作的场景。联盟准入保证经鉴权验证的数据协作方才能进入联盟,而多通道隔离保证只有数据协作方接触相关敏感数据。
总的来说,联盟链同时支持细粒度的跨网络多形态联盟组网与链上数据协作,让用户可以把最领先的云端技术和区块链技术一起应用到自身业务中,实现1+1>2的效果,加速区块链在各行业的落地应用,为企业业务创新带来新机遇。
第二节 联盟链平台共识算法详解
共识算法是区块链技术的核心要素之一,主要解决分布式系统中多个节点之间对某个状态达成一致性结果的问题。
1、共识协议相关术语:
提议人(Proposer):共识协议中负责出块的节点
T:时间窗口,每个提议人只能在自己的时间窗口进行出块。
N:共识节点总数
F:拜占庭节点最大数量
足够多赞成票:表示为至少收到N-f张赞成票
验证人(Validator):共识节点中非提议人节点
视图(View):当前提议人的时间窗口可以产生区块的时间范围
ViewNumber:每个时间窗口的序号,随着时间窗口递增。
HighestQCBlock:本地最高的N-f个PrepareVote区块
ProposalIndex:提议人的索引号
ValidatorIndex:验证人的索引号
PrepareBlock:提议的区块消息,主要包含区块(Block),提议人索引号。
PrepareVote:验证人对提议区块的Prepare投票,每个验证人需要执行区块后才发送PrepareVote。主要包含ViewNumber,区块hash,区块高度,验证人索引号(ValidatorIndex)。
ViewChange:当时间窗口超时,提议人的区块没有都收集N-f个PrepareVote,则会向下一个提议人发送ViewChange。ViewChange包含提议人索引号(ValidatorIndex),最高确认区块(HighestQCBlock)。
锁(Lock):对指定块高进行锁定
Timeout:超时(时间窗口到期可以看作提议人的超时时间)
法定:最大被允许
同一个View:两个View的ViewNumber相等,可以成为同一个View。
BLS签名:目前业界采用的聚合签名方案主要是BLS聚合签名。BLS聚合签名是在BLS签名方案基础上的扩展方案。BLS签名目前在许多区块链项目如Dfinity、Filecoin、Libra中都得到了运用。BLS聚合签名可以把多个签名简化为1个聚合签名,对于提高BFT共识协议中的通信效率至关重要。
2、Giskard共识协议流程
(1)正常流程:
图11:正常流程图
提议人在成功进入到新的View后,会连续产生多个区块。将消息:PrepareBlock<ViewNumber,ProposalIndex, Block>广播给验证人。
逐个验证区块:验证人校验签名和时间窗口,执行区块,成功后产生PrepareVote<ViewNumber,BlockHash, BlockNumber>。当PrepareVote对应的父区块收集到N-f个PrepareVote时,使用BLS将N-f个PrepareVote的个体签名聚合成一个聚合签名,并将当前PrepareVote进行广播。我们将N-f个PrepareVote简化为prepareQC(quorum certificate) 。当节点在当前view内最后一个区块收到prepareQC,则会进入新的view开始下一轮投票。
为了更安全的投票,投票必须符合以下规则:区块执行后才能进行投票,诚实的节点只能对当前View提议的区块进行投票,
诚实的节点当View超时后不能再进行投票,也不接收当前View的投票,在同一个View内,相同高度的两个区块只能投其中一个,当对Block(n+1)进行投票时,Block(n)需达到prepareQC
(2) ViewChange流程:
图12:时间窗口出块完成时切换窗口
图13:时间窗口出块未完成但过期时切换窗口
图14:viewchange投票流程
假设每个时间窗口最多允许产生n个区块,viewchange流程如下:
如果在时间窗口内,收到第n块的prepareQC,则更新本地view+1,进入新的正常流程,这种情况下如果是新提议人达成n的QC,则开始广播第一个区块,高度为BlockNumber(n)+1,并会携带n区块的prepareQC。
如果时间窗口过期,节点首先会拒绝对当前提议人的区块产生新的投票,同时没有收到第n块的prepareQC,则发送ViewChange<ViewNumber, HighestQCBlock>消息。
下一个时间窗口的提议人收到N-f个ViewChange消息(我们将N-f个ViewChange消息简称为viewchangeQC )之后,使用BLS签名聚合成一个QC签名,然后更新本地ViewNumber+1,由于采用两轮投票锁定区块的规则,新提议人可以简单地从收到N-f个viewchange消息中选择HighestQCBlock,将新的区块序号定为HighestQCBlock+1,然后广播第一个区块给各验证人节点,并携带HighestQCBlock的QC签名和viewchange的QC签名。
各验证人节点会根据收到的HighestQCBlock+1序号开始新一轮共识。
(3)区块确认:在传统BFT(PBFT, Tendermint)中,每个区块通常都需要经历明确的Pre-Commit和Commit阶段才最终确认:
Pre-Commit:当节点收到N-f个Prepare投票时会广播Pre-Commit, Pre-Commit可以看作对Prepare阶段的确认。
Commit:当收到N-f个Pre-Commit投票时,表明所有节点对指定消息达成一致,提交到本地磁盘。
根据上面的介绍,Giskard共识协议中也有类似的Prepare和ViewChange两个阶段,每个区块只有Prepare投票,没有明确的Pre-Commit和Commit阶段,如何达到区块的确认,Giskard可看作Pipeline版本的BFT,每个prepareQC都是对前面区块更高阶段的确认。
图15:Giskard确认流程
如上图所示prepareQC(2)作为Block(1)的Pre-Commit阶段,prepareQC(3)作为Block(1)的Commit阶段,Block(2)的Pre-Commit阶段。
因此在Giskard中,只有两种消息类型:prepare消息和view-change消息,每个消息的QC均采用聚合签名方式验证。
(4)区块重组:假设每个view允许产生n个区块,当前view时间窗口超时,view切换到,此时产生的区块只有部分得到QC,部分区块会进行重组,重组规则如下:
Pre-Commit状态的区块被锁定,不能被重组,即如果当前节点在高度h上有Pre-Commit状态的区块,当前节点不能在高度h产生新的区块,也不能在高度h对其他区块投票。
Prepare状态的区块可以被重组,即如果当前节点在高度h上有Prepare状态的区块,当前节点可以在高度h产生新的区块,或者在高度h对其他区块投票(只允许对更高viewnumber的区块投票)。
(5)容错恢复(WAL)机制:Giskard共识协议提供了容错恢复机制,也就是WAL模块。该模块不属于严格意义上的预写日志系统,但是借鉴了相关思想,在验证人共识过程中将还未落链区块的共识状态和当前View的共识消息从内存分别持久化到本地数据库和本地文件。在系统crash或者机器掉电重启之后通过磁盘日志数据迅速恢复共识状态。
在联盟链中,共识算法犹显重要,需要考虑监管、性能、隐私、安全等多管控元素的叠加,是联盟链实现大规模商业化应用的前提。
第三节 联盟链分布式证书管理解决方案
联盟链通过多方协同共建数字经济的安全可信基础设施,证书管理机制作为联盟链系统的关键安全保障,区块链作为一种以密码技术为核心,集成了数学、计算机科学、经济学的组合式创新技术,对联盟链技术及应用发展具有非常重要的研究意义。
1、设计原则:
融合传统中心式系统“纵向管控、横向协同”的管理机制,以区块链“扁平化自管理、分布式可信协同”为原则,研究“核心把控、管理下放”的联盟链证书管理技术,证书管理设计原则如图16所示,从而实现联盟链组织机构、节点、用户证书的全生命周期及使用过程的安全管理。
图16:证书管理设计原则
(1)兼容模式:对接现有树形证书管理系统,获取联盟链系统节点及用户等主体证书;
(2)创新模式:基于证书准入机制,构建分布式协同证书授权(Certificate Authority,CA)管理体系,各组织自签组织证书,并通过组织内 CA管理系统管理组织节点和用户,有效控制资源实体的认证、授权、撤销等身份权限操作,实现联盟组织身份自治。联盟组织间通过将共享组织证书、管理员证书、撤销列表等数据上链,实现组织互信互通,组织内部的节点或用户可跨组织身份认证和授权;
(3)业务模型:基于公开密钥基础设施(Public Key Infrastructure,PKI)的证书准入机制,多信任源组织结构以证书作为互相认证身份的重要凭证,组建链上多方参与协作关系,联盟链只向授权的组织或机构开放。采用分布式CA协同管理模式,如图17所示,联盟组织可通过本地 CA系统管理本组织内部的节点和用户,通过共享组织证书、撤销列表等数据,实现组织互信互通,节点用户跨组织身份认证和授权;
图17:证书管理业务模型
2、设计方案:
联盟链证书管理将系统链与证书管理链进行融合设计,由联盟链运营组织创建,所有参与组织加入并共同维护,该链实时同步全网证书状态信息,实现联盟链成员管理、组织证书查询、节点证书撤销、全网撤销状态同步等功能。
角色定义:证书管理结构中有5种角色,分别是组织CA系统、组织、管理员、节点、客户端软件开发工具包(Software Development Kit,SDK):
①CA系统(Certificate Authority证书授权中心):证书颁发系统,负责颁发组织节点和组织成员的证书,联盟成员组织通过组织私钥签发节点证书,配置本组织的节点和SDK;
② 组织:联盟成员机构,经过联盟委员会许可,加入联盟的机构拥有组织根私钥和经过根私钥自签发的组织证书;
③ 管理员:组织管理员用户,负责组织系统的管理和运维;
④ 节点:代表一组拥有共同信任的组织证书的成员节点,拥有组织证书和经过组织根私钥签发的节点证书。同一个组织的成员节点在网络中可以被认为是同一个身份,代表组织进行签名;
⑤ SDK:代表与区块链网络交互的用户实体,必须连接到节点才可以访问区块链。客户端主要用于创建和提交交易,并且将交易打包发送给共识排序节点。
3、证书格式及结构:
(1)证书格式:方案采用分布式PKI准入模式,支持任意多级的证书结构,保障信息保密性、认证性、完整性及不可抵赖性。
证书内容包括:版本号、证书序列号、签名算法标识符、颁发者名称、有效期(此日期前无效、此日期后无效)、主体名称、主体公钥信息、颁发者唯一身份信息(可选项)、主体唯一身份信息(可选项)、扩展项(可选项)、颁发者签名。
(2)证书结构:根据现有业务场景,本系统采用两级的证书结构,自上而下分别为机构证书、节点/SDK证书。
① 机构证书:机构私钥由机构管理员持有,可以对机构下属节点签发节点证书;
② 节点/SDK证书:节点证书是节点身份的凭证,用于与其他持有合法证书的节点建立安全接层协议(Secure Socket Layer,SSL)链接,并进行加密通信;SDK证书是SDK与节点通信的凭证,机构生成SDK证书,允许SDK与节点进行通信。
(3)算法类型:支持SHA256WithRSA、SHA256WithECDSA、SM3WithSM2等多种密码算法,同时面向具体应用需求提供算法模块化替换。
4、管理流程:
分布式证书链创建:分布式证书链由联盟链的创始组织创建,后续邀请其他组织加入到证书链并共同维护,证书链组织间通过证书链共享组织证书、节点证书管理信息、撤销列表等数据,实现组织互信互通、节点用户跨组织身份认证及授权。
(1)创始组织证书生成:
① 组织证书生成:联盟链创始组织自签生成组织证书,初始化组织CA系统。组织获取组织证书org.crt,如图18所示。具体过程包括:组织管理员生成根私钥org.sk 和证书请求文件csr,并通过自签工具生成组织证书org.crt;
图18:组织证书生成
② 组织证书导入:兼容现有树形密码管理体制,组织证书由管理中心统一生成并下发。系统提供证书导入功能,如图19所示,导入证书作为组织证书,并基于组织证书实现组织内节点、用户等子级证书的签发、下载、更新、查询、验证、撤销等功能。具体过程包括:组织运维人员基于证书信息,配置 OrgCA;OrgCA 加载组织证书,并配置管理员信息;OrgCA 启动完成。
图19 组织证书导入
(2)区块链网络构建:
① 创世节点生成:生成区块链创世节点,即共识排序节点。创世节点生成过程包括节点信息注册、节点证书生成、节点证书签发。节点证书的生成过程。具体包括:基于组织证书签发排序节点证书,在节点生成目录下,会有组织证书的副本;返回排序节点证书;
② 排序服务初始化,具体过程包括:创世区块生成(排序服务创世区块包括:排序节点信息、证书信息、组织信息、组织证书、共识算法类型、区块配置信息、访问控制策略等);启动排序节点;
③ 通道配置创世区块生成,具体过程包括:基于创始组织证书信息生成通道配置区块,即通道创世区块;通道创世区块包括证书信息、组织信息、组织证书、通道配置信息、访问控制策略等;
④ 区块链网络启动,具体过程包括:创建通道是指基于通道配置创世区块创建通道;节点入网是指节点ID、节点名称、节点机构、证书序列号写入通道的创世块配置,通过创世块将新加入的节点信息同步到通道内所有节点;节点连接是指节点间连接时,需要验证所有向自己连接的节点身份及权限;
⑤ 证书链创建。基于创始组织证书生成证书链配置文件,创建证书链,如图20所示,对应的组织可加入并访问证书链。具体过程包括:组织管理员生成证书链配置交易,配置交易包括组织信息、组织证书、访问控制策略、撤销列表等;Order 节点生成证书链创世区块;Order节点创建证书管理通道;启动证书链网络。
图20:证书链创建
5、新组织加入:
证书链管理整个区块链网络的联盟组织证书信息,实现联盟成员的添加或移除。
(1)组织证书生成:组织初始化CA系统,生成组织证书,组织证书生成过程与节点证书生成过程相同。
(2)加入区块链网络,具体过程描述如下:
① 组织提交组织证书,加入请求至运营系统并完成信息审核;② 运营管理员发送配置交易至区块链网络,更新区块链配置文件,组织加入区块链网络;③ 返回组织加入结果。
(3)加入证书链:组织管理员(运营组织)生成一条证书链配置交易,配置交易包含新加入组织信息及组织证书;证书链通过增加配置区块的方式添加新组织入链,如图21所示,加入成功即可访问证书链。具体过程描述如下:①运营系统完成新加入组织的信息审核,获取组织证书;②更新链参与成员信息,并发送至证书管理链;③证书管理链增加链配置区块,增加新组织信息;④返回组织添加结果。
图21:添加新组织
6、多信任源证书签发:
基于组织证书签发二级节点/SDK证书,节点/SDK获取证书。节点的生成需要组织的参与,在节点生成目录下,会有组织证书的副本;另外,组织可以封装SDK,为客户端提供SDK支持。
(1)证书签发请求:节点/SDK证书签发请求过程如图22所示。具体描述如下:①组织管理员登记节点信息;②通过系统调用密钥管理模块接口,获取节点私钥;③基于节点信息及节点私钥,生成节点证书请求文件;④通过系统发送节点证书请求文件至OrgCA,请求签发证书;⑤OrgCA对证书序列号进行唯一性鉴别;⑥鉴别通过,读取节点 ID、证书序列号,准备发布上链。
图22:节点 /SDK 证书签发请求
(2)节点证书上链:联盟链参与组织将组织内所有节点证书信息发布上链,如图23所示,获取链上标识 TxID。具体过程描述如下:①组织管理员通过证书链准入验证后,访问证书链;②发送证书发布请求,请求包括主体 ID、证书序列号、所属组织等信息;③证书链对发布证书进行唯一性鉴别,鉴别通过后写入证书链;④返回证书发布结果及链上标识 TxID。
图23:节点证书上链
(3)节点证书签发:节点证书签发如图24所示。具体过程描述如下:① OrgCA将链上标识TxID添加至证书请求文件的扩展字段;② OrgCA使用组织根私钥对证书请求文件进行签名,生成并颁发证书。
图24:节点证书签发
7、节点证书撤销:
(1)撤销请求登记:撤销请求登记过程如图25所示。具体描述如下:①组织管理员进入组织管理系统,访问证书管理模块;②选取目标证书,通过系统发送证书撤销请求给OrgCA;③ OrgCA登记证书撤销请求(不做实际撤销处理);
图25:撤销请求登记
(2)证书链上撤销:联盟链各参与组织将各自在该阶段内登记的待撤销证书信息上链。证书链上撤销过程如图26所示。具体描述如下:
① OrgCA为待撤销证书生成证书撤销请求文件,撤销请求文件包括证书序列号、证书主体、证书签发机构、节点加入通道信息及各通道当前的出块信息、撤销时间等;② OrgCA发送证书撤销文件至证书管理链;③证书管理链更新链上撤销列表;④返回上链结果;
图26:证书链上撤销
(3)应用链上撤销:应用链上撤销过程如图27所示。具体描述如下:①管理员查询撤销节点当前所在的应用通道;②将节点证书撤销消息推送至所有应用链;③应用链生成配置交易,更新应用链配置区块,撤销节点证书。
图27:应用链上撤销
8、证书查询验证:
节点证书验证过程如图28所示,具体描述如下:①发送目标证书至OrgCA,发起证书验证请求;②根据证书签发的有效期,以及当前的系统时间对证书进行检测,根据证书撤销列表,验证证书的有效性;③查询链上组织证书,基于组织证书验证节点/SDK证书的可信性;④根据证书规定的密码套件和其消息字段,对证书的完整性进行验证。
图28:节点证书验证
9、联盟链分布式证书管理方案的优势:
(1)联盟链分布式证书管理机制提供多信任源证书的签发和协同管理,避免了传统中心式CA单一信任源存在的风险,并基于智能合约和共识机制实现跨组织、跨信任源的密码资源管理与状态同步,为推动联盟链应用发展提供核心基础理论和技术支撑,提升联盟链密码服务能力,可为各类区块链系统及应用提供安全管理保障。
(2)对于具有灵活扩展性的联盟链网络,节点可动态加入或退出。新加入网络的节点需要同步链所有区块,并对所有区块交易进行验证,而在本方法设计的全网撤销状态同步机制中,链上撤销列表包含每一个撤销证书的证书序列号、证书主体、证书签发机构、节点撤销前加入通道信息及各通道的出块信息、撤销日期,有效保障每一笔历史交易的正确验证。
证书管理技术作为联盟链的重要安全保障,对联盟链技术及区块链应用发展具有重要的研究意义。
(课题牵头单位:中国商业联合会数字商业桥项目研究课题组 )
摘自:亚洲金融合作协会2024年度研究报告汇编
【往期回顾】
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(一)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(二)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(三)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(四)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(五)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(六)
“一带一路”金融服务业务支撑系统与“联盟链”建设研究(七) |