APP下载

基于区块链的电子证照共享方案研究与实现

2023-02-17李国良邵思豪

信息安全研究 2023年2期
关键词:证照哈希合约

李国良 邵思豪

(辽宁省大数据管理中心(辽宁省信息中心) 沈阳 110002)

党的十八大以来,党中央、国务院要求深入推进“互联网+政务服务”[1],全面推进“一网通办”[2],加快推进信息数据共享[3],加快电子证照库建设及电子证照管理[4],力求打通数据壁垒,全面优化营商环境建设.目前,全国各地均已建成覆盖省市两级的电子证照系统,为减少企业提交办事材料、为数据多跑路提供了重要的应用支撑.

然而,电子证照建设应用过程中存在的问题也日益显现,包括:1)证照信息的安全可信问题.电子证照存储在数据中心服务器中,当受到攻击时将导致证照信息被篡改或删除,无法保障数据安全存储和可信共享.2)电子证照系统操作过程的行为审计、精准授权问题.在电子证照管理中存在拖延上传、证照信息有误等问题,导致数据不全面、不准确.此外,管理员不规范操作也会导致证照信息丢失、篡改、泄露等.3)证照验证过程中的隐私保护问题.在电子证照验证场景中存在持证者隐私信息被过度暴露的风险.

本文将区块链技术与电子证照相结合,借助区块链的去中心化、可追溯、不可篡改等特性,以及智能合约和零知识证明等关键技术,解决了无法跨部门协同提供证明服务,电子证照操作记录无法安全存储、可信共享、存证追溯,无法进行数据应用授权、精准授权验证、行为审计等问题.并基于本文提出的技术方案,分析重点应用场景.最后通过实验验证了本文方案具备可行性,且提升了安全性.

1 区块链技术简介

自2008年比特币问世以来[5],因区块链去中心化、集体维护、不可篡改、抗抵赖和可追溯等技术优势,受到了工业界和学术界的广泛关注.按照对用户的开放程度,区块链可分为3类:公有、私有和联盟[6].区块链技术发展可大致分为以下3个阶段.1)区块链1.0:可编程货币,代表为2008年比特币的出现.2)区块链2.0:智能合约,代表为2015年以太坊的出现[7].3)区块链3.0:2018年以来,区块链技术广泛应用在金融交易、物联网和数据共享等领域[8],以Hyperledger为代表.

区块链技术本质上是对数字事件在分布式数据库上创建无法篡改的记录——分布式账本[9].网络中的参与者根据共识原则来制约和协商对账本记录的更新,没有第三方仲裁机构参与.分布式账本中的每条记录都有1个时间戳和唯一的密码签名,使其成为网络中所有交易的可审计历史记录.哈希算法和Merkle树结构确保数据不被篡改.

共识机制是分布式系统的核心[10],互相不信任的节点通过预设机制最终达到数据一致性称为共识.共识机制的目标为:1)一致性,所有诚实节点所保存的区块链前缀相同;2)有效性,由诚实节点发布的消息将被所有诚实节点记录到自己的区块链中.目前主要的共识机制有权益型(工作量证明[11]和股权证明[12-13]等)、容错型(实用拜占庭容错[14]和授权拜占庭容错[15]等)、选举型(Ripple[16-18]和Raft[19]等)3种.共识机制在电子证照系统中应用于证照的可信应用,确保“一数一源”.

智能合约是传统合约的数字化版本[20].“智能合约就是执行合约条款的可计算交易协议”[21],可在满足其写入条件时自行执行[22].智能合约须是合同条款[23],全生命周期包括生成、发布、执行3部分[9].智能合约作为在区块链上自动执行的特殊程序[24],在证照系统中应用于证照的授权使用及到期自动失效等场景,确保业务的可靠运行.

超级账本HyperLedger尤其是其中的Fabric是全球最流行的许可链技术[25],支持多种客户端编程和智能合约语言,如Go,Java等.HyperLedger是一个不可变的共享账本,支持多个不同的参与方加入同一通道来共享同一个账本.通道间的数据是隔离的;通道中数据默认是不加密的,可以被通道成员看到;但私有化数据默认是加密的,只有得到授权的通道成员才能解密数据.

2 区块链+电子证照的优势

基于区块链可追溯和不可篡改的特性,可解决证照信息及操作记录的安全存储、可信共享、存证追溯问题.基于智能合约和零知识证明来保护个人及企业的证照隐私.基于区块链分布式、各节点平权的特点,可在各部门分别搭建节点服务器,获取区块链全量数据,实现证照数据独立发布和验证.

基于区块链技术赋能电子证照系统建设应用,将有利于提高证照的存在性证明、变化过程证明、查验证明等[26-27]能力.借助区块链的去中心化同步记账、交易身份认证、数据加密和数据不可篡改等特征,可跨部门提供证照证明服务,保障了证照数据安全性、完整性、可靠性.既确保了企业和法人隐私安全,又提高了政务服务质量和效率.

区块链+电子证照具有如下几点优势:

1) 深化跨部门互信.

将电子证照数据写入数据库时,同步会往区块链平台写入1个节点数据.根据区块链平权,节点数据只能写入、不能修改和删除的特点,确保区块节点数据的不可篡改.在每次调用电子证照时,系统都会对数据进行哈希计算,并与区块链节点上的哈希值进行比较,保障证照数据的完整性和可信性.

2) 电子证照调用过程可追溯.

区块链的数据结构如图1所示:不同区块节点根据哈希值首尾相连,如果当前区块数据造假会导致前一区块作出修改,然后迭代修改前一区块,必然会导致当前节点的所有前驱节点数据都被迫作出造假修改,这在区块链平台的共识机制保护和约束下是很难做到的.因此,通过这种机制可确保写入区块链的数据不可篡改且可溯源.

3) 智能合约重构电子证照业务应用.

智能合约不仅是一个自动执行的计算机程序还是一个系统参与者,它既可接收和存储信息,也可向外发送信息,还可临时保管资产,并总是按照事先的规则,不依赖第三方执行操作,进行可追踪且不可逆转的可信交易.安全性和交易成本方面均优于传统合约算法.

4) 可监管的隐私保护.

证照数据作为个人或企业的基本数据之一,具有隐私保护需求[28].同时,部门颁发的证照信息属于政务信息,不应被其他部门全部知晓,需进行可监管的隐私保护.可通过零知识证明、数据加密等隐私保护技术对区块链记录的信息进行处理,控制证照信息的知悉范围来保护隐私并进行监管.

图1 区块链的数据结构

3 系统总体设计和关键技术

3.1 总体架构设计

本着可靠、稳定、可拓展、可信与安全的原则,系统按照统一规划、分层构建来设计实现.总体架构分为4层,分别是展示访问层、系统应用层、区块支撑层、共享交换层.总体架构如图2所示.

图2 总体架构设计

1) 展示访问层.

主要面向3大类用户,如表1所示,包括社会公众、业务应用和管理人员.

表1 用户分类及用户功能

展示访问层包含政务服务网、行政审批系统、委办局业务系统等需和电子证照系统集成的业务系统.用户通过上述系统访问电子证照系统,获取统一的数据接口服务.数据接口主要分为2类:一类是面向互联网提供公众服务接口,另一类是为部门提供数据共享接口.

2) 系统应用层.

应用层主要划分为2个子系统:一个是面向业务单位使用的证照管理系统;另一个是面向数据采集和共享的证照共享系统.

3) 区块支撑层.

通过区块支撑层,赋能电子证照管理和共享系统,针对电子证照应用场景,利用可信数据源管理机制确保数据安全,利用数字身份(包括人员身份和网络设备身份)锁定证照数据责任主体,利用区块链存证溯源,确保数据不被篡改.

此外,还包含目录索引库、电子证照库、审计日志库,涉及数据的存储和管理.电子证照库是本系统基础,主要包括电子证照、电子材料、批文等信息.主要使用读写分离、表分区、分表设计、分布式存储等技术提升性能.

4) 共享交换层.

共享交换层借助省数据共享平台和电子政务云平台,实现和省直/地市的电子证照系统共享证照数据的功能.

3.2 系统关键技术

平台基于超级账本、Hyperledger和高并发审计侧链,可运行在云端或本地服务器上,利用关系型数据库、对象存储等作为基础设施支撑.

3.2.1 自适应上链算法

第①行:遍历每个数据提供方;第②行:由数据提供方client提供原始数据;第③行:对原始数据进行清洗预处理,得到清洗后数据clean_data;第④行:对清洗后数据clean_data进行结构化处理,得到结构化数据stru_data;第⑤行:对结构化数据stru_data加密处理,得到数据data;第⑥行:数据data在当前网络进行流通;第⑦行:创建新区块blocknode;第⑧行:将数据data填入区块blocknode;第⑨行:判断主链是否低负载;第⑩行:若主链低负载,则将blocknode加入主链;第~行:若主链高负载,则将blocknode加入侧链;第行:上链算法结束.

算法1.自适应上链算法.

输入:clientSet;/*所有数据提供方*/

输出:(mainchain,sidechain)./*更新后的主链和侧链*/

① FOR eachclientbelongs toclientSet

/*遍历*/

②raw_data=produce(client);

/*原始数据*/

③clean_data=clean(raw_data);

/*数据清洗*/

④stru_data=structure(clean_data);

/*结构化*/

⑤data=encrypt(stru_data);

/*数据加密*/

⑥currentnet.flow(data);

/*在当前网络进行流通*/

⑦blocknode=newblock();

⑧blocknode.add(data);

/*将data填入区块*/

⑨ IFislowload(mainchain);

/*判断主链低负载*/

⑩mainchain.add(blocknode);

3.2.2 审计侧链

审计侧链是为高并发场景下的自适应审计而设计.这是一个中心化系统,实现对区块链交易客户端签名、交易发起、校验、打包成区块、区块哈希写入母链等操作.

审计侧链用户使用母链的区块头哈希进行签名验证,使审计侧链虽采用了中心化架构,仍可实现链上数据的不可篡改和抗抵赖.

3.2.3 电子证照的安全存储与隐私保护

通过主链和侧链上的智能合约将电子证照存储在区块链上,防止其内容被篡改,达到数据安全存储和隐私保护目的.

新增证照则将更新的证照保护在链下的数据库中,将证照指纹(哈希值)保存在链上的智能合约中.如果篡改数据则改变相应的哈希值,通过调用智能合约会发现与链上哈希值不相等,便无法执行篡改操作,确保数据的安全存储.同时,在算法执行过程中,数据均加密存储,即使被泄露也很难还原,提高了隐私保护效果.

证照新增流程见算法2.第①行:遍历每个要新增的电子证照li;第②行:权威节点AN首先生成随机密钥rand_key用于电子证照的AES加密;第③行:用AES算法对证照li加密,加密后的结果为aes_li;第④行:用sha256算法求电子证照的哈希值,哈希值保存为sha_li; 第⑤行:用sha256算法求加密后电子证照aes_li的哈希值,结果保存为sha_aes_li;第⑥行:利用[电子证照li、电子证照哈希值sha_li,加密后电子证照哈希值sha_aes_li]提取其他有用属性;第⑦行:将[加密电子证照aes_li,加密电子证照哈希值sha_aes_li,和其他证照信息other_attri]加入电子证照数据库DB中,并返回该license在数据库DB中存储地址li_DBaddr;第⑧行:用椭圆曲线算法对[电子证照身份信息sta_ID、证照编号lics_ID、电子证照的哈希值sha_li,加密电子证照的哈希值sha_aes_li]进行数字签名,得到数字签名结果sig_li;第⑨行:将数字签名结果sig_li通过RESTFul Service发送到智能合约SC,SC收到后从签名中恢复公钥publickey信息,与SC中预存的公钥进行比较;第⑩行:如果二者相同说明证照新增流程合法,则在合约SC中添加[证照编号li_ID,证照版本li_ver,证照在数据库DB中存储地址li_DBaddr、电子证照的哈希值sha_li、时间戳time])等信息.电子证照更新算法与新增算法类似,不同之处在于权威节点AN不重新生成rand_key,而是使用第1次新增该证照时创建的rand_key.

算法2.证照新增算法.

输入:licenseSet;/*所有要新增的电子证照*/

输出:(DB,SC)./*更新后的数据库和智能合约*/

① FOR eachlibelongs tolicenseSet

/*遍历*/

②rand_key=producekey(AN);

/*生成随机密钥*/

③aes_li=AES(li,rand_key);

/*AES算法加密*/

④sha_li=SHA(li);

/*求电子证照的哈希值*/

⑤sha_aes_li=SHA(aes_li);

/*求加密后证照的哈希*/

⑥other_attri=extract(li,sha_li,

sha_aes_li);

⑦li_DBaddr=DB.add(aes_li,sha_aes_li,

other_attri);/*加入数据库*/

⑧sig_li=ECCSig(sta_ID,li_ID,

sha_li,sha_aes_li);

⑨ IFSC.checkOwner(sig_li,sta_ID)

/*检验身份*/

⑩SC.addmap(li_ID,li_ver,li_DBaddr,

sha_li,time);/*在合约SC中添

加证照相关信息*/

3.2.4 电子证照的可信共享与存证追溯

电子证照的可信共享是指在部门之间或部门与外部之间,通过智能合约、数据库技术、公钥加密、对称加密等技术实现可信证照数据共享.

证照共享算法如算法3所示.第①②行:发送方权威节点ANsend,使用私钥Pri_K_send对[要分享的证照编号li_ID,接收方权威节点ANrecv_ID等]通过ECC椭圆曲线算法进行数字签名,得到sig1并发送给智能合约;第③行:智能合约SC收到请求后,检查发送方ANsend签名,用ANrecv的公钥Pub_K_send解签名sig1,验证发送方是否是ANSend;第④行:检查通过后,将接受方ANrecv_ID信息和待分享证照li_ID写入合约分享列表shareANList;第⑥⑦行:接收方ANrecv使用私钥Pri_K_recv对要接收证照编号li_ID和ANrecv的ID信息进行签名,得到sig2并发送给智能合约SC;第⑧行:SC收到请求后,对接收方ANrecv进行签名检查,用ANrecv的公钥Pub_K_recv解签名sig2,验证是否确实ANrecv发送;第⑧行签名检查成功后,第⑨行进一步检查,SC用sig2还原ANrecv[发送方的li_ID和接收方ANrecv_ID],与第④行SC在shareANList已存信息进行对比,确定是ANsend将共享li_ID发送给ANrecv.第⑨行检查通过后,第⑩行智能合约SC发送[待分享电子证照的ID、哈希值和待分享证照DB地址li_DBaddr、证照哈希值sha_li]给ANrecv;第行:ANrecv根据从合约中获取的证照li在DB中的存储地址li_DBaddr,进而从DB数据库中获取加密的证照aes_li,ANrecv通过请求将ANrecv的ID和待分享证照编号li_ID发送给ANsend,获得加密的证照aes_li的解密密钥;第行:ANrecv将[ANrecv_ID,li_ID]发送给ANsend,请求获得解密密钥rand_key;第行:用智能合约SC检查行信息的合法性;若合法,则执行行,ANsend利用智能合约获取ANrecv的公钥Pub_K_recv,用Pub_K_recv对rand_key进行椭圆曲线加密,并发送给ANrecv;第行:ANrecv收到ANsend的数据后,使用私钥Pri_K_recv进行解密得到rand_key,再用rand_key对加密电子证照aes_li进行解密,得到原始电子证照li.最终ANsend成功地将证照内容li共享给ANrecv,实现了可信共享与存证追溯.

算法3.证照共享算法.

输入:(li_ID,ANsend,ANrecv);/*待分享电子证照编号、发送方、接收方*/

输出:li./*要共享的证照信息*/

①sig1=ECCSig(Pri_K_send,li_ID,

ANrecv_ID);

②ANsendsend [ANrecv_ID,sig1]→SC;

③ IFSC.checkOwner(sig1,ANsend_ID)

④shareANList.add(ANrecv_ID,li_ID);

⑤ END IF

⑥sig2=ECCSig(Pri_K_recv,li_ID,

ANrecv_ID);

⑦ANrecvsend[ANrecv_ID,sig2]→SC;

⑧ IFSC.checkOwner(sig2,ANrecv_ID)

⑨ IFSC.checkShareList(sig2,ANrecv_ID)

⑩SCsend [li_ID,li_DBaddr,sha_li]

→ANrecv;

req]→ANsend;

li_ID)

rand_key);

ANrecv;

en_r_key);

4 区块链+电子证照应用场景研究

4.1 可信电子证照数据

基于区块链可追溯和不可篡改的特性,可解决数据安全可信问题.业务系统产生的电子证照数据在写入数据库时,同步向区块链平台写入1个节点数据.证照产生后会有变更、年检、注销、废止等状态.区块链对证照变更申请、审核人员、审核结果、审核时间等信息记链,以对证照进行全过程管理.每次访问或调用证照数据时都将数据库中的数据进行哈希计算,并与区块链节点上的哈希值比较,确保证照数据的完整性和可信性.

4.2 电子证照应用授权与审计

授权应用点主要包括:1)当电子证照到期时,智能合约自动执行,将证照状态改为无效状态,规避过期证照使用问题;2)根据证照类型及业务属性,将共享方式分为无条件共享、有条件共享和不予共享.对于有条件共享的,可将共享条件固化为智能合约,证照被调用访时按智能合约自动执行.

如图3所示,电子证照应用授权智能合约应用过程如下:1)首先电子证照服务提供方将电子证照共享目录上链,上链内容包含证照共享服务目录列表;2)数据使用方申请电子证照共享资源;3)数据提供方审核数据使用方的调用申请,建立智能合约,申请审核过程可追踪且不可逆转;4)调用申请通过审核后可获取共享资源.

图3 证照共享智能合约过程

电子证照应用过程的上链内容包含持证者、证件号码、证照类型、用途、调用时间等,从而建立应用过程的分布式账本.账本中每条记录都有时间戳和唯一的密码签名,使账本成为所有交易的可审计历史记录,且数据不可篡改,便于应用审计.

4.3 电子证照零知识证明

利用零知识证明技术在提供完备证照验证功能的同时,保障隐私不被泄露.其具备2点优势:1)匿名性.不会向验证方透露除拥有证照之外的额外信息,可不用明示交易者多余信息,即可证明拥有相关证照.2)不可链接性.当1个人申请多个电子证照时,也不泄露这些证照归属同一身份,防止持证方的精准用户画像被泄露.

在传统电子证照应用场景中,假设持证方Alice需要向Bob(商店职员)证明她有车管所发给她的驾照.Alice是持证方用户,车管所是颁发者,商店职员Bob是验证方.Alice为了向Bob证明她有驾驶证,Alice可以出示车管所颁发的电子证照.这样Bob就可以看到Alice的名字、地址、年龄等,无形中泄露了Alice的隐私.

如图4所示.Alice可使用区块链生成一个“零知识证明”驾驶证的电子证照,该电子证照只显示她拥有有效的驾照,没有额外信息.在“零知识证明”验证过程中:1)Bob(商店职员)只知道Alice有一个有效的执照,他无法了解关于Alice的其他信息(匿名性);2)即使Alice多次访问商店并生成多个电子证照,Bob(商店职员)也无法从这些电子证照中判断来源同一个人(不可链接性),确保个人隐私不被泄露.

图4 电子证照零知识证明

4.4 电子证照精准授权验证

为防止证照信息被泄露,持证方可选择加密存储某些证照数据.利用“加密存储+解密白名单”来保护隐私,只有解密白名单中的验证方才能获得加密电子证照的密钥来查看,实现精准授权验证.

精准授权验证过程如图5所示.首先,生成一个随机数K作为对称加密密钥并对文件进行加密,密文证照存储到区块链外数据库中.然后,对密文证照进行哈希计算,得到哈希值作为密文文件的ID,在智能合约中使用这个ID作为文件索引.接下来,电子证照授权给验证方进行验证,就用对方用户的公钥对K进行加密,加密后的多个K排在一起形成授权解密白名单,白名单附加在电子证照ID之后写入区块链.最后,只有得到授权的验证方才可以用自己的私钥解密得到K,再用K解密链外数据库中的密文证照,获取电子证照明文.

图5 电子证照精准授权验证

5 实验验证

5.1 实验环境

本文系统基于Hyperledger Fabric开发环境搭建,操作系统采用Ubuntu的64 b系统.运用Hyperledger Fabric开发者测试网络来配置模拟真实的网络环境.系统服务器端的主要开发语言是Java(版本JDK 1.8.0_121).

5.2 功能测试

5.2.1 单场景测试

因篇幅有限,仅以使用率较高的电子证照检索实验数据为例.如表2所示,电子证照检索服务分别为1 000,2 000,3 000个用户并发,平均事务响应时间均小于3 s,且事务均全部通过,符合性能指标.

表2 单场景测试实验结果

5.2.2 混合场景测试

混合场景测试结果如表3所示.测试采用2 000个并发线程,持续运行时间5 min.其中电子证照检索服务占26%,其他业务占10%或8%,模拟真实使用情况.平均事务响应时间均小于3 s,且事务通过率均为100%,符合性能指标.

表3 混合场景测试实验结果

5.3 安全测试

围绕数据机密性、完整性、可用性、抗依赖性、可追溯性、真实性进行测试.其中可用性测试包含在5.2节功能测试中.如表4所示,机密性、完整性、可用性、抗依赖性、可追溯性、真实性均测试通过,表明系统具有较好的安全性.

表4 安全测试实验结果

6 结束语

区块链本质上是一个基于共识机制、利用智能合约的分布式账本.本文将区块链技术与电子证照相结合,借助区块链的去中心化同步记账,可通过任意部门提供证照证明服务;基于区块链可追溯、不可篡改、透明公开的特性,解决传统信息存储系统中证照信息与操作记录的安全存储、可信共享、存证追溯问题;基于智能合约和零知识证明来保护个人及企业隐私.系统通过了功能测试和安全测试,表明本文方案具备可行性,并提升了安全性.

猜你喜欢

证照哈希合约
新建核电站项目前期的证照申请与核安全监管浅析
交通运输部海事局公布第二批可在线办理的电子证照清单
电子证照系列基础标准
福州电子证照全流程应用开先河
基于OpenCV与均值哈希算法的人脸相似识别系统
基于维度分解的哈希多维快速流分类算法
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望