基于可追踪环签名的联盟链身份隐私保护方法

2024-03-25 02:05任正伟余易晋
计算机技术与发展 2024年3期
关键词:匿名性身份交易

任正伟,余易晋

(1.武汉科技大学 计算机科学与技术学院,湖北 武汉 430065;2.智能信息处理与实时工业系统湖北省重点实验室(武汉科技大学),湖北 武汉 430065)

0 引 言

区块链具有去中心化、不可篡改和不可伪造等特点,能够应用于很多领域[1]。目前,根据中心化程度的不同,区块链主要可分为三类,即公有链、联盟链和私有链。其中,公有链也被称为非许可链,用户无需授权就可以参与其中。联盟链和私有链也被称为许可链,用户需要通过验证并获得授权后才能加入到系统中[2]。相较于公有链,联盟链具有处理事务快和隐私性强等优点;相较于私有链,联盟链具有可扩展性强和适用范围广等优点。因此,联盟链在商品溯源、供应链管理和公共慈善等场景下都有广泛的应用[3]。

然而,在实际应用中,区块链用户的身份隐私保护是一个亟待解决的问题,虽然大部分区块链都具有一定的匿名性,但是攻击者仍能通过动态监听和静态分析等方式获得用户的身份隐私[4]。即使在隐私性较强的联盟链中,内部的节点也可以使用地址聚类[5]等去匿名化方法获得用户的身份隐私。此外,在联盟链中,由于用户的身份验证和授权是由中心机构负责的,中心机构完全掌握着用户的身份信息,一旦中心机构受到攻击,用户的身份隐私就会被泄漏。

对上述问题,研究人员提出了一些方法以进一步保护用户的身份隐私。这些方法主要分为三类:混合服务、环签名和非交互式零知识证明[4]。混合服务可以防止攻击者通过分析将交易发送者或交易接收者相关联,从而获得用户的身份,但是需要有足够多的用户参与其中。而环签名无需其它用户参与,签名者就可以生成隐藏其身份的签名,但环签名为用户提供完全匿名性的身份保护,这种完全匿名性会使得用户的身份难以被追查。非交互式零知识证明可以在用户不泄露额外信息的情况下证明自己的身份是有效的,其实现的也是用户身份的完全匿名。

此外,研究者也提出了具有条件匿名性的群签名方案。但是,在联盟链中,群签名的去匿名化依赖于中心机构,会使得用户对于中心机构不具有匿名性并且联盟链的运作依赖于中心机构,因此,群签名也不能很好地保护联盟链中用户的身份隐私。

为此,该文提出了一种基于可追踪环签名的身份隐私保护方法,以保护联盟链中用户的身份隐私。该方法结合了可追踪环签名和实用拜占庭容错协议,利用可追踪环签名实现用户身份的条件匿名性,既能保证包括中心机构在内的其他参与方不能获得用户的身份,又能在出现纠纷时揭露不诚实方的身份。而且,在文中方法中,去匿名化是由联盟链中的节点通过实用拜占庭容错协议来实现的,一方面使得中心机构在此过程中也无法获得用户身份,另一方面也增加了系统的容错性。总的来说,该文基于上述问题能够实现以下改进:

(1)利用可追踪环签名实现用户身份的条件匿名性,并将中心机构去匿名化的权利交给联盟链中的节点,使其无法将匿名交易和用户的真实身份关联起来。

(2)增加了检测机制,保证了只有交易相关节点才能提出去匿名化请求,并且恶意的去匿化请求会被检测,提高了方案的安全性。

(3)匿名交易的去匿名化交由联盟链中节点使用实用拜占庭容错来完成,既让中心机构减少了资源消耗,也保证了它无法发挥功能时系统能够继续运行,增加了系统的容错性。

1 相关工作

由于区块链给用户身份隐私提供的保护是有限度的,已有研究工作提出了区块链中用户的身份隐私保护方法。例如,在近几年被纳入到区块链体系中用来保护用户的身份隐私的混合服务,主要分为两类:集中式和分布式。在集中式混合服务方案中,混合服务是由混合服务提供商充当的混合器完成,Mixcoin[6]解决了混合服务提供商可能由攻击者假扮来窃取用户资产的问题,但是存在混合服务提供商会泄露用户身份的问题。为此,Blindcoin[7]使用盲签名来防止混合服务提供商获得混合服务中输入地址和输出地址的关联。尽管如此,集中式混合服务仍然存在需要等待足够的用户参与混合服务而导致交易延迟增加、混合服务提供商易受攻击以及需要提交手续费等问题;在分布式混合服务中,交易的参与者之间自行协商混合服务的细节,Coinjoin[8]避免了集中式混合服务中混合服务提供商易受攻击和需要支付手续费的问题,然而参与者知道混合服务中地址配对的详细信息,并且其能够通过提供虚假交易信息来妨碍混合服务的正常进行[3]。Coinshuffle[9]和XIM[10]以匿名通信的方式解决了地址配对泄露的问题,但是参与者仍可以妨碍混合服务的正常进行。最重要的是这些混合服务都需要等待定量的参与者才能进行。

而可以自主生成的环签名[11]和非交互式零知识证明[12]能够解决上述问题。文献[13]使用环签名来保护用户的身份隐私,然而环签名由于其不可链接性和完全匿名性容易产生一票多投和双重花费等安全问题。使用非交互式零知识证明的区块链Zerocoin[14],主要思想是用户首先铸造一枚硬币,然后用一枚没有历史使用记录的硬币来代替,并使用非交互式零知识证明保证硬币的有效性,但是Zerocoin局限于通过防止攻击者分析用户的资金流向来获取用户的身份。此外,由于环签名和非交互式零知识证明为用户提供完全匿名性,不适合需要监管的联盟链。根据联盟链所需的匿名程度来看,具有条件匿名性的群签名比较适合。文献[15]使用群签名保护联盟链中用户的身份隐私,但是该方案中群签名的验证以及用户的追踪依赖于中心机构(群管理员),并且中心机构能够自主对用户的群签名去匿名化,系统的容错性和安全性较低。

与群签名类似的还有可追踪环签名,其分为主动追踪和被动追踪。主动可追踪环签名以文献[16]提出的自可追溯性为起点,用户可以提供相关数据证明自己是真正的签名者,也可以由可信第三方[17]或者接收者[18]收集环成员的相关数据来对可追踪环签名去匿名化。在区块链身份隐私保护方案[19]中,去匿名化的请求由用户提出,中心机构(审计节点)进行去匿名化,这可能导致用户恶意提出去匿名化请求来暴露目标用户的真实身份,而且如果中心机构受到攻击或者产生错误,系统无法正常运行。在区块链身份隐私保护方案[20]中,去匿名化的请求由第三方提出,中心机构(审计节点)进行去匿名化,虽然能够防止用户恶意提出去匿名化请求,但是系统的运行也依赖中心机构。此外,在文献[19-20]方案中,中心机构也能够自主对可追踪环签名去匿名化。被动可追踪环签名[21]在一定的条件下用户的签名会被链接或者被追踪,支持多种电子货币的应用层协议Cryptonote[22]就使用了修改后的可追踪环签名来保护用户的身份隐私。与之类似的还有使用多层可链接自发组签名[23]的门罗币[24],然而,针对这类被动可追踪环签名,恶意用户可以针对同一事件发表多个具有相同意见的签名来发起拒绝服务攻击,使其它节点忙于验证签名,而恶意用户的身份不会因此暴露[25]。

2 方案设计

2.1 系统架构

文中方案包括三个参与方,分别是用户、中心机构和联盟链节点,其架构以及主要流程如图1所示。用户在联盟链中的活动以节点的身份进行,在联盟链之外的活动以用户的身份进行。

图1 系统架构

(1)用户。

用户依据联盟链的规则生成自己的公私钥对,然后通过安全信道将自己的真实身份和公钥提交给中心机构。当用户通过中心机构的认证后,中心机构将给予用户联盟链中的虚拟身份,用户则作为节点加入到联盟链中。

(2)中心机构。

中心机构负责验证用户的真实身份,为合法用户生成联盟链中的虚拟身份,并将用户的虚拟身份与公钥对应后广播至联盟链中。此外,中心机构还需要定期从联盟链中获取节点信息表,并处理其中因失信行为而被注销的用户。

(3)节点。

节点负责维护联盟链以及维护记录了所有节点状态的节点信息表。此外,节点之间通过可追踪环签名进行匿名交易,并在出现纠纷时对交易进行去匿名化。

2.2 安全假设

(1)文中方案安全性模型的成立依赖于离散对数问题(Discrete Logarithm,DL)和Computational Diffie-Hellman(CDH)问题。

(2)中心机构是不可信的。中心机构可能会被攻击者利用来破坏用户的身份隐私。

(3)用户与中心机构之间,节点与节点之间存在由相互之间的公私钥加解密建立的安全信道。

2.3 方案构造

文中方案包括四个阶段:用户注册、匿名交易、纠纷解决和用户注销。

在注册阶段,用户向中心机构提供真实身份和公钥,并在通过验证后加入到联盟链中成为节点。在交易阶段,节点通过可追踪环签名和实用拜占庭容错协议进行匿名交易。在纠纷解决阶段,节点通过实用拜占庭容错协议进行去匿名化操作,以揭露和记录失信节点。在注销阶段,节点广播注销消息以退出联盟链。

2.3.1 注 册

图2 用户注册流程

中心机构在验证用户的真实身份和公钥的合法性后,为用户i生成虚拟身份vidi,并保存用户i的真实身份和vidi的映射,然后为用户的虚拟身份和公钥生成签名SigskCA(vidi‖pki)‖H(vidi‖pki),并将该签名广播到联盟链中。

联盟链中的各个节点在验证上述签名的有效性后,将(vidi,pki,online,null)加入到各自维护的节点信息表中。至此,用户i加入联盟链中成为节点i。

2.3.2 匿名交易

节点在联盟链中实现匿名交易的过程如图3所示。当节点a和节点b要进行匿名交易时,a和b首先通过安全信道协商交易m并交换各自对m的签名,然后a计算M=RSigA(m)‖H(Sigska(m)‖Sigskb(m))。其中,RSigA(m)表示a在环A上用可追踪环签名对交易m的签名,Sigska(m)为a对m的签名,Sigskb(m)为b对m的签名。接着,a使用实用拜占庭容错协议将M上传到联盟链,并将实用拜占庭容错预准备阶段中的验证签名的步骤改为验证可追踪环签名。

图3 基于可追踪环签名的匿名交易过程

b获得联盟链上的M后,验证M的正确性,若验证未通过,则终止与a的交易,若验证通过,则计算M'=RSigB(m)‖H(Sigska(m)‖Sigskb(m)),表示b在环B上用可追踪环签名对交易m的签名,并使用实用拜占庭容错协议将M'上传至联盟链。至此,a和b分别以环A和环B的身份开始遵守交易m。

节点a生成RSigA(m)的具体过程如下:

(1)选择环成员L={vid1,vid2,…,vidn}(包括vida)。

Ri=xiP(i=1,2,…,n,i≠a),Ti=tiP。

(4)计算hi=H(m,T,Ri)(i=1,2,…,n,i≠a)。

(6)计算ha=H(m,T,Ra),Z=(xa+ha)ska。

(7)RSigA(m)=(m,Z,Ri,TKi,T,L)(i=1,2,…,n)。

2.3.3 解决纠纷

当a和b产生争议时,假设联盟链有3f+1个节点,并且由a提出仲裁申请,a令N=Sigska(m)‖Sigskb(m)。整个解决纠纷的流程可以分为预准备阶段、准备阶段和确认阶段,具体过程如下:

(1)预准备阶段。

预准备阶段主要分为预准备阶段1和预准备阶段2,预准备阶段1主要是a向其它节点提出去匿名化请求的过程,预准备阶段2主要是各个节点之间交换对可追踪环签名进行去匿名化所需信息的过程。

①预准备阶段1。

a广播<N>,其中,Pre-prepare-first表示预准备阶段1,view是视图编号,count是序列号。

a之外的节点在收到该预准备消息后,验证视图(view)、序列号(count)和H(N)的正确性,并且H(N)已记录在联盟链上,才会接受预准备消息。如果节点不接受第一阶段的预准备消息则什么都不做。

②预准备阶段2。

接受第一阶段预准备消息的节点根据H(N)匹配联盟链上的M和M',检查M中的环成员L和M'中的环成员L'来判断自己是否为环A或环B的成员。若节点既不是环A的成员也不是环B的成员,则什么都不做。

当e(J,pki)=e(T,P)时,各个节点可以得出pka,当e(K,pkj)=e(T',P)时,各个节点可以得出pkb,然后节点根据联盟链上的m判断是b违约还是a恶意提出去匿名化请求,最后将判断结果记录为E。

(1)

(2)

(2)准备阶段。

如果节点不接受预准备消息则什么都不做,而接受了预准备消息的节点k向其它节点广播<Sigskk(E)‖H(E)‖pkk>。由于预准备阶段被用来收集去匿名化所需的数据,a无法在预准备阶段就表达自己的意见,所以a参与发送准备消息。其中,Prepare表示准备阶段,Sigskk(E)表示k使用私钥skk对E进行签名,pkk为k的公钥。

收到准备消息的节点验证视图(view)、序列号(count)和H(N)的正确性以及签名Sigskk(E)的合法性。当节点在收到2f个与其接受的预准备消息对应的准备消息后(相同的视图(view)、序列号(count)和H(N)),将这2f+1个准备消息(包括自己)写入临时日志中,在2f+1个准备消息中至少有f+1个(包括自己)相同的为真。

(3)确认阶段。

如果节点不接受预准备消息则什么都不做,接受了准备消息的节点k向其它节点广播自己准备阶段判断为真的消息对应的确认消息<Sigskk(E)‖H(E)‖pkk>。其中,Commit表示确认阶段,Sigskk(E)表示k使用私钥skk对E进行签名,pkk为k的公钥。

收到确认消息的各个节点验证视图(view)、序列号(count)和H(N)的正确性以及签名Sigskk(E)的合法性。当节点在收到2f个与其接受的准备消息所对应的确认消息后,将这2f+1个确认消息(包括自己)写入临时日志中,在2f+1个确认消息中至少有f+1个(包括自己)相同的为真。

最后,每个节点根据临时日志中的内容对各自的节点信息表进行修改,如果是b违约,则修改节点信息表中b所对应的映射为(vidb,pkb,offline, default),如果是a恶意提出去匿名化请求,则修改节点信息表中a所对应的映射为(vida,pka,offline, default),其中offline表示用户从联盟链中注销,default表示用户因为失信行为而注销。整个解决纠纷阶段的流程如图4所示。

图4 用户解决纠纷流程

2.3.4 注 销

当节点k退出联盟链,则广播Sigskk(logout‖vidk)‖H(logout‖vidk)‖pkk,其中,Sigskk(logout‖vidk)表示k用私钥skk对logout‖vidk签名,logout表示注销消息,vidk表示k的虚拟身份,pkk表示k的公钥。

其它节点在验证上述签名的合法性后,将节点信息表中k对应的映射由(vidk,pkk,online,null)改为(vidk,pkk,offline,null)。

因为节点信息表由联盟链中的节点共同维护,所以中心机构只需要定期向一定数量的随机节点请求节点信息表,并通过对比节点信息表和自己本地保存的用户真实身份和虚拟身份的映射,找到该节点对应用户的真实身份。

如果表中节点是正常注销,中心机构将删除该节点对应用户;如果表中节点是因为违规行为而注销,中心机构将通过该节点对应用户的真实身份来对用户进行处罚。

3 方案分析

首先对文中方案进行了正确性分析、可追踪性分析和安全性分析,然后将文中方案与其它方案进行对比。

3.1 正确性

以验证RSigA(m)为例,在交易阶段中,各个节点通过公式3来验证可追踪环签名的合法性。

(3)

若公式3成立,则验证通过,判断的过程如下所示:

在解决纠纷的预准备阶段2中,每个节点验证Ti的有效性,具体过程如下所示:

e(TKi,P)=e(tiriP,P)=e(tiP,riP)=e(Ti,pki)

3.2 可追踪性

以得出环A中真正签名者节点a的公钥为例,在解决纠纷中的预准备阶段2中,节点使用环中成员的公钥pki验证等式e(J,pki)=e(T,P),其中T由公式4给出,该公式再生成RSigA(m)的第3步。

(4)

当i=a时,上式成立,pka即为可追踪环签名中真正签名者的公钥,具体过程如下所示:

3.3 安全性

文中方案使用已经被证明能够增加用户匿名性的可追踪环签名[17-18]来防止地址聚类等分析方法的去匿名化攻击,并且通过新增检测机制和结合实用拜占庭容错得到以下两种新的安全特性。

(1)防止节点恶意提出去匿名化请求。

为了防止交易无关节点恶意提出去匿名化请求,在交易阶段,节点通过安全信道交换各自对交易的签名,即只有交易相关节点拥有对交易的签名。在解决纠纷阶段,申请对可追踪环签名去匿名化的节点必须提交所有交易相关节点的签名,联盟链中的其它节点才会接受该节点的去匿名化请求。

为了防止交易相关节点恶意提出去匿名化请求,在解决纠纷阶段,去匿名化将会应用于所有交易相关节点,如果交易相关节点恶意提出去匿名化请求,将会被其它节点通过交易内容判断为失信节点并记录在节点信息表中,最后受到中心机构的处罚。

(2)对中心机构匿名。

由于文中方案使用可追踪环签名并且限定只有交易相关节点才能提出去匿名化请求,中心机构没有权利自主对用户的可追踪环签名进行去匿名化操作,也无法向环成员提出去匿名化请求,所以用户对于中心机构是匿名的。

3.4 方案对比

文中方案将可追踪环签名与实用拜占庭容错结合,既能保护用户的身份隐私,也能保证较好的容错性和安全性。

总的来说,相较于文献[13,22]的方案,文中方案具有条件匿名性,可以防止双花攻击和拒绝服务攻击;相较于文献[15,19-20]的方案,文中方案能同时满足防止节点恶意提出去匿名化请求和对中心机构(群管理员和审计节点)匿名两种安全特性,并且拥有较高的容错率。表1是文中方案与其它身份隐私保护方案的对比。

表1 文中方案与其它方案的对比

4 实验及分析

4.1 实验环境

文中方案的实验环境:CPU为Intel(R) Core(TM) i7-7700HQ,主频为2.80 GHz,2.00 GB内存,操作系统为Ubuntu 21.10,编程语言为C语言,使用的PBC库版本号为0.5.14。

4.2 实验结果及分析

本节测量了四种具有条件匿名性的身份隐私保护方案中系统初始化的时间以及在不同节点数量的环或群中,系统初始化、生成签名、验证签名和追踪签名所需的总时间。

现定义符号TE表示模幂运算的时间,TM表示模乘运算的时间,TZr表示初始化模r整数环的时间,TG表示初始化G1群的时间。

(1)系统初始化。

表2展示了在系统初始化阶段,各个方案所需的理论时间和具体时间。

表2 系统初始化所需的时间

其中,文中方案和文献[15]方案由用户根据系统生成的公共参数自行生成公私钥,其理论时间是固定不变并且所需时间较少,而文献[19-20]方案由用户根据系统使用秘密共享生成公共参数来生成公私钥,其所需时间与秘密共享参数(t,n)的设置有关,秘密共享参数(t,n)表示n个节点的系统中需要t个节点合作才能共享秘密。此次实验中,为了便于测量文献[19-20]方案的秘密共享参数设置为(3,5),远小于实际情况下的参数设置。

(2)总时间。

图5展示了文中方案、文献[15,19-20]方案这四个具有条件匿名性的身份隐私保护方案在不同数量的环(群)节点的情况下,系统初始化、生成签名、验证签名和追踪签名所需的总时间。

图5 具有条件匿名性的四个方案的总时间

虽然文中方案与文献[19-20]方案使用的都是可追踪环签名,但是文中方案在系统初始化时间上小于文献[19-20]方案,所以文中方案所需的总时间较小,而且文中方案相较于文献[19-20]方案新增了防止节点恶意提出去匿名化请求的安全特性。

虽然文中方案相较于文献[15]方案需要花费较多时间,但是文中方案对中心机构具有匿名性,并减少了中心机构的任务,具有更高的安全性和容错性。

5 结束语

针对联盟链中现有的用户身份隐私保护方案不够完善的问题,将可追踪环签名和实用拜占庭容错结合并运用于联盟链中用户的身份隐私保护上,不仅能够保证联盟链中的用户对于其它用户和中心机构都具有条件匿名性,还添加了防止节点恶意提出去匿名化请求的特性,增加了系统的安全性,并且通过结合实用拜占庭容错,增加了系统的容错性。理论和实验表明,该方案既能够保护用户的身份隐私,又能保证较高的安全性和容错性,并且时间开销较为合理。

猜你喜欢
匿名性身份交易
跟踪导练(三)(5)
去个体化心理分析
微信弹性社交中的失范行为分析
他们的另一个身份,你知道吗
交易流转应有新规
大宗交易
《吃饭的交易》
互换身份
惊人的交易
放松一下 隐瞒身份