APP下载

基于预言机和零知识证明的区块链数据上链方案*

2022-03-01管哿浠马兆丰叶可可罗守山段鹏飞

信息安全与通信保密 2022年10期
关键词:门限数据源合约

管哿浠,马兆丰,叶可可,罗守山,段鹏飞

(1.北京邮电大学 网络空间安全学院,北京 100876;2.中移动信息技术有限公司 研发创新中心,北京 102200)

0 引言

近年来,区块链技术的飞速发展引起了国内外的广泛关注。区块链深度融合分布式账本、共识机制、密码学、智能合约等前沿技术[1],凭借去中心化、多方共识、不可篡改、透明化、安全可信的特性在医疗[2]、人工智能[3]、大数据[4]、 货币加密[5]等领域有着广泛的应用前景,越来越多的基于区块链技术的相关应用随之产生。随着“十四五”规划的提出[6],区块链成为我国数字经济重点产业,区块链技术和相关产业飞速发展。

区块链系统中涉及的数据分为链下数据和链上数据两种类型[7]。在实际应用当中,数据不仅要从区块链系统的链上数据中获得,还要从链下的外部世界中获得。对于链上数据而言,区块链系统凭借其共识机制和密码学技术保障了其真实性和可靠性。然而,外部世界的链下数据并没有以账本的形式存储到区块链系统中。因此,区块链系统并不能保障链下数据的安全性和可靠性,这对区块链数据上链提出了很高的要求。如何保障上链数据的正确性和隐私性,是区块链技术发展的重要方向。随着区块链应用产业的不断扩展,高效、安全、可靠的新型数据上链技术亟需被提出。

目前,区块链数据上链有两方面要求,一是过滤不可信数据源提供的污染数据,防止脏数据完成上链,保障上链数据的正确性;二是隐藏可信数据源提供的有效数据的明文信息,在保证数据可用不可见的前提下,保障上链数据的隐私性和可用性。预言机是区块链系统和外部世界连接的桥梁,是一种区块链上写入链下数据的机制,能够实现对上链数据的完整性和真实性验证,保证上链数据的正确性。其主要工作是将外部应用程序接口(Application Programming Interface,API)收集到的链下数据整合并提供给智能合约,凭借签名算法认证外界世界状态的信息,从而允许确定的智能合约对不确定的外部世界做出反应。通过预言机系统进行数据源认证、数据格式转换、数据清洗[8]等过程完成可信数据上链。零知识证明作为传统隐私保护技术在保证数据真实可用的前提下,有效保护上链数据的隐私信息,同时保障了数据的可用性和隐私性。

碳市场是全球为解决经济发展所带来的环境外部性问题而产生的政策性市场[9]。为了平衡经济发展带来的环境问题,碳市场成为世界环境保护的重点阵地。目前,我国的碳市场还处于初级发展阶段,需要建立良好的碳排放机制,做好数据核查、企业碳排放量分配、碳交易市场、总体清算等工作。然而,我国原有的碳排放机制呈现参与方多、数据难以协同和各方信任缺乏等特点,其突出问题在于企业碳排放数据容易出现造假现象。这是因为企业碳排放量证明由第三方机构给出,地方政府与企业之间不存在直接的信息通道。一旦企业与第三方机构联合进行数据造假,地方政府将难以掌握企业碳排放真实情况,难以建立碳信息披露机制,不利于我国碳排放机制的实现。将区块链技术应用于碳排放机制,通过安全可信的区块链数据上链机制,在企业碳排放数据报告上链前进行数据认证,保障企业碳排放数据报告的真实有效性,避免第三方核查机构和企业勾结而导致的数据报告造假现象。同时,依靠区块链技术的共识机制和防篡改特性还能有效减少原碳排放机制因信任机制缺乏、信息不对称造成的相关问题。将区块链技术运用于我国碳排放管理,构建一个可追溯、可共享的碳排放流程的数据共享平台并建立信任机制和协同关系,有利于提高交易效率,共同促进碳市场发展[9]。

本文的研究工作如下文所述。

(1)提出基于预言机和零知识证明的区块链数据上链协议。零知识证明能够保证在不暴露数据源明文数据的前提下,提供数据的有效性证明;预言机完成对数据的认证,保障通过预言机上链的数据是真实有效的。

(2)针对我国碳排放场景,将上述协议与我国碳排放机制融合,提出一种基于预言机和零知识证明的区块链数据上链方案。该方案要上链的数据为企业碳排放合规性证明,由数据源利用零知识证明算法生成零知识证明,预言机系统进行零知识证明验证和预言机系统的数据认证。通过预言机系统认证的数据才可以完成最终的数据上链。

(3)实现本文提到的零知识证明算法和Schnorr签名算法,并对其进行功能性测试与性能分析。实验结果表明,相比于BLS签名算法,本文选择的Schnorr算法效率更高,签名验证消耗时间更少;加入零知识证明算法后,虽然运行效率降低,但极大地增强了数据的隐私安全性,在数据可用不可见的前提下,保证了数据的可用性。

1 相关工作和背景知识

1.1 相关工作

凭借区块链去中心化、多方共识、不可篡改、透明化、安全可信的特性,基于区块链技术的碳排放研究越来越多。袁莉莉等人[9]对基于区块链技术的碳排放机制进行了研究,通过区块链公开透明、可追溯、可共享等优点解决了碳排放环节中信息不对称和容易数据造假的痛点问题,实现了碳交易的可追溯、可共享,提高了碳交易效率,降低了碳交易成本。张泽[10]基于区块链智能合约技术设计了一个碳排放交易系统,实现了碳排放交易系统的基本功能,使交易数据能够记录到区块链中,相比于传统的碳交易平台更加安全透明。刘林林[11]基于区块链技术设计了一个碳排放交易模型,通过属性基加密的密码学技术提供了高强度的隐私保护能力。宋得民等人[12]提出了基于区块链的智慧碳排放管理方案,通过区块链技术进行碳排放情况的智能化、数字化管理,并运用长短期记忆神经网络算法对碳配额的购买进行合理规划,从而降低交易风险。吴花平等人[13]对基于区块链的碳排放审计流程优化进行了研究,阐述了区块链技术与碳排放审计结合的可行性,并对区块链技术环境下的碳排放审计流程进行了举例说明。

1.2 区块链技术

区块链技术最初源于中本聪在2008年发表的题为Bitcoin:A Peer-to-Peer Electronic Cash System的论文[14]。其并非凭空出现的新技术,而是由密码学技术、点对点网络(Peer to Peer,P2P)以及时间戳技术等现有技术整合而成。经过多年的技术创新,区块链已经进入到了第三阶段。最初是用于记录比特币等数字货币交易的数据结构[15]。之后随着以太坊的出现,一个开源的有智能合约功能的公共区块链平台带来了更多的应用实现。到如今,具有公开透明、可追溯特点[16]的区块链技术正在扩展到人们生活的各个方面,逐渐将去中心化的思想带到人们的生活。

1.3 零知识证明

零知识证明(Zero-Knowledge Proof,ZKP)是由S.Goldwasser、S.Micali及C.Rackoff提出的一种密码协议[17]。它能在不向验证者透露消息内容的前提下,证明消息含有某个值或者处于某个区间[18]。零知识证明可以用于解决区块链隐私保护以及数据的合法性验证等问题。本文的零知识证明协议是基于Paillier算法,用于解决碳排放合规的合法性证明。Alice需要在不透露c和C具体值的前提下向Bob证明两数之间的大小关系,其中c和C为Alice拥有的隐私信息。证明流程如下文所述。

(1)系统初始化:利用Paillier密钥生成算法,为Alice和Bob分别生成公私钥对。

(2)零知识证明生成:Alice获取Bob的公钥PKBob,根据要证明大小关系的两数c和C生成零知识证明π,并将零知识证明π发送给Bob。

(3)零知识证明验证:Bob用自己的私钥SKBob对零知识证明π进行验证,通过验证结果可以知道两数c和C之间的大小关系。

1.4 Paillier算法

Paillier算法[19]是Pascal Paillier在1999年发明的概率公钥加密算法,满足加法同态。该算法可以进行零知识证明计算。Paillier算法具体包括以下步骤。

(1)密钥生成:选择两个随机的大素数p和q,保证gcd(pq,(p− 1)(q−1))=1,gcd(,) 为两个参数的最大公约数。计算n=pq,λ=lcm((p− 1,q− 1),n为素数的乘积,λ为最小公倍数,lcm(,)可以计算两个参数的最小公倍数。选取随 机正整数且存在其中函数L(x)的定义。此时,公钥为(n,g),私钥为(λ,µ)。

(2)加密过程:对于明文m,m∈Zn,选择随机数r,满足0

(3)解密过程:利用私钥(λ,µ)进行解密,明文m=L(cλmodn2) ⋅µmodn。

1.5 预言机

区块链[20-25]系统通过智能合约代码将数据写入区块中,智能合约代码会根据预先设定的条件自动执行,保障写入数据的过程是透明的、可追踪、不可篡改。然而,区块链是一个确定性的、封闭的系统环境,智能合约中不允许存在不确定的因素。因此,区块链无法主动获取链下数据。为了建立外部数据和区块链链上数据之间的桥梁,可以通过区块链预言机进行外部数据的数据上链。

区块链预言机(Blockchain Oracle)是一种连接现实数据源和链上用户智能合约的数据服务机制。发送到区块链的数据或交易事件需要通过预言机作为确定性输入才能触发用户的智能合约。预言机是区块链与真实数据源之间的唯一数据交互接口,外部数据源的数据首先提交预言机进行聚合和汇总,然后由预言机触发用户智能合约进行数据上链。预言机的工作流程如图1所示。

图1 预言机工作流程

门限预言机属于分布式预言机的一种,是多点部署预言机的机制,数据上链不由任何单一的节点所控制,没有单点失效的风险。在门限预言机中,采用门限签名算法对预言机的上传数据进行汇总,普通预言机节点可以对与其相连的任何数据源进行认证。设系统中参与数据源认证的预言机数量为n,签名门限为t,当提交相同数据的预言机数量超过门限值t时,则认为该数据是正确的,同时,可以通过设置积分奖惩机制管理预言机节点,减少恶意预言机作恶的可能。如果预言机节点提供了不正确的数据,就会被扣除相应的积分,而积分也会对门限预言机的选取具有重要意义。

2 方案设计

2.1 方案模型

本文的基于预言机和零知识证明的区块链数据上链方案的模型如图2所示。该方案是针对碳排放应用场景提出的一种基于预言机和零知识证明的区块链数据上链方案,包括以下实体:用户节点、用户智能合约、预言机智能合约、预言机群、数据源。

图2 方案模型

(1)用户节点:将用户数据上传到区块链系统,并通过请求用户智能合约进行链下数据上链,获取所需的链下实时数据。

(2)用户智能合约:接受用户节点的链下数据上链的请求,并向预言机智能合约请求相关数据。

(3)预言机智能合约:验证预言机群传来的数据和签名,上传相关用户数据,并完成预言机群的积分管理。

(4)预言机群:向数据源请求链下实时数据,验证数据源传来的数据和零知识证明,对于正确有效的数据生成签名并上传给预言机智能合约。

(5)数据源:收到预言机的数据请求,通过传感器收集相关实时数据,并生成对应的零知识证明,上传到对应预言机。

2.2 方案描述

在该方案中,数据上链工作流程可以分为系统初始化、数据请求、数据证明、数据签名、数据上链5个阶段。各个阶段详细描述如下文所述。

(1)系统初始化:预言机节点启动服务程序,该服务可以调用第三方API,获取链下实时数据,并构造提供交易给智能合约。每个预言机节点还要利用安全参数产生全局参数,将全局参数公开,生成各自的公私钥对。

(2)数据请求:用户节点向区块链系统发出实时数据请求,通过请求用户智能合约进行链下实时数据上链,获取相关数据信息。

(3)数据证明:数据源处的传感器收集到原始数据后,根据数据请求来源的预言机的公钥,生成对应的零知识证明。将实时数据和零知识证明上传到对应的预言机。预言机通过自己的私钥进行零知识证明验证,核查验证结果与实时数据是否相符,若相符则认为该数据正确。

(4)数据签名:各个预言机对正确的数据根据自己的私钥生成签名,上传到门限预言机。门限预言机进行签名验证,验证通过的数据才能够进行门限统计。当验证通过的相同数据的数量达到门限值时,则认为该数据已经通过预言机群的验证。将正确的数据生成签名并上传到预言机智能合约,由预言机智能合约进行签名验证,允许验证通过的数据进行数据上链。同时预言机智能合约还要完成预言机群的积分管理。

(5)数据上链:若用户智能合约将预言机智能合约传来的数据进行上链,则认为该数据已经通过验证。

2.3 算法设计

2.3.1 零知识证明算法设计

本文将零知识证明算法用于两数的大小关系证明,对于两数c和C进行大小比较,生成并上传大小关系证明E,算法流程具体如下文所述。

(1)密钥初始化GenKey(p,q,i)。

Step1 该算法由预言机节点i执行,大素数p和q的选择要保证gcd(pq,(p− 1)(q− 1))=1,且n=pq。

Step2 选取随机正整数g,且存在µ=(L(gλmodn2))−1,其中函数L(x)的定义为。

Step3 输出私钥SKi= (λ,µ)和公钥PKi,并将公钥进行公开。

(2)证明生成Prove(c,C,PKi)。

Step1 该算法由数据源节点执行,传感器收集碳排放量数据c,与碳排放量阈值C和预言机i的公钥PKi作为输入。

Step2 拆分c=I1/J1,C=I2/J2。

Step3 选择随机数r1,满足 0

Step4 选择随机数r2,满足 0

Step5 用上述参数生成零知识证明E,计算:

式中:I1,J1,I2,J2为整数,是拆分过程的中间值;EPKi(I1)是对I1的数据加密结果;是对n−J1的数据加密结果;PKi为预言机节点i的公钥。

(3)证明验证Verify(E,SKi,m)。

Step1 该算法由预言机节点i执行,由零知识证明E、私钥SKi和碳排放量合规性信息m作为输入,进行零知识证明验证。

Step2 利用私钥SKi,计算:

式中:X为零知识证明的验证结果;DSKi(E)是对E的数据解密结果;SKi为预言机节点i的私钥。

Step3 验证两数的大小关系,若X> 0,则表示c>C;若X< 0,则表示c

Step4 通过验证结果X来判断碳排放量合规性信息m的正确性。

2.3.2 门限签名算法设计

门限签名算法适用于分布式预言机的场景,用于预言机系统进行数据认证,防止恶意预言机节点上传脏数据到区块链系统。本文选择Schnorr签名算法用于单个预言机节点对数据的签名,签名生成后上传至门限预言机。门限预言机收到超过门限值个相同数据后,认为该数据是正确的。此时,门限预言机对该数据签名并上传到区块链中进行上链。算法具体流程如下文所述。

(1)密钥生成initPara。

Step1 此算法由预言机节点i执行,选择两个随机的大素数p和q,且q是p的素因子。选取整数a,使得aq= 1 (modp),a,p,q被系统所有节点共同拥有,是系统的初始参数。

Step2 预言机节点i生成私钥ski,0

(2)数据签名GenSign。

Step1 此算法由预言机节点i执行,选择随机整数r,0

Step2 将R附在消息m后面进行Hash计算,h=H(m|R),h为哈希值。

Step3 利用预言机节点i的私钥ski,计算s= (r+ski×h) (modp),s为签名中间值。

Step4 生成对消息m的签名(m,h,s)。

(3)签名验证CheckSign。

Step1 此算法由门限预言机执行,获取预言机节点i的公钥pki。

(4)门限触发。

Step1 该算法由门限预言机执行,设定该算法门限值为t。

Step2 当签名验证通过的相同数据的个数达到门限值t时,则认为该数据是正确的,经过了预言机群认证。

Step3 通过门限预言机的私钥sk对该数据进行签名,并上传到区块链系统进行上链。

2.4 算法正确性验证

2.4.1 零知识证明算法正确性验证

由同态加密方案的性质,可以计算出:

式中:E(I1)是对I1的数据加密结果;E(n−J1)是对n−J1的数据加密结果;g为生成元;n为加密参数。

将上述结果进行解密可以得到:

因为

上述结果对模n取余可得:

又因为

由于J1J2> 0,所以若m> 0,则c>C;若m< 0,则c

2.4.2 Schnorr签名算法正确性验证

签名验证者收到(m,h,s)后,可以计算:

式中:R′为验证过程的中间值;a为系统参数;r为随机数。

所以

由此可验证消息m没有在传输过程中被篡改,且消息m的发送方一定为拥有对应私钥的用户。

2.5 具体应用方案

在碳排放应用场景中,政府部门需要向碳排放企业获取碳排放合规性报告,完成监管和审查企业碳排放数据的工作。我国碳排放数据的报告对象是温室气体,主要分为二氧化碳、甲烷、一氧化二氮。碳排放企业需要通过传感器收集核查所有温室气体排放数据,并与国家规定企业碳排放限额作比较,生成对应的碳排放量合规性证明并进行数据上链,接受政府部门的监管和审查。

针对碳排放应用,本文详细设计基于预言机和零知识证明的区块链数据上链方案。方案中涉及的相关参数由表1给出。具体应用方案流程如图3所示。

图3 方案流程

表1 方案相关参数

首先,政府部门向碳排放企业请求碳排放合规性证明。碳排放企业向用户智能合约发出碳排放量合规信息的数据请求,调用预言机系统收集企业碳排放量数据;然后,预言机系统将积分值最高者选为门限预言机,多个预言机向数据源处请求数据信息;数据源处的传感器收集原始数据并生成零知识证明,上传给对应预言机;预言机收到信息后验证零知识证明的正确性,选择正确的信息进行签名,发送正确的数据和签名给签名门限预言机;门限预言机接收数据后先进行签名验证,然后在收到门限值个相同数据时认为该数据可以进行上链,生成对应的签名,最后将收集的链下正确数据和签名返回到链上智能合约,并传递给碳排放企业和政府部门。方案具体流程如下文所述。

(1)碳排放企业和政府部门请求链下碳排放数据。触发用户智能合约,请求获取数据源处碳排放量的合规情况。

(2)向预言机系统请求链下数据。用户智能合约向预言机群发起数据请求,收集企业碳排放量的合规信息。

(3)预言机获取链下数据。预言机接收到用户智能合约消息后,向多个外部数据源获取碳排放量合规信息。

(4)上传零知识证明。接受来自编号为i的预言机的请求,传感器收集当月碳排放量c,并根据碳排放量阈值C和预言机i的公钥PKi生成对应的零知识证明,向预言机i上传碳排放量合规信息m和零知识证明E。

(5)预言机验证零知识证明。预言机i根据私钥SKi对零知识证明E进行验证,计算。如果e≤ 0,则证明该数据源处碳排放量合规;如果e> 0,则证明该数据源处碳排放量不合规。当零知识证明的结果与碳排放量合规信息m保持一致时,则认为该信息m正确。

(6)预言机发送数据和签名。用积分制度来规范预言机的行为(每个预言机的积分初始值为0,每发送一次正确数据积分值加1),选出积分值最高的节点,将其称为门限预言机。预言机i对验证通过的信息m生成签名,根据私钥ski和随机整数ri,计算Ri=ari(modp),。将签名(m,hi,si,i)发送给门限预言机。(7)门限预言机将正确的数据和签名上链。门限预言机不断地接收预言机传送来的数据和签名等信息。接收预言机i发送来的数据和签名(m,hi,si,i),进行验证,获取预言机i的公钥pki,计算,验证是否等于hi。若通过验证的数据m数量达到t,则认为该数据m是正确的,根据门限预言机的私钥sk,生成签名(m,h,s,ID,ID”)发送给预言机智能合约。

(8)预言机智能合约调用用户智能合约。预言机智能合约获取门限预言机的公钥pk, 对发送来的签名和数据(m,h,s,ID,ID”)进行验证。若验证正确,则发送正确数据和签名(,,)mhs给用户智能合约。对发送正确数据的预言机积分值加1,对发送错误数据的预言机积分值减1。

(9)用户智能合约将数据返回给碳排放企业和政府部门。预言机智能合约触发用户智能合约后,用户智能合约接收到数据和签名(,,)mhs, 随后将数据返回给碳排放企业和政府部门,碳排放企业和政府部门收到所需的链下实时碳排放量合规数据。

3 安全性与可行性分析

通过方案设计部分提出的方案,传感器收集的碳排放量具体值在上传到预言机节点之前,会先生成针对碳排放合规性的零知识证明。通过仅上传该零知识证明,可以在避免向预言机节点透露企业碳排放量具体值的前提下,证明该企业碳排放量符合规定,保护了企业碳排放数据的隐私性。在预言机系统中,通过门限签名的方式,只有在门限预言机收到达到门限值数量的相同数据时,才认定该数据是正确的。将该数据用门限预言机的私钥进行签名,代表正确性经过了预言机系统的认证。门限预言机在上传数据和签名的同时还要分别上传提供正确数据和错误数据的预言机编号,通过积分管理制度来激励惩罚预言机节点,可以筛选出可信的预言机节点并且提高预言机节点的效率。零知识证明和相关签名的密钥采用隐蔽信道传输,可实现密钥的不可篡改性、安全性和完整性。区块链系统通过该数据上链方案,保障了数据的保密性、完整性、可用性、不可篡改性。

4 实验分析

4.1 实验环境

本方案的仿真实验在虚拟机中进行,采用的虚拟机是VMware Workstation Pro。在虚拟机中,采用Ubuntu20.04操作系统,处理器内核4个,内存8 GB。智能合约在Remix上编译,环境选择Injected Web3链接MetaMask的账户,将智能合约在本地Ganache私有链上部署。仿真数据源为5台搭载SQL Server的数据库服务器。使用Java语言对零知识证明算法、Schnorr算法进行模拟仿真。

4.2 加入零知识证明后的运行效率对比

为了测试本文方案中,加入零知识证明后的Schnorr签名算法的运行效率,将加入零知识证明的Schnorr签名算法与普通Schnorr签名算法在相同硬件条件下,分别设置预言机节点为5、10、15、20,对两种算法进行多次模拟仿真实验,对比结果如图4所示。

图4 两种算法的运行时间

从图4中可以看出,加入零知识证明后的Schnorr算法运行时间明显变高,这是因为零知识证明生成需要一定的时间。但与此同时,零知识证明算法可以带来对数据隐私安全的保护,让数据在可用不可见的情况下,保留数据的可用性。

4.3 与BLS签名算法的签名验证效率对比

为了验证Schnorr签名算法的可行性,设计了Schnorr签名算法与BLS签名算法的对照实验,在同等硬件条件下,分别测试两种签名算法的签名验证效率,对比结果如表2所示。

表2 两种签名算法效率对比

在预言机节点为15个,签名数据大小为64 Byte的情况下,相比于BLS签名算法,Schnorr签名算法在相同硬件条件下的平均签名时间和平均验证时间都更少,所以Schnorr签名算法的运行效率更高。

5 结语

本文在碳排放的应用场景下,引入区块链技术平台,针对碳排放量合规性信息收集,提出了一种基于预言机和零知识证明的区块链数据上链方案。引入零知识证明算法,生成碳排放量合规性证明,解决了区块链信息明文存储造成的隐私相关问题,让企业在不透露具体碳排放量数据的前提下,证明企业碳排放量合规。通过预言机系统进行数据认证和数据清洗,避免单一预言机可能存在恶意节点,上传脏数据到区块链系统。区块链系统利用该方案进行数据上链,保障了数据的保密性、完整性、可用性、不可篡改性。据实验结果表明,相比于BLS签名算法,本文选择的Schnorr算法效率更高,签名验证消耗时间更少,加入零知识证明算法后,虽然运行效率降低,但极大地增强了数据的隐私安全性,在数据可用不可见的前提下,保证了数据的可用性。

猜你喜欢

门限数据源合约
基于规则的HEV逻辑门限控制策略
随机失效门限下指数退化轨道模型的分析与应用
VoLTE感知智能优化
基于Neyman-Pearson准则的自适应门限干扰抑制算法*
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
分布式异构数据源标准化查询设计与实现
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望