李 莉,杜慧娜,李 涛
(东北林业大学 信息与计算机工程学院,哈尔滨 150040)
溯源系统通常被用来展示商品生产各环节的状态信息,但是,供应链的复杂性使得传统溯源系统缺乏透明度以及存在可追溯性差、数据不同步等问题[1-2]。区块链作为一种分布式账本技术[3],其去中心化、难篡改等特点能在溯源系统的建立中发挥重要作用[4-5]。但是,在目前的区块链溯源系统中,多采用将完全可见数据上链的方法以保证数据的可追溯性,这带来了一定的用户隐私泄露风险。过多的隐私保护又将使得交易不可监管,这在需要监管机构介入的溯源应用中不可接受[6-7],因此,在对交易双方身份进行有效监管的同时实现用户的隐私保护成为一个研究热点。
在区块链隐私保护方面,MONERO[8]通过环签名技术,使用签名用户与其他用户的公钥对交易信息进行签名,使得攻击者无法从签名中确定交易发起者的身份,从而保护了用户的隐私。零币使用zk-SNARKs零知识证明[9]对交易信息进行完全隐藏,有效地保护了信息的隐匿性。李龚亮等[10]提出一种既能对交易进行加密又能支持零知识证明的隐私保护方案,实现了交易数据的完全隐匿。但是,以上方法多采用将数据完全隐藏的方式来保护用户的隐私安全,这在需要监管介入的溯源系统中并不适用。
在区块链的用户身份监管和访问权限控制方面,张思亮等[11]提出一种基于环签名、零知识证明、隐私地址的可追踪账本交易隐私保护方案,该方案可以有效地实现监管人对用户身份的追踪。李佩丽等[12]对群签名进行改进,实现了交易双方身份的监管。王震等[13]通过监管方对用户的匿名证书进行解密从而实现监管。姜轶涵等[14]基于零知识证明、同态加密等,设计一种可以对一段时间内所有用户的交易金额进行审计的方案,从而实现了交易内容的追踪。谢绒娜[15]与田有亮等[16]通过访问权限细粒度划分来提高数据安全性。
经过分析可以发现:现存溯源系统研究大多将完全可见的数据上链以保证数据的可溯源性,这增加了用户隐私泄露的可能性;现存隐私保护技术大多采用将数据完全隐匿的方式来保证用户的隐私安全,但是,在要求数据可追溯与监管的溯源系统中并不适用;现存可监管方案大多通过引入单管理员角色进行交易或数据监管,此时管理员拥有绝对的权限,如果管理员是恶意的,可能导致用户隐私泄露。
本文提出一种基于群签名与属性加密的双重隐私保护方案,以解决区块链溯源中隐私保护与数据可追溯性难以平衡的问题。使用群签名实现用户身份的加密与监管,利用可选择的属性加密方案,使得用户自主选择是否对部分隐私数据进行相应的属性加密从而实现数据访问权限控制。对群签名进行改进,在区块链系统中使用多群管理员机制群签名策略,以解决传统群签名在区块链溯源用户监管方面的不足。
本文相关技术背景介绍如下:
1)BBS04 群签名。在群签名方案中[17],一个群体中的任何一个群成员都可以以匿名的形式代表群体对消息进行签名,且群签名可公开验证。BONEH 等[18]于2004 年提出一种短群签名方案,该方案构造了强度小于200 Byte 的签名,安全性基于具有双线性映射群的q-SDH,相对于RAS 签名更简单且更短。BBS04 群签名的简短性可节省链上存储空间,且其可追踪性能够很好地应用于有监管者介入的区块链溯源系统。但是,单个群管理员拥有至高的权限,一旦其产生恶意想法,有可能导致数据泄露,威胁用户的隐私安全。因此,需要引入多群管理员机制,使得群管理员之间相互制约,这也符合区块链的去中心化原则。
2)DKSAP 隐私地址协议。隐私地址协议是一种用于保护交易接收方隐私安全的技术。发送方在创建交易时为交易接收方随机生成一个接收地址,且该隐私地址可以被交易接收方所计算与打开。通过每次交易来更换用户的交易接收地址,可以更好地保护接收方的隐私安全。本文使用隐私地址保护交易接收方的隐私安全,攻击者无法通过数据分析来获取交易接收方的信息,且群管理员可以对接收方进行监管。
3)Bulletproofs 零知识证明。Bulletproofs[19]是BUNZ 等于2018 年提出的一种知识系统的零知识证明,可用于证明一个秘密的存在。Bulletproofs 支持范围证明的聚合,可证明m个承诺存在于给定的范围内,其边际成本较低且不需要可信设置。本文所提方案应用Bulletproofs 零知识的范围证明,对用户的撤销状态进行范围证明,通过证明所验证的撤销标记是否在[0,1]范围内来判断用户的撤销状态。
4)CP-ABE 属性加密。属性加密是一种新型的加密技术[20],其将用户的访问权限与用户的身份属性相关联,为密文设定访问结构,只有属性基与访问结构相对应才可以对数据进行访问。
本文隐私保护方案的目标如下:
1)实现用户隐私保护与用户可监管之间的平衡。现存溯源系统大多将完全透明的数据上链以保证数据的可追溯与可监管,该方式提高了用户信息及数据泄露的可能性,本文方案考虑隐私保护与用户监管2 个方面,目标是在保护用户隐私的同时实现用户的监管。
2)改进目前溯源系统中的数据可溯源访问机制。本文方案的目标是在保护用户隐私的同时实现数据的可追溯,应用属性加密“一对多”的数据细粒度访问特点,使得溯源系统中的数据可被多人访问又不被所有人可见。
3)引入监管角色,在实现用户身份追踪的同时保证用户隐私。鉴于溯源系统需要监管介入且监管机构不唯一的特性,本文应用群签名实现用户的监管,对群签名进行改进,设置多群管理员机制,解决单群管理员权限过高所带来的隐私泄露风险,在实现可监管的同时提高方案的安全性。同时,将隐私地址协议与群签名相融合,实现交易接收方追踪。
本文方案要实现溯源系统中交易双方身份的追踪,同时设置多群管理员机制以符合区块链的去中心化原则。根据溯源系统中的具体场景设置4 种角色,分别是签名者、验证者、群管理员、数据查看者:签名者对溯源信息进行签名;验证者验证消息是否为群成员所签并对数据进行广播;群管理员为用户生成私钥并对签名者的身份进行追踪;数据查看者查看链上溯源数据。
本文方案提供双重隐私保护:第一重使用群签名为用户提供身份隐私保护同时实现用户身份的可追踪;第二重使用属性加密为用户与溯源数据设置特定的访问结构,实现数据的细粒度访问控制。方案框架如图1 所示。
本文方案的实现步骤具体如下:
步骤1根据共识机制选出一定数量的群管理员并为其分配密钥。
步骤2系统初始化。生成群公钥、群管理员私钥、属性密钥、监管密钥等。
步骤3用户注册。系统为用户生成公钥、属性密钥,各群管理员为用户生成私钥片段,用户通过计算获得自己的私钥。
步骤4生成上链数据。交易发起方调用智能合约选择是否为溯源信息设置访问结构,并申请将溯源信息广播到区块链。
步骤5验证消息合法性。验证者对交易发起方的身份进行验证并执行验证通过的广播请求。
步骤6身份追踪。群管理员进行投票决定是否对交易进行追踪,如果投票值大于群管理员数量的2/3,则对交易进行追踪。
步骤7数据共享。用户访问数据信息,如果用户设置了属性加密,在用户属性密钥与数据访问结构一致时允许访问;如果没有设置属性加密,则可直接对数据进行访问。
系统初始化主要完成2 个任务,即初始化系统相关属性并为监管角色(群管理员)生成相关密钥。具体步骤如下:
1)在共识阶段选出t(t≥1)个群管理员,系统为各群管理员分发公钥Y。
2)随机选取G的生成元g2,g1由同构映射ψ(g2)产生。选 取,令u,v∈,每个GM 的密钥为。
3)设置系统属性集为Sj={s1,s2,…,sn}。
4)初始化一个空的撤销列表RL 与投票值Tr,其中,RL 用来存储撤销用户的撤销标记,Tr用来收集其他管理员在追踪问题上的意见(支持与不支持)。
5)生成群公钥为:
gpk=(g1,g2,h,u,v,{wj|1≤j≤t})
群追踪密钥为:
gmsk=(δ1,δ2)
用户提出注册申请,各群管理员为用户生成私钥片段并返回,用户通过计算获得自己的私钥与ID。具体过程如下:
1)用户i向所有群管理员提出注册申请,并提交用户属性集Si={s1,s2,…,sn}。
2)各群管理员生成用户i的私钥片段,x∈Zp,并通过安全信道发送给用户i,用户i计算私钥。
3)用户计算自己的ID,IDi=。
对溯源信息进行处理,假设用户Bob 向用户Alice 购买产品,相关数据为m,m包含商品的生产日期、生产地点、原料、交易金额等信息,Bob 与Alice的密钥对分别为(IDAlice,AAlice)和(IDBob,ABob)。上链数据生成过程如下:
1)用户Alice 生成一个临时密钥对(R,r),其中,R=rG,该密钥对随交易传输,同时根据ty=H(r·IDBob)=H(IDBob·R),计算共享秘密ty并使用群公钥进行加密,发送方使用生成消息接收方所共有的临时地址S.A。
3)使用Hash 函数计算询问值:
c←H(M||T1||T2||T3||R1||R2||R3||R4||R5)
4)根据c生成参数,其中:
σ1←xα
σ2←xβ
sα←rα+cα
sβ←rβ+cβ
sx←rx+cx
5)生成Alice 撤销标记的Bulletproofs 零知识证明,通过该证明可以在不获取用户撤销标记具体值的情况下验证Alice 身份的合法性,步骤如下:
构造aL、aR,使得
随机选取盲化因子sL∈、sR∈、θ∈Zp,构造sL、sR的承诺S=。
计算:
y=H(A,S)
z=H(A,S,y)
Ti=,i={1,2}
x=H(T1,T2,z)
l=l(x)=aL-z+sL·x
r=r(x)=yn◦(aR+z+sR·x)+z2·2
t(x)=
τ(x)=τ1·x+τ2·x2+z2·γ,γ∈ZP
ε=α+θ·x
构造关于reg 的承诺V=greghγ。由此,零知识证明η={τ(x),ε,t(x),l(x),r(x)}。
6)签名为:
σ←(M,T1,T2,T3,c,sα,sβ,sx,,S.A,t,η)
7)加密产品相关信息m,输入明文m、gmsk 以及访问策略(M,ρ),返回密文CT。其中,CT={C=},M为l×n的访问矩阵,Mi表示矩阵中的第i行,函数ρ将Mi映射到属性,记ρ{1,2,…,l}→{1,2,…,n},ty为共享秘密,p为随机值。
8)将产品相关信息CT、撤销标记的知识证明η、加密后的共享秘密ty、签名等信息广播给验证节点。
消息合法性验证过程如下:
1)对零知识证明η进行验证,判断用户的身份是否合法。验证步骤为:计算;判断是否成立;判断ASx·g-z·=hμgl是否成立;判断t(x)=
2)在验证通过后,计算:
然后计算:
如果c=,则签名有效;否则,签名无效。若签名有效,则将验证通过的溯源信息上传到区块链。
当用户做出不诚信行为或想要主动退出时,群管理员可以对用户执行撤销操作。假设要撤销用户1,2,…,r,撤销列表RL 包含所有被撤销用户的私钥。其中,RL={(A1,x1,reg1),…,(Ar,xr,regr)}。分如下两种情况讨论:
1)如果是群管理员执行撤销操作,则群管理员将用户的私钥信息加入到撤销列表RL 中,同时更新用户的撤销标记,然后发布新的撤销列表RL,若撤销成功,则返回0;否则,返回−1。
2)如果是群成员主动申请撤销操作,则用户先将自己的撤销标记(Ai,regi,σ)发送给GM,GM 验证群成员的身份,如果验证成功,则执行第一种操作。
在收到对某笔交易的追踪请求时,所有的群管理员共同决定是否对交易进行追踪,当超过2/3 的群管理员持赞成意见时,则对交易的参与方进行追踪。追踪过程如下:
1)交易发送方的追踪
通过群公钥计算出用户的私钥,然后对用户信息索引进行读取,获取用户身份信息。
对请求读取数据的CA 进行属性集合检验,通过后可读取各群管理员存储的用户密钥片段,然后最多通过O(nt)(n为群管理员处注册的用户数)次乘法计算,即可获取用户的身份信息。证明过程如下:
2)交易接收方的追踪
通过打开签名获取临时交易地址S.A以及共享秘密ty,即可从S.A中抽取接收方公钥,追踪到接收方的身份。证明过程如下:
已知S.A=,ty=H(r·IDBob)=H(IDBob·R),,证毕。
3)追责
根据产品的状态信息判断出责任方,可对违规用户进行撤销操作,从而惩戒恶意行为。
当用户需要查看溯源信息时,发出查看申请,系统根据用户的属性私钥和访问策略(M,ρ)下的密文CT 进行解密,如果用户的属性集能够满足数据的访问策略,则允许用户对数据进行访问,输出明文;否则,访问失败。
本文方案性能分析具体如下:
1)匿名性。本文方案将群签名与隐私地址相结合以保护交易双方的身份信息,使用户身份信息对非群管理员不可见,从而保证方案的匿名性。其中,使用多群管理员机制的群签名技术保护用户隐私,追踪密钥仅由群管理员拥有,用户的私钥由群管理员共同生成,且保证了在有少量恶意群管理员节点的情况下无法进行用户身份信息复原。相较单群管理员方案,本文方案拥有更强的匿名性,且其他用户无法获取交易用户的具体信息,从而保护了用户隐私。另外,使用隐私保护技术,每笔交易都生成一个临时地址,该临时地址必须用追踪密钥才可以解密,使得攻击者无法将交易信息进行关联,从而保护了交易接收方的隐私。
2)可追踪性。本文方案通过使用群追踪密钥来计算用户私钥,然后读取本地的用户索引获取到交易发起方的身份,打开签名得到解密后的共享秘密,进而获取接收方的身份信息,实现对交易接收方的追踪。
3)安全性。本文方案基于群签名、属性加密以及隐私地址进行设计,群密钥只保存在群管理员手中,且单个群管理员只负责生成用户的部分密钥,完整的密钥由用户根据各群管理员传回的密钥片段计算生成。因此,不存在单群管理员泄露用户私钥造成用户隐私泄露的可能性。相比传统的单群管理员群签名方案,本文方案具有更高的安全性。使用隐私地址技术,每次交易都为交易接收方生成一个新的地址,使得攻击方无法通过数据分析来获取接收方的地址,提高了接收方的隐私安全性。另外,用户对上传的数据可选择性地设置属性加密,通过为数据设置特定的访问结构实现数据的细粒度访问控制,进一步实现数据的安全保护。
通过实验对本文隐私保护方案进行测试,以验证其正确性以及效率。实验基于联盟链平台fisco-bcos进行,fisco-bcos 为对外开源的底层区块链平台,可插入隐私保护算法。共识算法采用PBFT,双线性映射使用pbc 库实现,编程语言采用GO 语言。实验设备配置为Ubuntu-20.04.2.0 64 位,CPU 为Intel Core i7-6500U@2.50 GHz。
本文方案主要实现交易双方身份监管,因此,方案注重能否实现用户身份追踪。本次实验通过模拟恶意节点对消息进行签名能否通过验证,以及合法用户对消息进行签名能否实现身份跟踪,以测试本文方案的正确性。预设4 种场景进行测试,实验结果如表1 所示。
表1 正确性测试结果Table 1 Correctness test results
从表1 可以看出,本文方案可以正确地实现对用户的身份追踪以及对数据的细粒度访问控制。
3.4.1 方案对比
本节分别从管理员数量、追踪方、是否可对用户进行撤销惩罚以及是否控制数据访问权限4 个方面,对本文方案进行分析并将其与其他方案作对比。从表2 可以看出,本文方案可以在分化群管理员权限的同时,实现用户双方身份的可追踪与细粒度访问控制,在用户的信息保护方面更具优势。
表2 方案性能对比Table 2 Schemes performance comparison
3.4.2 计算成本
设|M|为模幂运算的计算成本,|P|为双线性对运算的计算成本,|H|为哈希运算的计算成本。从表3可以看出,与文献[21]方案相比,本文方案需要更高的时间成本,当群管理员不同时,所消耗的时间成本逐渐增加,在初始化、生成上链数据以及验证阶段,由于需要多群管理员参与,消耗的时间成本与群管理员数量相关。
表3 2 种方案各步骤花费的计算成本对比Table 3 Calculation cost comparison of each step of two schemes
为了得知本文方案具体的时间代价,在Ubuntu-20.04.2.0 系统中编写程序,分别对群管理员个数不同、属性个数不同以及零知识证明情况下所消耗的时间成本进行测试。
1)群管理员数不同时各阶段所花费的时间
由于本文方案主要花费时间在上链数据生成、验证以及追踪阶段,通过编写程序进行测试,呈现群管理员数量对时间代价的影响,测试结果如图2 所示。
图2 群管理员数量对时间代价的影响Fig.2 Influence of the number of group administrators on time cost
从图2 可以看出,随着群管理员数量的增加,所花费的时间逐渐增多,在群管理员数量为16 时,约消耗1 127 ms,在群管理员数量为64 时,约消耗3 794 ms,本文方案可以根据实际需要选择群管理员数量,在保证用户身份可追踪且保护用户隐私的情况下,增加毫秒级别的时间是可以接受的。
2)属性个数不同时属性加密所花费的时间
在本文方案中,用户对数据选择性地进行属性加密,从而实现数据的细粒度访问权限控制。由于本文方案中的角色划分种类较少,因此属性集包含的属性值数量较少,对属性个数为4~8 时加密算法的时间代价进行测试,结果如图3 所示。从图3 可以看出,当属性个数分别为4、6、8 时,加解密花费的时间代价逐渐上升,其中,当属性个数为4 时,加解密分别约消耗324 ms、246 ms,当属性个数为8 时,加解密分别约消耗443 ms、382 ms。
图3 同文件下属性加密所花费的时间Fig.3 Time spent on attribute encryption under the same file
3)零知识证明生成与验证所花费的时间
本文方案使用零知识证明验证用户的撤销标记,在不泄露用户身份隐私的情况下验证用户身份的合法性。由于本文方案验证撤销标记是否在[0,1]区间内,因此对范围[0,1]进行证明。其中,椭圆曲线群阶为1 024。从图4 可以看出,零知识证明生成与验证所花费的时间对方案性能的影响在可接受范围内。
图4 零知识证明生成与验证所花费的时间Fig.4 Time spent on generation and verification of zero-knowledge proof
综上所述,本文方案所花费的时间在可接受范围内,相较其他单一方向监管的隐私保护方案,本文方案不仅可以实现用户双方的监管与群管理员分权,而且可以选择性地决定是否对数据进行属性加密,在群签名的基础上实现数据的双重保护,安全性更高。
针对基于区块链的溯源系统中数据隐私与可追溯性难以平衡的问题,提出一种区块链可监管双重隐私保护方案。由多群管理员共同生成用户密钥,满足溯源场景对监管介入的需求,同时用户有选择性地对数据进行属性加密,在保证数据可追溯的同时实现数据的细粒度访问控制。实验结果表明,该方案所花费的时间成本在可接受范围内,并且能够实现更高级别的隐私安全。本文方案中群管理员所拥有的权限相等,且追踪时间随着群管理员数目的增加而延长,如何提高追踪效率以及使用分级群签名来对监管机构的权限进行更细粒度的划分,将是下一步的研究方向。