一种基于区块链的多应用证书系统模型

2020-09-18 00:23刘亚雪杨小宝惠小强
计算机工程 2020年9期
关键词:合约分布式证书

刘亚雪,杨小宝,刘 圆,惠小强

(1.西安邮电大学 电子工程学院,西安 710121; 2.西安邮电大学 物联网与两化融合研究院,西安 710061)

0 概述

随着新型智慧城市时代的到来,集约融合系统引起了广泛关注,跨领域操作、多应用设备逐渐成为一种新的发展趋势[1]。集成的多应用证书系统可统一管理多个行业的身份证书,减少多个单一系统的重复建设和不必要的投资,从而更好地发挥资源价值。当前通用的证书管理系统是基于认证机构(Certification Authority,CA)的公钥基础设施(Public Key Infrastructure,PKI)体系[2]。从一些案例可以看出,由于PKI将信任极度集中于可信中心CA,导致其存在单点故障等安全性缺陷[3],若在PKI体系中建立多领域或应用中的多份信任,这种问题会被成倍放大,从而导致严重的系统性风险。

针对PKI的单点故障问题,研究人员提出了一些解决方案,其中包括基于日志的PKI方法与信任网络方法。在基于日志的PKI方法中,CA发布的证书由公共日志服务器监控,任何不端行为都能被检测到,但该方法仍依赖于中心化服务器,且无法进行证书撤销[4]。在信任网络方法中,系统中所有用户的信任关系构成信任网络,用户通过签发他们的公钥证书来指定某人是可信的,这是一种完全分散的方案,虽然解决了中心化难题,但是新用户很难加入,且其通过指定用户为撤销者来撤销证书的处理方式容易使无效证书受到信任[3]。

作为一种新兴的分布式方案,区块链技术的应用范围目前已扩展到金融、物联网和安全等领域[5]。区块链技术本身的分散性能够解决PKI固有的单点故障等问题,利用块链式结构存储和验证数据,通过共识机制生成和更新数据[6],使数据能被用于构建分布式PKI系统,从而实现相应功能。近年来,学者们通过比特币的一种“命名-存储”方式将用户的密钥和身份绑定到区块链,实现分布式的PKI认证。以Certcoin[7]、Authcoin[8]、Blockstack[9]和Cecoin[10]为代表的方案已经被成功实施,但这些方案仍存在一定缺陷,如不能阻止非法占用用户,无法设置更多属性等。另外,一些研究人员试图利用以太坊区块链的智能合约来实现PKI功能。文献[11]提出一种由智能合约控制的分散式系统SCPKI,利用智能合约绑定用户的身份和标识,发布用户希望公开的更多属性。文献[12]设计并开发一个托管在以太坊区块链上的PKI系统,通过智能合约控制CA的属性和标识,该框架缓解了证书撤销和CA行为不端的问题。但是,上述2种方案仍然保留了中心化的认证服务器或CA,单点故障问题依然存在。

通过分析近年来的研究成果可以看出,完全分散的PKI方案无法进行更多领域的操作,保留了认证中心的改进PKI结构仍存在中心化等固有问题。本文针对跨行业的资源整合问题,提出一种基于区块链的多应用证书系统模型BMCS,利用区块链去中心化、分布式的特性以及智能合约分布式应用、易编程的特点,代替传统PKI证书系统,从而实现多行业身份证书的综合管理。

1 预备知识

1.1 PKI系统

PKI是一种使用公钥密码技术建立的安全基础设施,通过定义数字证书颁发、验证、更新和撤销所需的策略和过程,提供一种网络中安全验证身份的方法[3]。公钥PKI管理通常基于X.509v3证书标准[2],该标准提供了一些外部实体(证书认证机构)对私有密钥所有权的验证,通过在证书中绑定用户的身份与公钥建立所有权,证书由PKI的核心组件CA用其私钥进行签名。CA签发的证书由PKI中多个组件协同管理,典型PKI系统由签发证书的可信中心CA、存储证书列表的证书存储库(Certificate Repository,CR)、存储撤销证书列表的证书撤销库(Certificate Revoke Repository,CRL)、查询证书的目录服务器轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)和在线证书状态协议(Online Certificate Status Protocol,OCSP)等组件组成[13],PKI的功能结构如图1所示。

图1 PKI的功能结构

一个PKI体系中存在多个CA,它们之间通过证书建立信任关系,信任模型[14]是PKI创建和管理不同CA之间信任关系的框架,其原理如图2所示。

图2 PKI信任模型

单个行业内所有CA均组成树状结构且信任同一根CA,信任的建立是通过根CA或根CA认可的下级CA签发CA证书给其他CA来实现的,CA证书是CA身份受信任的证明,它包含其他CA的公钥和身份以及上级CA的签名。证书验证过程路径的寻找和遍历依赖于信任模型,因此,PKI对用户证书的验证从信任模型的根CA公钥开始,到获得通信对方的可靠公钥时结束。该验证方式将最多的信任集中于根CA,导致根CA成为单一信任点,如果其私钥受到攻击,则整个系统都会面临风险。在多行业内,所有CA组成多个树结构,如果使用代理的方式将多个行业的证书系统建立在PKI-CA体系中,风险会提高,因为除了根CA,代理CA也成了单一故障点。在这种多应用PKI证书系统中,根CA受到攻击时会威胁到每个CA,而代理CA受到攻击时会威胁到每个行业。

1.2 区块链技术

区块链技术最早由NAKAMOTO于2008年提出[15],它是以链表形式维护的一组称为“块”的文件。组成链的每个块中都记录着前一个块的散列和一组按时间顺序排列的事务数据,分散对等节点(矿工)组成的网络能够维护这些数据,并利用共识机制竞争记账权,最终执行并记录相同的事务。区块链的本质是一个无第三方中心控制、由多方节点共同维护的分布式基础架构,因此,其能避免单点故障问题[16]。区块链技术的相关概念如下:

1)区块链网络。区块链使用的点对点(Peer to Peer lending,P2P)是一个分布式的应用程序架构[17],其本质是一个去中心、防篡改的网络,其中所有节点都具有同等的权限和义务,以相同的方式参与交易的审核,且审核者身份不可抵赖。区块链网络的去中心化和防篡改性由共识机制和区块链副本来保证。

2)事务。事务是一种由输入、输出和数字签名3个部分组成的数据结构,在一段时间内,其以Merkle树结构[18]的形式连接,并由组成区块链网络的节点矿工填充到块中,块中已被确认的事务不能再更改。

3)挖矿。挖矿是验证区块链上事务的过程,矿工通过网络提供的奖励获得激励,通过计算复杂的数学难题来竞争这笔奖励,获胜者将赢得奖励并获得将事务记录到区块链的权力,共识机制能保证所记录事务的一致性。

4)共识机制。共识机制是一种预先确定的策略,目的是在矿工间达成要在区块链上添加哪个矿工记录的共识,保证数据的一致性和不可抵赖性。共识机制要求区块链中必须有超过关键数量的节点认同的区块数据才是有效的。区块链有多种共识机制,如工作量证明(Proof of Work,POW)[15]和权益证明(Proof of Stake,POS)[19]。

1.3 以太坊和智能合约

以太坊是一个完全开放的分散式平台,其有助于实现区块链上分布式应用程序的开发[20]。智能合约用来开发分布式应用,是以太坊区块链上以计算机程序的方式缔结和运行的各种数字合同[21]。以太坊区块链提供了一种复杂且有状态的图灵完整语言Solidity[22],可用于实现特定场景的智能合约。

智能合约由一组函数(合约中的可执行代码单元)和数据(合约的状态)组成,允许用户将所需功能编程为函数代码,从而描述复杂的逻辑[23]。合约函数的执行由包含函数所需输入参数的事务来触发,执行的正确性由共识矿工保证。合约程序一旦编译完成并成功上传到区块链网络,将不能再进行更改。此外,智能合约还支持存储映射和关系等更复杂的数据结构,并对这些数据结构的修改制定一些规则。

2 模型设计

本节通过对区块链自有的矿工节点、轻节点、智能合约以及外部的多应用轻量级终端设备进行设计,构建一种多行业证书的综合管理模型BMCS,从而进行多行业证书的申请、验证、签发、更新和撤销。

2.1 模型架构

BMCS系统模型运行在以太坊区块链上,包括BMCS区块链网络和多应用轻量级终端设备。BMCS区块链网络由所有的矿工节点和远程轻服务器组成,相应行业证书的操作由行业智能合约(Industry Smart Contract,ISC)控制,其中,矿工负责执行合约定义的操作,远程轻服务器负责在区块链和设备之间建立联系。BMCS模型针对的是网络中的轻量级设备,为了更好地进行综合化管理和方便用户使用多行业服务,BMCS提供了一种多应用轻量级终端设备的设计方法,该设备负责在终端存储BMCS发布的多个行业证书,识别多个行业的应用并提供相应服务。BMCS模型包含多个组件,架构如图3所示。

图3 BMCS系统模型架构

BMCS系统模型的各组件具体如下:

1)矿工节点。矿工节点是区块链网络上验证或生成区块事务的对等节点,和以太坊矿工概念一致。BMCS区块链的矿工可以由任何实体注册,如应用服务器、电脑或者用户,但前提是它与网络的连接是持续的,并且有足够的存储空间和计算能力。注册成功后的矿工节点信息将被同步到网络,该节点在本文方案中负责执行ISC定义的证书操作策略,起到传统CA的作用。

2)远程轻服务器。远程轻服务器是为了服务轻量级设备,轻量级设备是当前使用广泛的一类终端设备,如读卡器、POS机等,这种设备在内存和CPU方面存在局限性,很难承载和跟踪区块链网络事务,因此,它们不能成为区块链的节点。远程轻服务器可以解决上述问题,它是区块链网络的一部分,作为远程可信轻节点部署在终端设备的特定区域,用来在区块链网络与设备之间建立连接。与矿工节点相同,任何合法服务器都可以注册成为BMCS的轻服务器。但不同的是,矿工是全节点,需要计算和执行区块链事务,保存区块链完整信息,而轻服务器具有轻节点特性,不额外计算和执行事务,仅同步区块链部分关键数据(Merkle散列根值[18]),只在更新或下载数据时才从区块链获取完整数据,这一特性使得其能快速验证证书。部署了多应用轻量级终端设备的区域中至少有一个轻服务器,设备管理器或管理员可以维护这样一个远程轻节点。远程轻服务器在本文模型中负责验证设备的行业证书,并在必要时提供证书的下载和更新服务。

3)行业智能合约ISC。行业智能合约ISC相当于区块链上的行业应用程序,它将每个行业的证书签发、验证、撤销等处理过程定义为不同的函数,以程序代码的形式独立运行在以太坊区块链上。行业只有在区块链网络中部署相应ISC,其证书管理才能被执行,各ISC由唯一的合约地址标识,其他组件通过获得该地址来与合约进行交互。

4)多应用轻量级终端设备。多应用轻量级终端设备是一种具备读取多行业用户设备、存储多行业证书数据能力的轻量级设备。传统服务2个、3个行业的终端设备通常使用2个、3个PSAM/SAM卡存储数据[24-25],这种方式占用设备空间大且难以扩展新应用。参考多应用智能卡[26],本文在设备的存储卡中写入多应用文件系统[27],来存储BMCS模型发布的多个行业的数字证书以及其他数据,从而部署能动态扩展更多应用的轻量级终端设备。

2.2 区块链证书设计

本节基于传统X.509v3证书标准[2]设计一种区块链证书,其由区块链网络生成和记录,用来证明区块链网络或终端设备的行业身份。区块链证书修改了X.509v3证书使用者ID、颁发者ID字段的名称和存储值以及使用者和颁发者字段的存储值,删除了X.509v3证书的签名和撤销模块,并利用X.509v3证书扩展字段添加了少量与区块链环境相关的信息。X.509v3证书与本文区块链证书对比如图4所示。

图4 X.509v3证书与本文区块链证书

与传统X.509v3证书相比,本文区块链证书主要在以下6个方面进行了改进:

1)使用者合约ID和颁发者合约ID字段,用于保存区块链的智能合约地址。使用者合约ID保存当前区块链的行业合约地址,设备的行业证书字段为空,颁发者合约ID保存签发此证书区块链的行业合约地址。

2)使用者和颁发者字段,用于保存区块链层级名称,如颁发者字段存储行业i的一级区块链层名称,则使用者字段存储行业i的二级区块链层名称。设备的行业证书使用者字段为设备的标识符。

3)添加区块链名字段,用于保存区块链平台的名称,本文方案使用以太坊私有区块链。

4)添加哈希算法字段,用于保存计算加载到区块链中证书的散列值的相关散列算法信息。

5)省去签名算法和签名值模块。传统PKI通过数字签名验证证书未被篡改,使得证书具有防伪性。区块链自身具有不可篡改的特性,通过将生成的证书散列值记录在区块链中来代替签名过程。验证过程则通过检查在区块链存储中是否存在证书散列来实现,PKI公钥将对应区块链中证书散列存储的地址。

6)省去证书撤销检查服务URL模块。区块链系统发布证书不需要OCSP响应和CRL,本文对证书撤销状态的更改通过记录证书散列到ISC的特定数据结构来实现。

2.3 分布式信任结构设计

为消除PKI-CA体系中信任模型的单点故障问题,本文在区块链平台设计一种分布式信任结构,该结构保持了PKI中建立信任路径的逻辑,但增加了分散性。对比PKI通过同一行业的上级CA(如根CA)向下级签发CA证书建立信任路径,BMCS区块链网络要管理多行业的证书,就要获得各上级区块链网络层的证书。分布式信任结构使用一个区块链网络层代替行业的一级CA,通过上级区块链网络层向下级区块链网络层签发区块链本身的行业证书建立信任路径,最后一级获得多个区块链行业证书的是BMCS区块链层。

以水(i)、电(j)行业为例的分布式信任结构如图5所示,使用多个区块链网络层代替i、j行业的多级CA,为简化架构并提高系统可拓展性,该结构以BMCS层为主链、其他层为侧链。为简化描述且不失一般性,分布式信任结构被分为3级:行业根CA对应的根区块链层,由一级管理者维护;行业根CA对应的根区块链层以下、BMCS区块链以上的中间CA对应的区块链层,由相应级别的管理者维护;多行业对应的BMCS区块链层,获得多个行业的根区块链层或中间区块链层信任,由最终公共管理者维护。

图5 分布式信任结构

PKI有CA证书和用户证书2种类型,本文的区块链平台则有区块链的行业证书和设备的行业证书。区块链的行业证书是区块链平台行业身份的证明,又可分为根证书和授权证书,根证书由行业根区块链层(信任源)自签发,授权证书包括从行业根区块链层到BMCS区块链层之间所有上级签发给下级的证书,用来声明持有该证书的区块链层是行业根信任的,BMCS区块链层拥有多个行业的授权证书。设备的行业证书由区块链网络颁发给终端设备。

分布式信任结构通过证书和智能合约建立信任路径,如图6所示。从BMCS至根的每个区块链层都至少有一个相应的智能合约,其地址指向相应区块链网络。证书的使用者ID和颁发者ID字段存储合约地址,地址指向的区块链合约中记录着上级签发的授权证书,因此,证书字段的地址和合约记录的证书提供了行业网中从最终行业证书到根证书的验证路径,利用该路径能够验证证书在其行业信任结构中的可靠性。图6给出了行业i从设备的行业证书到根证书的验证路径,设备行业证书的颁发者合约ID字段指向BMCS区块链网络中的合约in,合约in存储有行业i的授权证书,而授权证书的颁发者合约ID字段指向根区块链层的合约i0,合约i0存储有行业i的根证书,因此,依据此路径能完成设备行业证书的验证。如果设备的行业证书不是由可信的区块链层签发,则用户端将检测到并进行报错。

图6 证书验证路径

值得注意的是,在实际操作中,使用区块链代替每一级CA节点的方式较难普及,因此,考虑到PKI实现多行业要承担较大的风险,本文中只有多行业的BMCS区块链层是必须部署的,其他层可根据实际情况逐步实现。如果其他上级CA不以图5所示的分布式模式部署,则只需将证书的颁发者合约ID字段添加为CA的私钥,使用者合约ID字段置空。

2.4 行业智能合约设计

BMCS模型通过在以太坊区块链上部署相应ISC实现对多行业证书的管理,各行业ISC的内部证书策略不尽相同,但应包含证书全生命周期的创建、更新、撤销和验证等基本操作。本节阐述ISC证书功能的设计,ISC主要包含以下6个功能:

1)初始化。ISC由处于分布式信任结构中的行业上级管理者部署在BMCS区块链上,其本身与行业没有关联,不具备管理行业证书的权利,因此,需要通过上级行业签发授权证书ApproveCert(遵循区块链证书格式)获得认可。假设每个行业有一个上级管理者节点(层),要求该节点账户的私钥得到严格保护。如表1所示,上级管理节点账户通过createApproveCert()函数将获得授权的行业subject、使用者合约地址subjectContractId、授权状态isApproved等其他证书信息写入ISC合约,存储在approveCertListById[]结构中,其中,isApproved=true表示已获得授权,subjectContractId是当前ISC的地址。在初始化之后,ISC具有了行业唯一性。

表1 行业智能合约初始化的相关数据结构和函数

2)行业信息注册。在新行业关联ISC时,可通过如下方式完成在区块链上的注册:如表2所示,行业系统将行业信息提交给BMCS区块链网络,网络中的节点首先要检查信息,确定该行业未注册(doesExist=false),然后调用合约的registerIndustry()函数将行业唯一标识符industryId、行业名称industryName、行业注册状态doesExist等相关信息写入ISC合约,存储在industryListById[]中,其中,doesExist=true表示已完成注册。

表2 行业智能合约注册行业信息的相关数据结构和函数

3)创建行业证书。行业证书基于区块链证书格式创建,如表3所示,结构Certificate{}定义区块链行业证书的格式。当行业系统将证书申请信息(包含行业ID等必要数据)提交给网络时,网络中的节点首先审核提交的信息,确定行业身份正确(doesExist=ture),然后通过函数createCert()调用Certificate结构,将证书序列号certId、使用者合约地址subjectContractId、颁发者合约地址issuerContractId、有效期、用到的散列算法等信息以区块链证书的形式进行创建,其中,certId=sha256(abi.encodePacked(_subject,msg.sender)),由于行业证书是颁发给设备的,因此subjectContractId置空,issuerContractId中写入当前ISC合约的地址。最后,将创建的证书certificate存储在certListById[]中,以区块形式发布到网络节点供设备下载,将证书的哈希存储在certHashListById[]中。

表3 行业智能合约创建证书的相关数据结构和函数

4)撤销证书。对证书怀疑或证书自然过期需要撤销已颁发的证书,由于区块链上无法真正删除信息,因此通过将证书哈希添加到撤销数组revokedCertHashList ById[]中来标记证书状态为已撤销。

5)验证证书。下载了证书的设备在与其他实体通信时,需验证行业身份证书的正确性。设备证书的验证由部署在特定区域的远程轻服务器完成,验证过程中的相关数据结构和函数如表4所示。

表4 行业智能合约验证证书的相关数据结构和函数

设备提交验证申请(包含待验证证书tobeVerifyCert的证书序列号certId、颁发者合约地址issuerContractId等)给轻服务器,轻服务器节点调用地址tobeVerifyCert.issuerContractId指向的合约,通过合约的verifyCert()函数验证证书。verifyCert()函数对证书的验证分为3个步骤:

(1)输入待验证证书tobeVerifyCert的证书序列号certId,检查certListById[]中是否存在certId对应的证书Certificate(inList=true)。

(2)若存在,则判断证书颁发者是否获得了授权。如前文所述,Certificate.issuerContractId字段的地址和合约approveCertListbyId[]存储的授权证书形成验证路径,如果当前合约存储中存在授权证书(isApproved=true),则继续下一步。

(3)判断证书是否在有效期内,即Certificate.issuedDate≤now≤Certificate.expiredDate且未被撤销,即sha256(certificate)存在于certListHashById[]且不在revokedCertHashListById[]列表中(isValid=true)。

验证结果返回到verifyResult[]中,只有以上3个条件同时为true,才返回sha256(Certificate),其他情形都返回证书不可信的消息。设备比较返回哈希值和sha256(tobeVerifyCert),两者一致则表示证书正确。

6)更新证书。更新证书本质是重新签发新证书替换原有证书,过程与创建新证书类似,不同的是更新证书时需要将原证书散列添加到ISC的revokedCertHashListById[]存储中。

2.5 模型操作流程

本节以居民生活中水(i)、电(j)等行业的读卡器与智能卡认证为例,给出BMCS模型业务流程如图7所示,其中,多应用读卡器是BMCS模型中的多应用轻量级终端设备。模型涉及行业授权以及证书的申请、签发、验证、更新和撤销等过程,由于更新、撤销过程与签发、验证类似,因此,在图7中简化了更新、撤销操作的详细过程。上级管理者节点初始化并部署其行业唯一的ISC,要求上级管理者节点是分布式信任结构且从行业根开始信任的。在初始化时,上级管理者将授权证书存储在BMCS区块链网络以传递信任。行业后台系统是行业业务的综合服务中心,在本文模型中可以是供水公司、电力公司、供气公司、公交公司等系统,通过网络与其他部分连接,行业后台系统发送申请、更新或撤销证书的请求信息给BMCS模型,BMCS对信息进行处理并做出响应。BMCS创建的证书签发给多应用读卡器,利用多应用文件系统[27]存储各行业证书及其他数据,其具备读取多个行业智能卡的能力。读卡器通过轻服务器连接到区块链网络,在与智能卡进行身份认证时,通过比较区块链返回哈希值与计算所获得证书的哈希值来验证证书的正确性。

3 安全性分析

在跨行业多应用综合管理中,传统的中心化系统将多个行业的证书信息集成在一个单一的中心机构中,证书的安全性完全依赖于中心服务器,一旦中心服务器遭受外界非法攻击,将会影响到整个网络。随后提出的部分分散化系统大多保留了中心服务器的功能,将关注点放在了去中心化数据库,这在一定程度上缓解了证书系统面临的威胁,但极度集中信任的中心服务器仍存在局限性。

本文结合区块链无中心化、集体维护、难以篡改等特点,提出一种分布式的解决方案,在分布式区块链平台处理和存储各行业的数据信息,所有节点共同维护系统中的证书操作。相比多个行业信息集中在可信中心而言,本文方案避免了单点故障给多行业系统带来的成倍威胁,大幅提高了多应用证书系统的安全性。同时,区块链本身存在大量分布式对等节点,使得其能抵抗分布式拒绝服务攻击DDoS,而CA服务器很容易通过DDoS攻击来摧毁整个系统。

分布式信任结构提供了行业的信任链,要求合法行业才能在BMCS模型中创建自己的ISC,避免了恶意合约的写入。利用证书和智能合约建立的证书验证路径,能够保证各行业的独立性和证书验证的正确性,防止恶意证书进入。此外,BMCS模型基于区块链构建,具备区块链技术的优良特性,忽略了对其自身矿工节点等组件的分析,而着重分析新部署在终端特定区域的远程轻服务器。轻服务器是区块链网络的节点,符合区块链网络对节点的验证机制,当某个节点受到恶意更改时,其他节点在验证过程中很快就会检测到,因此,攻击者很难对节点造成威胁。此外,轻服务器具备轻节点特性,依赖轻以太坊子协议[20]且仅同步区块链的部分关键数据(Merkel散列根值[18]),这使得即使其受到攻击,攻击者也无法获取完整信息。综上,虽然轻服务器相对于设备在一定程度上形成了中心,但是该中心不会对BMCS模型的安全产生影响。

4 实验结果与分析

本节以水行业为例,搭建区块链网络对BMCS模型进行验证和性能分析。实验在处理器为Intel®Pentium®CPU G645 @ 2.90 GHz的操作系统上完成。使用以太坊go-ethereum[28]搭建私有链,配置创世区块,为降低挖矿难度,创世区块难度设置为较小值“0x40000”,在实际使用中需根据设备性能和安全性要求合理配置。

在同一台计算机上创建3个节点集群部署以太坊私有链,其中,2个节点以全模式启动geth,作为全节点,另一个节点以轻模式启动,充当轻服务器,使用admin.addPeer()方法连接3个节点。使用0.4.24版solidity语言[22]在remix-ide[29]上编写智能合约并部署在所有节点上。调用合约功能,实验结果如图8~图12所示。

图8 remix-ide网页端水行业管理证书的合约界面

图9 水行业上级管理者创建授权证书的操作界面

图10 注册行业信息的操作界面

图11 创建行业证书的操作界面

图12 验证行业证书的操作界面

图8显示合约部署后的所有相关函数和数据结构,包含初始化、注册行业信息、创建行业证书、验证证书、更新和撤销证书等功能,其中更新和撤销不再赘述。部署成功后水行业与该合约唯一的地址绑定。在新行业加入BMCS之前,首先需要获得行业根的授权(如图9所示)并注册行业信息(如图10所示),然后才能进行该行业证书的管理操作。水行业上级管理节点通过将授权证书(根证书)存储在当前智能合约中完成授权,对于其他行业,则由其相应管理节点写在对应行业合约存储中。在授权证书创建后,利用交易地址查询approveCertListByAdress[]中的证书序列号,输入获得的序列号可以看到授权证书的使用者合约地址等于当前合约地址(如图8所示)。图11所示为签发给设备的行业证书,设备证书的颁发者合约地址等于授权证书(如图9所示)的使用者合约地址。证书的验证通过函数verifyCert()在轻服务器节点执行,图12是对图11所创建证书的验证。输入图11中证书的序列号和颁发者合约地址,验证结果“inList”“isApproved”“isValid”值都显示为“true”,并返回了证书的哈希值。当输入其他序列号时,“inList”“isApproved”“isValid”值全部显示为“false”。只有“inList”“isApproved”“isValid”3个值都为“true”时,才返回证书哈希值。实验结果表明,BMCS模型可通过在区块链网络部署各行业智能合约来管理多行业证书全生命周期的基本操作。

通过实验结果可以看出,BMCS模型管理证书的成本主要来源于合约的部署以及每个函数交易和执行消耗的gas量,成本大小与函数复杂度相关。测试水行业智能合约显示,部署合约消耗3 309 379 gas,按照当前以太币的价格,相当于$12.9,授权、注册信息、创建证书、验证和撤销分别为$0.440、$0.326、$0.437、$0.235和$0.006,合计为$14.344。而传统CA维护一个证书的成本大约在$100~$1 000不等。可以看出,在BMCS区块链上维护一个行业证书系统的成本远小于传统CA。因此,行业或个人在使用证书服务时,无需单独部署PKI系统,只要加入BMCS区块链网络,即可通过很少的费用来获得该模型提供的证书服务,且该模型多应用的特点可有效降低建设、运行以及维护各行业PKI系统所需的成本。

区块链平台管理证书时主要包括签发证书和验证证书2个耗时段,前者包含添加新块、对新事务进行共识和算法计算的时间,添加新块约为14 s,共识时间可根据情况紧急程度来设定。区块链中的证书不考虑签名过程,仅在存储时使用哈希算法,而在同等情况下,哈希算法SHA-256的计算耗时约为签名算法如RSA-1024的1/10,综合考虑,BMCS模型平均仅需几分钟便可签发一个新证书。验证证书在轻服务器节点完成,由于轻节点仅同步区块链部分数据(区块头容量大约为80 kB),相比同步完整数据(区块容量大约为1 MB)的全节点,其能快速地验证证书,且区块链网络之间节点是同步的,无需使用发出CRL或响应OCSP查询的服务,待验证的设备仅需在区块链存储中查询证书序列号所对应的散列,而无需验证签名,因此,证书链及证书的验证快速高效。

分析BMCS模型可以看出,其具备动态扩展行业应用的能力,多应用终端设备的应用更改通过增删多应用文件系统的应用文件实现,而BMCS区块链网络中应用的更改则通过受信任的上级行业写入其他行业合约来实现。此外,该模型还具备灵活的存储能力,区块链可以存储远多于证书验证数据的信息,因此,可在区块链上存储设备访问控制策略和其他通信策略,从而为后续的功能扩展提供便利。

5 结束语

多应用证书管理系统的安全性至关重要,本文基于分布式的区块链技术,建立一种多应用证书系统模型BMCS,该模型能为多行业的证书认证服务提供综合管理,避免多应用系统建立在PKI上引起的单点故障问题。在BMCS模型中,各行业信任根通过分布式信任结构为BMCS区块链网络授权,授权之后的网络部署相应行业合约ISC管理证书,颁发给设备的证书通过轻服务器进行快速验证。同时,在轻量级多应用设备中引入的文件系统能够在终端安全独立地加载多行业证书,具有灵活扩展行业应用、一终端多应用的优点。实验结果表明,该模型在多应用认证服务中具有较高的安全性。下一步考虑将该模型应用于实际中的水、电和燃气等多个跨行业领域,以实现一个读卡端设备读取多种行业卡的目的。

猜你喜欢
合约分布式证书
WJCI 收录证书
CSCD收录证书
收录证书
收录证书
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究
西门子 分布式I/O Simatic ET 200AL
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望