区块链工程实践:行业解决方案与关键技术
上QQ阅读APP看书,第一时间看更新

1.3 基于区块链的可信电子证照方案设计

1.3.1 业务设计

基于区块链的可信电子证照用于政府部门给公民发放电子证照,以取代纸质证照,并通过区块链保存不可篡改的发证、收证、查证记录,使各社会主体共同建造、共同维护、共同监督,从而满足公众的知情权、监督权,增强电子证照的客观性与可信度。

从业务功能上来说,可信电子证照应用包括登记、发证、收证、查验几个环节,如图1-2所示。登记环节由公民在指定业务部门完成实名登记,申请开通电子证照;发证环节由公民根据需要申请个人电子证件,并由政府或第三方机构发放电子证照;收证环节用于公民接收、存储、管理自己的电子证照;查验环节主要由查验工作人员对公民提供的电子证照进行查验,证明个人身份或办理相关业务。

图1-2 可信电子证照的业务流程

1.登记

实现公民电子证照的日常开通、注销、变更申请工作。公民根据个人在指定的业务部门完成实名登记后,即可办理电子证照的开通、注销、更改等日常业务。

2.发证

实现公民电子证照的发放。公民申请开通电子证照后,由公民提出申请,可信电子证照应用平台根据申请信息为公民发放个人电子证照。电子证照通过彩信、手机客户端等几种渠道进行发放,申请的个人电子证照通过手机客户端进行统一管理。具体流程如下:

(1)持证人通过手机客户端向政府的发证机构提供个人信息,申请一个数字身份。

(2)发证机构审核持证人信息,生成持证人的数字身份;发证机构用其私钥对持证人的数字身份签名后,发送给持证人,以及向电网信息中心报审/备案。

(3)持证人使用自己的公钥对接收到的有发证机构签名的数字身份进行加密,并提交数字身份区块链。

(4)数字身份区块链完成验证和共识过程,实现数字身份的记账。

3.查验

实现工作人员对公民电子证照的查验,对公民身份进行识别、核对,完成个人身份证明。查验人员可通过手机客户端、PC工作端进行查验操作,查验操作记录保存在统一管理中心,以保证事后审计。具体流程如下:

(1)持证人出示客户端上的数字身份码,供查证人扫描;

(2)查证人利用发证机构的公钥验证数字身份是否为发证机构所发;

(3)查证人对持证人数字身份信息进行查证。

可信电子证照应用平台包括统一管理中心、用证端、发证端和查证端四部分。其中统一管理中心为用证端、发证端和查证端提供基础支撑功能服务和数据网络服务。用证端是提供给公民使用,即持证人获取、管理及使用电子证照的应用程序,持证人可以通过彩信、手机客户端两种方式获取电子证照。发证端将与政府的各个业务系统实现对接,采用嵌入式,不影响现有业务系统的运行,并提供相应的调用发证服务。查验端是提供给查验工作人员查验电子证照时使用的应用程序,其可以安装在PC端,也可以安装到移动端。

1.3.2 架构设计

从业务流程上看,基于区块链的可信电子证照是一个典型的分布式应用(DApp),因此我们采用以太坊的技术底层作为支撑,其基础技术架构自下而上包括数据层、网络层、共识层、合约层和应用层。结合电子证照应用的需要,我们设计了如下技术架构(见图1-3),主要分为技术层、服务层和用户层。

图1-3 总体架构

技术层运用以太坊平台,将证照信息及使用记录进行区块化封装,连接成区块链;

服务层以技术层为基础,向用户提供会员制服务、区块链服务、电子证照服务;

用户层主要表现形式为公民用户App、发证机构前端,以实现用户与用户之间、用户与发证机构之间的信息交互。

如图1-4所示,对数据进行区块化封装,每个区块细分为区块头和区块体两部分。其中,区块当前的版本号、上一个区块的地址、时间戳、当前区块哈希值与随机数封装在区块头内;当前区块的交易数量以及经过验证的、区块创建过程中生成的所有记录封装在区块体中。区块体由Merkle树组成,在Merkle树的叶子节点上,保存着每一笔发证、收证、查证和换证的记录,这些数据通过两两Hash计算向上形成Merkle树的根记入区块头。

图1-4 区块结构图

根据不同证件的业务类型,采用主链和侧链[10]双向锚定的设计加以区分。如图1-5所示,主链用于身份证明,用户利用身份证、护照或社保卡在主链上完成身份认证,再通过主链锚定其他电子证照;不同的证照对应各自的侧链,以便于划分不同的业务数据,提高登记、查验效率。侧链的双向锚定技术允许信任在不同网络间传递,建立个人信用体系;同时允许发布试用版本的电子证照区块链,对主链不造成影响。

图1-5 侧链设计

1.3.3 交互设计

1.身份认证阶段

身份认证系统主要涉及区块链平台、用户App和后台管理系统的交互。对于业务系统注册账号分3个不同的角色:普通用户、制证机关用户、查验机构用户。普通用户身份认证如图1-6所示,发证机构身份认证如图1-7所示。

图1-6 用户身份认证

首先,用户登录系统ID,后台管理系统进行身份认证。如果通过则将用户身份信息写入身份管理数据库,并向用户返回注册成功信息,否则重新注册。

其次,注册区块链ID,由用户信息(姓名、单位、城市、国家及其他代表用户身份的信息)生成全网唯一的身份标识,根据这一身份标识,判断用户是否为新用户。我们利用Hash算法生成全网唯一身份标识。原则上,同样的输入会产生同样的Hash输出,而不同的输入产生的输出肯定不同。这类的Hash算法有很多,我们主要采用SHA3、最大量2128算法。后台管理系统可以保存当前区块链中所有用户的全网唯一身份标识,可将认证机构根据用户信息生成的全网唯一身份标识与存储过的全网唯一身份标识进行对比,来判断该用户是新用户还是老用户:若未找到存储过的全网唯一身份标识则为新用户,否则为老用户。

图1-7 发证机构身份认证

2.发证、收证阶段

收发证系统主要涉及用户端、区块链平台、发证机构前端和政府业务库的交互,如图1-8所示。

图1-8 发证、收证

首先,用户A由App向发证机构B请求签发电子证照。

其次,政府业务库未查找到证照记录则返回申请步骤,查找成功则通过发证机构前端进行制证发证,发证机关签名,通过请求信息获取用户A(持证人)的公钥(地址)。

再次,发证机构用自己的私钥和用户A的公钥加密,平台输出该笔交易的Hash值,向全网广播用户A的发证记录,记录证件信息的区块编号,写入区块链。其他机构收到了发证机构B的广播信息,并对用户A的身份信息进行确认。

最后,持证人在App上验证发证机构签名,确保信息未被篡改,在区块链上用私钥解密完成收证,发证机构公钥解密作为存证。

3.换证阶段

换证系统同样涉及用户端、区块链平台、发证机构前端和政府业务库的交互,如图1-9所示。

图1-9 换证

用户A由App向发证机构B请求更改电子证照,输入A的区块链地址、发证组织机构代码以及用户公钥加密的证件信息。发证机构B接收到用户A的更新请求后,首先根据用户信息查询该用户的已有身份证书,如果未找到,则更新失败;如果找到已有身份证书,则比较已有证书中的用户公钥、颁发者、有效期等信息与更新请求中的信息是否一致,如果一致则更新失败,如果不一致则为用户创建新的电子证书(同发证步骤)。

4.查验阶段

查验系统主要涉及查证人用户端、持证人用户端、区块链平台的交互,分为远程查验(见图1-10)和线下查验(见图1-11)。

图1-10 远程查验流程

图1-11 线下查验流程

远程查验步骤如下:

(1)查证人C通过用户端直接向持证人A申请查验证照信息,若持证人A拒绝请求则查证失败,通过请求则会调出带有发证机构B签名的电子证照,由查证人C用其公钥加密后,向其他节点广播查证记录;

(2)查证人C验证发证机构签名,用私钥解密套用模板进行证照查验。

远程查验满足了用户随时随地进行证照查验的需求,大幅节省了社会交往、商务活动的成本。

线下查验则首先需要查证人C扫描持证人A的含有其自身ID标识的二维码,之后向持证人A发出证照查验申请,并按远程查验步骤进行。