基于区块链智能合约的个人征信隐私保护方案

2020-07-21 14:17陈丽燕芮廷先吕光金
计算机工程 2020年7期
关键词:合约区块条件

陈丽燕,芮廷先,吕光金

(上海财经大学浙江学院 经济与信息管理系,浙江 金华 321013)

0 概述

随着信息技术的不断发展,我国数字政府建设取得明显进步,正朝着智能化、平台化的方向快速迈进。在2018年,浙江省委省政府就已做出了建设数字化政府的重大战略部署,其中很重要的一个方面就是社会信用体系的建设,通过加快构建以信用为核心的社会信用评价体系,推进政府数字化办公,营造良好信用环境。政府数字化转型的过程中需要形成数据共享,整合跨部门、跨区域的数据建立健全的社会信用体系[1],但在社会信用体系的建设过程中存在个人隐私泄露的情况,因此个人信息的隐私保护是亟需解决的问题[2]。

近年来,区块链技术得到快速发展,由于其使用多种密码学核心技术,如椭圆曲线加密算法、抗量子加密算法[3]等,具有相对安全、去中心化等特性,因此将其应用到隐私保护方面的研究越来越多[4-6]。文献[7-8]提出将区块链技术应用到个人征信制度中。文献[9]提出结合区块链和大数据来构建信用体系,通过整合各类地方数据克服传统信用体系的弊端。文献[10]将区块链技术应用到知识产权保护领域,利用区块链共识机制提出一个知识产权隐私保护模型。文献[11]将区块链技术用于电子健康记录隐私方面,提出一个电子健康记录隐私保护方案。文献[12]将区块链技术应用到医疗数据中,实现各医疗机构间的数据共享。但由于目前数字化政府建设仍处于起步阶段,社会信用体系建设也在筹备过程中并未投入使用,因此针对社会信用体系建设的个人征信隐私保护方面的研究相对较少,而将区块链技术应用到个人征信隐私保护这一领域的研究则具有非常高的研究价值及实用性。为此,本文基于区块链智能合约提出个人征信隐私保护方案。

1 相关理论知识

1.1 区块链技术

区块链起源于比特币[13],其是一种按照时间顺序将数据消息以区块的形式组织处理并以密码学方式保证数据不可篡改、不可伪造的分布式账本(数据库)技术。区块链主要的底层技术包括密码学相关技术、共识机制、智能合约、分布式存储等。区块链技术是多种计算机技术相结合的产物[14],本质上是一种去中心化的分布式账本数据库技术,其将数据区块以顺序相连的方式组合成一种链式数据结构,通过点对点网络共享数据账本,底层是由密码学方法产生的一串串相关联的数据块。所有的参与节点共同维护区块链,其中每个节点会与相邻节点定期交换信息,从而保证全局账本信息的同步性。因此,区块链技术具有去中心化、去信任化、规则透明、集体维护、不可篡改等特性[15]。为使各节点的隐私数据不被窃取,区块链技术使用数据签名算法保护隐私,如椭圆曲线签名算法、抗量子密码算法、环签名算法等。

1.1.1 共识机制

区块链技术采用共识机制来确保每个节点都有一个唯一公认的全局账本[16],共识机制主要负责选取并验证相关节点。共识机制保障了区块链信任建立的去中心化,常见的共识机制包括Proof of Work[17-18]、Proof of Stake[19-21]、Proof of Space[22]、Proof of Luck[23]、Proof of Elapsed Time[24]、Delegated Proof of Stake[25]、Proof of Useful Work[26]、联盟链Quorum[27]等。本文方案利用区块链技术共识机制中的联盟链Quorum共识算法建立信任方案。该算法基于投票机制,规定部分节点具有投票权,并要求节点要达到一定的投票量才能够被添加到区块链中。

1.1.2 以太坊

以太坊是一个可以执行智能合约的去中心化应用平台。以太坊虚拟机(Environment Virtual Machine,EVM)是以太坊中智能合约的运行环境,支持复杂的逻辑控制,其实质是交易消息转移系统。在智能合约调用过程中,由于每个节点都会进行信息交易,因此全节点进行信息交易会付出巨大的合约执行代价,该代价以gas作为单位计数,上限为gas limit,只有当消耗总数小于gas limit时,交易才会被执行,否则交易失败。

1.1.3 智能合约

目前,业界对智能合约没有统一的定义,BUTERIN[28]指出智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议,以太坊的智能合约是以区块链技术为支撑的数字信息程序。SZABO[29]指出智能合约是一种可以执行合约条款的计算机交易协议,由于智能合约的本质是程序代码,其中涉及到一些算法和商业逻辑,其将现实应用过程中的复杂关系程序化,只要投入使用即可实现自动化执行,而区块链技术为实现智能合约提供了必备条件[30]。

1.2 密码学技术

1.2.1 同态加密

同态加密是一种允许直接对密文进行操作的加密变换技术[31]。例如,两个密文M(x)、M(y)满足M(x)⊗M(y)=M(x⊗y)计算公式,其中⊗表示加减乘除运算,因此将同时满足加减乘除的同态运算称为全同态加密。

1.2.2 Paillier同态加密

PAILLIER于1999年提出概率公钥加密系统,称为Paillier加密[32]。Paillier加密是一种同态加密算法,其基于复合剩余类的困难问题,满足加法和数乘同态。该算法的具体过程如下:

3)接收者对收到的密文c进行解密,计算m=D(c)=L(cλmodn2)·μmodn得到明文。

2 个人征信隐私保护方案

本节介绍基于区块链智能合约的个人征信隐私保护方案,具体包括征信系统模型和智能合约,同时介绍本文方案涉及的访问节点添加、节点权限设置和条件匹配等具体操作。

2.1 征信系统模型

本文征信系统模型如图1所示,其中主要包括征信个人、区块链征信系统、征信访问用户和征信信息提供商。

图1 征信系统模型

1)征信个人

在社会信用体系的建设过程中,现已对企业、自然人、社会组织、事业单位、政府机构这5类主体的信用信息完成归集,建立信用档案并集合数据特征开展公共信用评价,本文中统一将这5类主体称为征信个人。征信个人可以通过智能合约查看自己的征信信息,对于部分符合权限的信息,征信个人可以更改其他用户对这些信息的访问权限,实现征信个人对自己征信信息的访问控制权。

2)区块链征信系统

在一个完整的社会信用体系中,除了征信个人,还应包含征信平台,即社会信用体系中整合数据的系统,在此使用区块链技术进行数据整合,其中投票节点是征信系统内部节点,用于验证节点的合法性。

3)征信信息提供商

在整合各方数据的过程中,将这些数据的提供者称为征信信息提供商,主要包括事业单位、社会组织、政府机构这3类主体,在此征信信息提供商不是特定的某个节点而是一批节点,其需要接入政府征信系统的各部门,如交管部门提供的交通违章信息、银行系统提供的个人信贷信息、通信部门提供的个人通信信息、税务部门提供的个人税务信息、公安系统提供的个人信息等。征信信息提供商向征信系统提供个人征信信息。

4)征信访问用户

征信访问用户是指由于某种原因需要通过征信系统查询个人征信信息的主体,征信访问用户包含和征信个人一样的5类主体。

在该征信系统模型中,所有个人征信信息都存在征信系统的数据库中,征信系统会将对称加密秘钥和征信个人的部分信息存到区块链中以供访问,征信个人可以通过区块链的智能合约技术获取征信信息的访问权限,利用智能合约技术获取加密秘钥对征信信息进行解密。投票节点使用联盟链Quorum算法判断新节点的合法性。

政府在征信系统的建设过程中完成数据的归集,征信信息提供商通过数据接口将数据归集到区块链征信系统中。人们在生活中也经常会用到征信系统的数据,如用户A需要向银行B提出贷款申请,此时银行B只需向征信系统查询用户A的征信信息即可判断是否批准这笔贷款申请。在这一过程中,用户A就是征信个人、银行B就是征信访问用户。

2.2 区块链智能合约

本文方案中涉及的智能合约主要具有共识判断、节点分类、历史信息记录、所有权判断、权限设置和条件匹配等功能,具体如下:

1)共识判断合约。共识判断合约中包含投票节点的以太坊地址,其利用联盟链Quorum算法进行共识判断。Quorum算法是在区块链上对节点进行投票以判断合法性的算法,一旦发现有新节点加入,投票节点就会验证注册节点的合法性,因此该功能可以减少恶意注册攻击,有效避免重复注册的情况。

2)节点分类合约。节点分类合约中包含所有节点的类别信息,在本文方案中节点类型包括征信个人、征信系统、征信访问用户3种,因此共识合约可以验证节点的合法性,而分类合约可以区分节点类型,合约中包含类型标志和节点以太坊地址。

3)历史信息记录合约。历史信息记录合约中包含与该节点有关的其他节点信息,还包含所有权合约的地址。

4)所有权判断合约。所有权判断合约中存放了征信个人的身份信息和征信信息,同时存放了权限合约的地址。所有权合约可以跟踪到征信系统中的征信信息,还可以通过查询链和征信个人的哈希值建立数据的完整性映射。

5)权限设置合约。权限设置合约中存放了节点权限有关的信息,根据节点类型及具体信息定义相关权限。本文方案将征信系统与实际使用情况相结合划分4个级别的权限:

(1)读取权限,征信个人和征信系统具有征信个人征信信息读取权限。

(2)所有权权限,征信个人和征信系统具有征信个人征信信息的所有权权限,该权限级别最高。

(3)写入权限,征信信息供应商具有征信信息的写入权限。

(4)盲读取权限,征信访问用户只能读取征信个人征信信息的密文。

6)条件匹配合约。条件匹配合约中包含征信个人的部分征信信息和征信访问用户的条件表,并且能根据条件表实现自动条件匹配功能。其中征信个人的信息包括以太坊地址、条件匹配的计算结果、征信消息的哈希值、加密后的征信个人信息等。

该智能合约的功能类似于征信个人向银行提出贷款申请,银行需要对贷款用户的条件进行审核,此时银行为征信访问用户,银行通过访问条件匹配合约中的计算结果并将其发送给条件匹配合约,若符合条件,则银行会得到条件匹配成功的结果,批准贷款申请;若条件不符合,则拒绝申请。在此银行方无法得知申请个人的征信具体明文信息。

2.3 征信访问用户添加

添加征信访问用户的具体步骤如下:

1)征信访问用户向征信个人提出访问请求,同时将自己的以太坊地址发送给征信个人。

2)征信个人批准请求,将以太坊地址发送给节点分类合约。

3)节点分类合约在数据库中查找该地址,如果已经存在且类别一样,则操作完成;否则节点分类合约将该地址发送给共识判断合约,共识判断合约会对此进行投票验证。

4)若投票验证成功,则访问节点添加完成,否则添加失败。

2.4 征信访问用户权限设置

为保护征信个人的征信信息隐私权,征信访问用户不能获取征信个人的征信信息明文,只能具有读取征信信息密文的权限,即盲权限。在一般情况下,征信个人具有征信信息的所有权,任何形式的权限授权都需要经过征信个人的同意。

授权过程如图2所示,具体步骤如下:

1)征信访问用户先向征信个人发起授权请求。

2)征信个人收到申请后向历史信息记录合约查询访问节点的权限。

3)历史信息记录合约将所有权判断合约信息发送给征信个人。

4)征信个人向所有权判断合约申请权限设置合约地址。

5)所有权判断合约将权限设置合约地址发送给征信个人。

6)征信个人向权限设置合约发起更改权限请求。

7)权限设置合约在收到修改权限请求后,先查询节点信息:如果不存在该节点信息,则在合约中保存该征信访问用户的相关信息,包括地址和权限;如果节点已经存在,则比较权限是否与请求权限相同,权限不同更新权限,否则无需操作。更改权限的申请者可以是征信系统,但对于某些征信信息,征信系统需要先询问征信个人的意愿才能更改征信访问用户权限。

图2 授权过程

2.5 征信访问用户条件匹配

为解决传统征信信息核实过程中征信访问用户需查看征信个人的征信信息明文问题,本文提出一种基于区块链的条件自动匹配方案。该方案利用Paillier同态加密算法使得征信访问用户持有密钥对。在该方案中,征信访问用户会根据征信个人的申请情况创建特有的征信条件申请表,为保证合约信息的不可篡改性,征信条件申请表一旦创建就无法改变,如果要调用条件匹配合约,则需要知道合约地址。

在条件匹配过程中,征信访问用户仅与征信系统、条件匹配合约进行交互。下文以征信个人向银行提出申请为例解释条件匹配过程,其中,征信个人为贷款申请人,银行为征信访问用户,并且假设政府征信平台已经建设完成,所有个人用户的征信信息已汇总于征信系统,具体匹配步骤如下:

1)贷款申请人向银行提出贷款申请,银行根据申请人申请的贷款金额生成贷款申请条件表。

2)银行向征信系统提出访问个人征信信息的请求。

3)征信系统向征信个人确认银行访问权限,在得到征信个人授权后,征信系统响应请求。

4)银行将贷款申请条件表加密为密文E(M1),E(M2),…,E(Mn)的形式,再将密文发送给征信系统。

5)征信系统创建条件匹配合约,计算由对称加密密钥加密的征信信息的哈希值,通过E(M1)×E(M)-1,E(M2)×E(M)-1,…,E(Mn)×E(M)-1计算密文匹配结果,并将结果乱序放入数组A[n]中,将征信个人的以太坊地址、计算的哈希值和数组A[n]存入条件匹配合约中。

当条件匹配合约建立完成后,银行访问条件匹配合约获取数组A[n]中的计算结果,使用私钥进行解密,如果解密结果为0,则表示两个明文相同,符合贷款条件,同意贷款申请;否则表示贷款申请人不符合贷款条件,拒绝贷款申请。由于计算结果是乱序存放于数组A[n]中,因此银行无法得知哪些条件匹配与失配,保护了征信个人的征信信息隐私。

3 方案性能分析

3.1 正确性分析

当征信访问用户从条件匹配合约中获取数组A[n]后,可使用私钥对数组内的数据进行解密以验证数据的正确性。

由于本文方案中使用的是同态加密算法,因此征信访问用户使用私钥可以解密成功,具体证明过程如下:E(M)×E(M1)=(gm×rn1)×(gm1×rn2)-1

modn2=(gm-m1×gn1-n2)modn2=E(M-M1),因此,若M=M1,则D(E(M)×E(M1)-1)=D(M-M1)=0,从而验证了本文方案的正确性。

3.2 安全性分析

由于征信访问用户无法得知征信个人条件表上的征信信息,其原因为征信系统是将征信访问用户所访问的计算结果乱序发回给征信访问用户,若要得到明文是非常困难的,再加上结果为乱序存储于数组A[n]中,即使能获得明文的概率也只有1/n(n为征信个人申请表上的征信信息条数),因此本文方案的安全性非常高。

3.3 匿名性分析

由于Paillier加密算法是安全的,若没有私钥则无法从E(Mi)中获取关于Mi中的任何一条明文信息,否则合数剩余类困难问题可解将与之相矛盾,因此征信系统无法利用E(M1),E(M2),…,E(Mn)推断出征信访问用户设置的条件申请表中的明文信息M1,M2,…,Mn。

3.4 隐私保护分析

在本文方案中征信个人的征信信息只有存储方已知,征信系统中的所有明文消息其他任何一方都无法得知。对于征信个人无权限的征信信息,征信个人无法得知。对于征信访问用户,只有在征信个人同意授权的情况下,才具有访问权限,并且在访问相对应征信信息的过程中,只能得到征信个人相对应征信信息的一个比对结果,无法得知具体的征信信息,因此保护了征信个人的征信信息隐私。此外,征信系统无法通过征信访问用户的访问申请表推断出征信访问用户所查询的征信信息内容,也无法得知征信个人出于何种目的查询征信信息,因此保护了征信个人的隐私。综上所述,本文方案可以从多个角度保护征信个人的征信信息隐私。

3.5 运行成本分析

本文方案在建立自动条件匹配合约时,在区块链外的主要操作是征信访问用户申请,征信平台使用同态加密计算,其运行成本较低。在区块链上的操作主要是合约数据存储与检索,而数据的合约执行代价gas由所操作的数据大小决定,其代价小于gas limit的一半,因此合约交易能够执行,验证了本文方案具有较低的运行成本。

4 结束语

本文基于区块链的智能合约技术,提出个人征信隐私保护方案,具体包括征信系统模型和智能合约设计,同时分析本文方案所涉及的访问节点添加、节点权限设置等具体操作。通过对征信个人隐私的多方保护,实现征信访问用户条件的自动匹配。由于本文方案涉及合约较多,因此后续将通过加强消息转移过程中的隐私保护以及提高同态加密算法的执行效率,进一步优化该方案的整体运行效率。

猜你喜欢
合约区块条件
排除多余的条件
选择合适的条件
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
区块链+媒体业的N种可能
读懂区块链
为什么夏天的雨最多
认同或对抗——论执政条件下的党群关系互动
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望