APP下载

可监管的区块链匿名交易系统模型

2022-09-25郭阳楠蒋文保叶帅

计算机应用 2022年9期
关键词:公钥应用层攻击者

郭阳楠,蒋文保,叶帅

(北京信息科技大学信息管理学院,北京 100192)

0 引言

近年来,区块链技术在金融、能源、农业、工业生产等各个领域都有着广泛的应用,也是目前研究的热点之一;然而现有区块链系统(如比特币、以太坊)具有去中心化、匿名性强、难以追溯的特性,这些特性引发了许多安全问题,使得许多基于区块链技术的匿名电子货币成为了灰色产业,给权威机构追溯责任带来了极大的困难。如何在保证用户隐私安全的情况下实现区块链上的追踪溯源成为了当下区块链技术发展的重中之重,也是未来区块链技术长远发展中亟待解决的问题之一。

目前,区块链中的监管以及追溯都是基于区块链系统本身的结构特点。现有区块链系统(比特币)中的区块采用UTXO(Unspent Transaction Outputs)结构,将每一笔交易与前一笔绑定,在一定程度上能够达到追踪溯源的效果,但是用户可以通过混币器(Mixer)等手段打乱交易关系,使交易无法与其发起者绑定,大幅增加了区块链系统监管和追溯的难度。联盟链是解决区块链中身份认证问题的方案之一,如Fabric、Corda 等基于公钥基础设施(Public Key Infrastructure,PKI)体系的区块链模型,使用证书认证节点身份,便于内部监管;但是同时也使得匿名性大幅降低。门罗币(Monero)、零币(Zcash)[1]分别使用环签名算法和零知识证明实现了区块链上的强匿名性,以隐藏用户公开地址、混淆或切断交易双方关系的手段解决了传统区块链系统中通过关联性分析追踪溯源的问题;但这些区块链系统极高的匿名性使得监管方几乎无法监管,应用范围较小。杨亚涛等[2]将基于多KGC(Key Generator Center)的SM9 国密算法与群签名结合,设计了一种基于联盟链的可证明安全的区块链隐私保护方案,在可监管性和匿名性上有一定优势;但仅从应用层入手,没有考虑到网络层的安全性,且群签名的特性使得群内管理员能够掌握全部用户的密钥,不利于用户的身份安全。高峰等[3]提出了一种轻量级的比特币交易溯源机制,能将发起交易的匿名比特币地址与交易节点的IP(Internet Protocol)地址相关联,提高了比特币交易追溯的效率;但仅能针对未经过混淆的普通交易,应用范围较窄。魏松杰等[4]提出了一种联盟链上基于身份密码体制的跨信任域身份认证方案,设计了一种区块链证书,并加入了安全仲裁节点来管理用户的身份,证书的引入和安全仲裁节点的使用使该系统可监管性较强;但联盟链基于证书认证身份的特性致使用户的匿名性不足。Li 等[5]提出了一种可追溯的门罗币模型,引入基于环签名的一次性交易地址来实现匿名交易与用户身份;但该模型中交易结构冗余度较高,导致传输效率低下。

大多数研究都将研究重点放在增强现有区块链系统的匿名性或是使用群签名等技术手段实现可追溯性,其中存在的主要问题有:1)难以兼顾匿名性和可监管性;2)基于证书体系引发的根CA(Certificate Authority)信任问题;3)研究方法主要实现于应用层,极少有研究从网络层入手。

针对以上问题,本文提出了一种可监管的区块链匿名交易系统模型,在网络层实现了区块链的隐私保护和可监管性,并把网络层身份标识和应用层用户密钥相结合,实现了区块链系统匿名性和可监管性的兼容,与其他模型进行了整体效率及隐私保护能力的对比,验证了本文模型可以抵抗类型-Ⅰ(普通节点)和类型-Ⅱ(恶意KGC)的攻击者。

1 相关研究

1.1 无证书公钥密码体制

无证书公钥密码体制(Certificateless Public Key Cryptography,CL-PKC)的概念来自Girault[6]提出的自认证公钥密码和Al-Riyami 等[7]提出的无证书公钥密码,这种密码机制介于公开证书机制和基于身份的密码之间,根据用户本地生成的部分私钥和KGC 根据相关参数生成的部分私钥(与用户身份有关)组合而成,从一个部分无法计算另一个部分,解决了密钥托管带来的KGC 作恶问题。魏爽等[8]提出了一种改进的无证书签名方案,提高了原方案的效率和安全性,但是无法抵抗类型-Ⅱ攻击者;文献[9-10]将SM2 国密算法和无证书公钥密码体制结合,提出了一种基于SM2 的无证书公钥密码体制,并运用形式化方法证明了该密码机制的安全性;侯红霞等[11]提出了一种安全的两方协作SM2 算法模型,但引入的同态加密机制使得密钥生成部分效率较低;Chen 等[12]提出了一种基于无证书公钥密码体制的强指定验证者签名方案,可抵抗类型-Ⅰ和类型-Ⅱ攻击者;杨龙海等[13]提出一种基于密钥分割的改进SM2 签名方案,可抵抗数据篡改和签名伪造。

根据文献[9],基于SM2 的无证书公钥密码体制由以下函数构成:

CL.Setup(1k):根据安全参数k初始化系统,生成系统主密钥对(Mpk,Msk)函数由KGC 执行。

CL.Set-User-Key(Mpk):该函数生成用户部分密钥对(UA,xA)。

CL.Extract-Partial-Key(Mpk,Msk,IDA,UA):该函数由KGC执行,为用户生成KGC 部分公钥和部分私钥(PA,dA)。

CL.Set-Private-Key(Mpk,IDA,UA,xA,PA,dA):该函数生成用户的完整私钥sA。

CL.Set-Public-Key(Mpk,IDA,UA,PA):该函数生成用户“声明”的公钥WA(在隐式证书密码系统中也称为公钥还原数据)。

CL.Encrypt(Mpk,IDA,WA,m):该函数对消息m加密,生成密文C。

CL.Decrypt(Mpk,IDA,WA,sA,C):该函数使用用户私钥sA对密文C解密,输出消息m'或是终止符⊥。

1.2 标识密码

标识密码(Identity-Based Cryptograph,IBC)由Shamir[14]提出,其最大的特点在于摆脱了基于证书身份管理的传统PKI 体系,使用用户的特征标识,如手机号、电子邮件、身份证号等作为公钥,用户的私钥由KGC 根据系统主密钥及用户标识计算得出,用户不需要通过可信第三方(如CA)来保证公钥来源的安全性。IBC 体系包含加解密算法、签名算法和IBKA(Identity-Based Key Authority)身份认证协议。Boneh等[15]和Sakai 等[16]两个团队分别提出用椭圆曲线配对构造标识公钥密码;Choon 等[17]和Lin 等[18]基于GDH(Gap Diffie-Hellman)群分别提出了基于标识的签名算法和结构化的多重签名算法。这些工作引发了标识密码领域的新发展。相较于传统的PKI 体系,基于标识的密码体系以用户身份标识作为公钥,无需颁发和管理证书,实现成本低、效率高,且消息发送者只需要知悉接收方的身份标识,节省了向CA 问询的传输成本。

本文采用了我国商用密码SM9 算法,包含签名、公钥加密算法等。SM9 标识密码算法由国家密码管理局2016 年3月发布,为GM/T 0044-2016 系列,共包含总则、数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法、参数定义5 个部分。与其他的标识密码算法相同,SM9 算法的安全性基于椭圆曲线双线性对映射的性质。定义在椭圆曲线群上的双线性对(bilinear pairing)主要有经典的Weil 对、Tate 对,也有Ate 对、R-ate 对等。Barreto 等[19]提出了一种构造素域上适合对的常曲线的方法,通过此方法构造的曲线称为BN 曲线(Barreto-Naehrig curve)。SM9 算法选择的就是BN 曲线,使用安全性能好、运算速率较高的R-ate 对,涉及的主要算法是Miller 算法和R-ate 对的计算方法。

2 可监管的双层认证匿名区块链架构

本文提出一种可监管的区块链匿名交易系统模型,整体架构如图1 所示,在网络层采用标识密码代替传统PKI 体系实现身份隐私,在应用层使用无证书公钥密码将应用层交易账户与网络层身份标识绑定实现区块链可监管、可追溯。

图1 本文模型的整体架构Fig.1 Overall architecture of the proposed model

本文模型的应用层包含账户模型、智能合约以及管理中心;网络层使用基于多KGC 的SM9 算法来生成网络身份标识。用户加入平台进行交易时向KGC 联盟申请网络身份标识EID,区块链中节点间的交易则通过区块链平台账户Address进行转账或其他操作,Address与用户身份相关联,便于监管方通过(EID-Address)关联表对异常交易进行溯源。本文模型在网络层使用多KGC 的SM9 算法来根据用户身份ID 生成动态的EID,保证用户的网络身份隐私;应用层账户采用基于无证书公钥密码账户模型,以用户网络层身份标识EID作为账户密钥的关联标识,在解决密钥托管问题的条件下实现账户隐私安全。

2.1 网络层组件

为了支持权威监管机构对区块链隐私区块链的有效监管,网络层采用SM9 标识密码体系,主要组件包括密钥生成中心联盟(KGC 联盟)、审计节点、骨干节点和普通节点。网络层组件结构如图2 所示。

图2 网络层组件结构Fig.2 Component structure of network layer

2.1.1 KGC联盟

KGC 主要负责选择系统参数、生成主密钥对(PKGC,MKGC)、根据用户固定ID(如身份证号、手机号码、电子邮箱等)为用户生成动态变化的EIDi(i=1,2,…)以及为EID生成对应私钥EIDi_sk,同时配合审计节点对异常交易进行追踪溯源。

2.1.2 审计节点

审计节点通过收集去中心化网络中骨干节点转发的交易信息来对全网中参与交易的节点进行审计,一旦发现有异常行为,即可针对异常行为有关的数据包流量进行溯源识别,也可通过该异常交易涉及的应用层Address对异常行为用户进行追踪,匹配其对应的EID并通过KGC 揭示EID的真实身份。

2.1.3 骨干节点

骨干节点是匿名区块链网络中的主要节点,它们需要参与到整个网络的共识过程中,并在本地下载全部世界状态账本;同时还需要接收来自普通节点或其他邻居节点装载交易信息的网络数据包,验证网络数据包签名的有效性,若是发现数据包认证不通过或是存在异常交易,则向审计节点举报,申请异常交易溯源。

2.1.4 普通节点

普通节点是参与本平台交易的普通用户,它们只需要向骨干节点发送交易请求或在接收打包好交易的区块后对其进行验证并更新本地状态,并不需要参与到共识过程中。普通节点在参与到本平台中时,需向KGC 联盟根据本人ID 申请许多动态变化的匿名标识(EIDi)及对应私钥EIDi_sk,用来对装载交易信息的网络层数据包进行签名。普通节点用户可根据需要隐藏IP 地址,实现网络层的地址信息隐藏。

2.2 应用层组件

应用层拟采用无证书密钥管理技术和同态加密技术实现区块链交易隐私保护,主要实现包括交易身份和交易内容等敏感的交易信息保护,在保证可追溯性的同时解决了密钥托管带来的威胁。

2.2.1 无证书公钥密码管理

应用层使用基于SM2 的无证书密钥体制来生成用户交易用的标识Address。在用户注册网络层身份标识EID后,以该EID为应用层账户的关联标识,生成Address的步骤如下:

1)应用层KGC 生成主密钥对(PAKGC,MAsk=s)并选择相关参数Mpk=(E/Fp:Y2=X3+aX+b,p,q,G,PAKGC=[s]G),其中公钥PAKGC和相关参数Mpk是公开的;

2)用户根据Mpk生成部分密钥对(UA,xA),并把该部分公钥UA和网络层身份标识EID发送至KGC;

3)KGC 根据接收到的(UA,EID)生成KGC 部分的密钥对(WA,dA)并将其发送至用户,在溯源对应列表中记录下(EID,WA);

4)用户根据KGC 部分密钥对(WA,dA)生成完整密钥对(WA,sA)并公开WA作为自己的应用层交易标识Address。

通过以上步骤,应用层KGC 服务器实现了用户网络身份标识EID与用户交易标识Address的绑定,便于监管方监管链上交易与追踪溯源;同时解决了传统追溯系统中用户密钥与KGC 服务器深度绑定带来的安全问题,在保证用户个人隐私安全的情况下解决了现有区块链系统难于追溯异常交易的问题。

2.2.2 账户模型

本平台是一种类以太坊账户模型的区块链平台。账户模型是一种能够保存账户世界状态(如余额)的记账模型,每个账户都有与之关联的状态,每个账户都维护自己的状态。平台中存在两种类型的账户:一种是外部账户,它由公钥和私钥控制的账户,存储代币余额状态;另一种是合约账户,它由外部账户创建的账户,除了余额还有智能合约及其变量的状态。每个账户对应一对密钥对(WA,sA),其中WA是该账户的公开交易标识Address。

3 具体流程

本文模型最大的特点在于能够根据用户的身份标识进行区块链上的监管和追踪溯源。根据监管方式的强度不同分为强监管和弱监管两种:强监管通过网络层流量审计实现,弱监管是基于无证书公钥密码体制实现的。全部流程如下。

3.1 交易流程

用户A向用户B发起交易请求,其交易流程如下:

1)A获取B的公钥WB,将消息M用其私钥sA签名后用WB加密构成(M‖SigA)。

2)在应用层对消息签名并加密后,网络层节点使用其EIDi对应的私钥EIDi_sk对加密消息签名,新的数据包为

3)B在接收到后根据发送方A的EIDA对其签名进行验证,若验证失败则向溯源审计节点举报异常交易行为,申请溯源;然后验证发送方A的应用层签名SigA,若验证失败则向溯源审计节点举报异常交易行为,申请溯源。

整体交易流程如图3 所示。

图3 交易流程Fig.3 Process of transaction

3.2 弱监管

无证书公钥密码本身具有可追溯的特点,即使应用层KGC 无法掌握完整的用户私钥,但可以将用户公钥与其提供的网络层标识EID绑定写入列表,根据该列表进行追踪溯源,步骤如下:

1)审计节点通过主动嗅探或用户举报审查异常交易。

2)审计节点通过审查交易记录获取异常节点的交易标识AddressA(即WA)。

3)审计节点向应用层KGC 发送查询请求Src_requestApp(WA)。

4)应用层KGC 接收请求后查询(WA-EID),根据查询结果撤销该用户交易身份标识。

表1 部分标识对应表Tab.1 Partial identity corresponding table

3.3 强监管

强监管是指当应用层存在异常交易行为时,审计节点通过审查网络层数据包的签名,直接定位该签名对应的异常用户并对其进行审查及后续操作,有如下两种方案。

3.3.1 网络层签名溯源

1)审计节点通过主动嗅探或用户举报审查异常交易。

2)审计节点审查异常交易对应网络层数据包,根据数据包签名收集该签名对应的异常标识EIDA。

3)审计节点向网络层KGC 联盟发送查询请求Src_requestNet(EIDA)。

4)KGC 联盟根据接收到的EIDA查询对应的IDA,将其发送至审计节点,由审计节点对该IDA对应用户进行惩罚操作(如撤销身份等)。

3.3.2 双层参数传递溯源

1)审计节点通过主动嗅探或用户举报审查异常交易。

2)审计节点获取异常交易记录对应节点的公开交易标识(即WA)。

3)审计节点向应用层KGC 发送查询请求Src_requestApp(WA)。

4)应用层KGC 接收请求后查询(WA-EID),将查询结果EIDA发送至审计节点。

5)审计节点向网络层KGC 联盟发送查询请求Src_requestNet(EIDA)。

6)KGC 联盟根据接收到的EIDA查询对应的IDA,将其发送至审计节点,由审计节点对该IDA对应用户进行惩罚操作(如撤销身份等)。

溯源流程如图4 所示。

图4 监管和追溯流程Fig.4 Process of supervision and tracing

4 安全性及匿名性证明

定义1若攻击者在多项式时间内无法以不可忽略的概率攻破该模型,则称该模型是安全的。

4.1 网络层安全性

网络层行为包含应用层数据包的签名和审计,故网络层安全性可规约为网络层EID签名正确性与不可伪造性。

4.1.1 签名正确性

定理1若消息接收方在本地根据接收到的消息M′及相关参数w′构成的签名h′=H()M'‖w' 与其接收到的来自发送方的签名h不相同,即h≠h',则称本签名算法不正确,即模型失效。

证明 接收方B 首先验证h' ∈[1,N-1](N为循环群的阶),若h' ∉[1,N-1],则称签名不正确,接收方丢弃该数据包并向审计节点举报为异常交易;因为h′=H(M'‖w'),故若w=w',则根据SM9 算法签名验证部分可知,该签名h正确,则可证本文模型的正确性。

4.1.2 不可伪造性

对SM9 算法生成签名的攻击包括两类:类型-Ⅰ攻击者是普通的攻击者,试图通过伪装被攻击者A 来获取明文信息或是A 的私钥;类型-Ⅱ攻击者则是恶意的KGC,通过使用本身权限来获取被攻击者的隐私信息,甚至冒充被攻击者进行相关操作。

对于类型-Ⅰ的攻击者AⅠ,本文模型的安全性可规约为双线性对的安全性,即:若AⅠ在多项式时间内能够计算双线性对问题,则存在一个算法能够(在多项式时间内)求解椭圆曲线上的离散对数问题。而显然离散对数问题难解,故AⅠ获取被攻击者私钥或明文信息的概率可忽略不计;如果AⅠ使用自己的签名替换原有签名,则有由于网络层签名者(AⅠ)与应用层签名者(A)不匹配,该交易会被识别为异常交易,无法正常执行,故攻击者无法通过替换公钥对用户进行攻击,即AⅠ在该博弈中的优势可忽略不计。故敌手无法通过替换签名或伪造被攻击节点的密钥对来执行攻击行为,本文模型可以抵抗公钥替换攻击。

对于类型-Ⅱ的攻击者ΑⅡ,作为恶意的KGC,它可以通过其建立的(Mpk,Msk)来获取被攻击者EIDA对应的私钥EIDA_sk。由于本文模型采用双层认证的结构,即使攻击者获取了网络层标识对应的私钥,也无法通过该私钥获取对应的应用层密钥对(WA,sA)。应用层的密钥对是基于SM2 的无证书公钥密码,若ΑⅡ能够在多项式时间内根据被攻击者网络层标识EIDA和应用层交易标识WA计算出被攻击节点A 的应用层私钥sA,则存在一个算法能够在多项式时间内求解椭圆曲线上难题,而这在目前环境下是困难的。且网络层主密钥对(PKGC,MKGC)及相关参数Mpk由KGC 联盟中的所有KGC共同维护,若存在(KGC)异常行为,则可通过联盟内全体投票将恶意KGC 从联盟中排除来维持KGC 联盟和网络层的安全性。故ΑⅡ在博弈中几乎不可能取得难以忽略的优势来赢得该博弈,因此本文模型能够抵抗类型-Ⅱ攻击者在网络层的攻击。

4.2 应用层安全性

应用层行为主要包括用户申请交易标识及用户间交易,故应用层安全性可规约为基于SM2 算法的无证书公钥密码体制安全性。

定义2GDH 复杂性假设。给定一个阶为q的循环群上的一组元素(G,[α]G,[β]G)和一个DH 判定谕示DDH(Decisional Diffie-Hellman)(给定(G,[a]G,[b]G)可以判定X是否等于([ab]G),计算[α β]G是困难的,其中α,β∈R。

定理2在随机谕示和代数群模型下,对于基于SM2 的无证书加密算法,如果存在一个多项式时间攻击者以不可忽略优势赢得类型-I 或者类型-Ⅱ的博弈,则存在一个多项式时间的算法可以求解GDH 问题。

证明 1)类型-Ⅰ博弈。此类攻击者为除被攻击者外的某个普通节点,试图通过公开信息(Mpk,EID等)获取被攻击节点对应的私钥或发送消息中的明文数据。攻击者ΑⅠ可能采取的行为如下([AⅠ]代表AⅠ参与):

(1)(PKGC,MKGC) ←CL.Setup(1k);

(2)(UA,xA) ←CL.Set-User-Key(Mpk)[AⅠ];

(3)(WA,sA) ←CL.Set-Key(Mpk,EID,UA,xA)[AⅠ];

(4)C*←CL.Enc(PA,m);

(5)m' ←CL.Dec(sA,C*)[AⅠ]。

当m=m'时,则称攻击者以不可忽略的优势赢得该博弈。容易看出,攻击者ΑⅠ想要通过系统中的公开信息来获取被攻击者的私钥sA,并使用该私钥对密文C*解密。想要达成该目的,攻击者ΑⅠ应在CL.Set-User-Key 步骤中生成和被攻击者完全相同的(UA,xA)或是根据被攻击者的公开应用层交易标识WA计算。后一种在目前环境下是不可能的,而根据无证书密钥的生成方法,攻击者ΑⅠ生成和被攻击者相同的密钥的可能性几乎为0,即攻击者ΑⅠ在类型-Ⅰ博弈上的优势可忽略不计。

2)类型-Ⅱ博弈。此类攻击者为应用层恶意KGC,拥有KGC 主密钥对(PKGC,MKGC)及列表(EIDi,Wi),假定攻击者ΑⅡ在类型-Ⅱ的博弈中赢得该博弈的优势为ε(k),给定一个GDH 问题(G,[a]G,[b]G),博弈模拟者S 选择一个整数0 <K≤N,其中N为博弈中总共生成的公钥的个数。S 在博弈正式开始时构建并维护一个相关参数列表T=[EIDi,Pi,Ui,xi,di,si,wi],攻击者ΑⅡ可能采取的行为如下:

(1)(PKGC=[s]G,MKGC=s) ←CL.Setup(1k)[AⅡ];

(2)(wi,Wi,di) ← CL.Extract-Partial-Key(Mpk,MKGC,EIDi,[a]G)[AⅡ],ΑⅡ记录相关参数和Wi对应私钥;

(3)(W*,s*) ←CL.Set-Key[AⅡ]。

场景1 攻击者ΑⅡ若能通过其持有的部分密钥对及用户完整公钥Wi出用户持有的部分密钥对(UA,xA)或用户完整私钥sA,则称攻击者ΑⅡ能够以极大优势赢得此博弈,则存在一个算法能够在多项式时间内求解GDH 问题,与定义2 相悖。故攻击者ΑⅡ在此场景下优势极小,可忽略不计。

场景2 攻击者ΑⅡ根据在CL.Extract-Partial-Key 中记录的相关参数生成新的密钥对(W*,s*),并使用此新密钥对来伪装被攻击者进行异常操作。在此场景下,被攻击者原有的密钥对及对应的账户并不会失效,且攻击者无法通过伪身份(W*,s*)对被攻击者账户进行修改;且攻击者如果想使用伪身份(W*,s*)进行操作,还需要在网络层使用EIDi对应私钥EIDi_sk对消息进行双层签名。故想要完全伪造被攻击者的操作,除非攻击者ΑⅡ控制了应用层和网络层的全部KGC,而这发生的概率极小。因此,攻击者在此场景下的优势极小,故本文模型应用层安全得证。

4.3 匿名性分析

为保护用户身份隐私安全,本文模型在网络层使用去中心化的KGC 联盟进行用户网络层身份标识的维护和分发。去中心化的KGC 联盟能够很好地消除单一权威中心遭受攻击而失效或作恶带来的安全隐患;且SM9 标识密码的特性保证了网络层身份标识申请者能够根据自我身份标识ID 及相关派生信息直接在本地验证KGC 联盟发送过来的网络层身份标识EID,从而有效避免了在密钥交换过程中可能发生的标识替换攻击。

用户在申请网络层身份标识EID时向KGC 联盟提交用户独特身份标识ID 和真实地址Loc。KGC 联盟收到以上信息后对其进行加密混淆,生成多个网络层身份标识EID以达到匿名性,并以此防止第三方攻击者对用户进行流量关联分析和追踪溯源。利用去中心化思想构建的KGC 联盟为每个EID生成对应的私钥EID_sk,验证者可根据公开的EID对私钥签名的数据包等在本地进行验证。基于SM9 的去中心化KGC 联盟不仅能够在用户身份隐私保护、防止关联性分析和追踪溯源的基础上对网络层动态身份标识EID进行匿名验证,也可以解决现有PKI 体系下在证书分发、公钥管理等方面的开销,加快数据验证、传输的速度。若存在攻击者试图获取用户匿名身份,则有如下两种博弈:

类型-Ⅰ博弈 此类攻击者为除被攻击者外的某个普通节点,试图通过公开信息EID来获取用户真实身份ID 和真实位置Loc 或是通过关联性分析获取相关信息。由于网络层身份标识EID是由真实身份ID 和Loc 使用哈希函数H加密并混淆生成的,故若攻击者能够通过EID逆向溯源得到用户真实身份ID 和Loc,则哈希函数H不具有单向性,与哈希函数定义相悖,故在类型-Ⅰ博弈中攻击者优势极小,则用户身份匿名性在此场景下能够保证。

类型-Ⅱ博弈 此类攻击者为KGC 联盟中的恶意KGC,由于此类攻击者直接参与到公共参数及主密钥对的生成过程中,则该攻击者能够访问相关参数。而去中心化的结构使得单一恶意KGC 无法利用持有的密钥作恶,则少数类型-Ⅱ攻击者无法通过被攻击者的EID得到其真实身份ID,除非恶意KGC 超过KGC 联盟中成员数量的一半,而此类问题在任一相同结构的去中心化系统中都是存在的。因此,类型-Ⅱ攻击者在此博弈中优势极小。

因此,网络层去中心化的KGC 联盟能够抵抗类型-Ⅰ、类型-Ⅱ的攻击者,则称该模型可以保证用户身份匿名性。

5 实验与结果分析

本文模型的编译及测试均是在Linux 系统下进行,计算机软硬件配置:CPU 为AMD Ryzen 7 4800H 操作系统为Ubuntu 20.04;内存为8 GB;程序编译语言为Go 1.15.6。

本文模型中包含无证书公钥密码加密(CL-PKC_Encrypt)、解密(CL-PKC_Decrypt)、签名(CL-PKC_Sign)、验证(CL-PKC_Verify)以 及SM9 算法签名(SM9_Sign)、认 证(SM9_Verify),各算法耗时对比如表2 所示。

表2 本文模型内各算法的耗时对比Tab.2 Time consumption comparison of different algorithms in the proposed model

为了说明本文模型的运算效率与安全性,本文在此列举几种典型方案进行对比。将相关参数的生成作为预运算步骤,不计入比较中。不同模型的性能分析如表3 所示。

表3 不同模型的效率和抗攻击性对比Tab.3 Efficiency and anti-attack performance comparison of different models

在签名过程中,双线性对运算消耗的资源较多,因此主要对比该运算在各模型中使用的次数。由表3 可以看出,本文模型的签名耗时低于文献[12]模型;而验证耗时比文献[7]模型节省约40%,略高于文献[2]模型和文献[12]模型;相较于文献[7]模型,本文模型能够抵抗第Ⅰ类攻击和第Ⅱ类攻击,且采用双层签名认证,安全性更高。

本文还列举了几种区块链隐私保护方案,比较它们在匿名性、交易关联性、可追溯性上的强弱,如表4 所示。

表4 不同模型的安全性对比Tab.4 Security comparison of different models

文献[1]模型使用零知识证明技术保证强匿名性与弱关联性,同时也导致可溯源性弱;文献[2]模型将环签名与多中心的SM9 算法结合,增强了可溯源性,且保证了弱关联性;文献[5]模型同样使用了环签名技术,同时引入长期标识(longterm address)和一次性标识(one-time address)来保证交易的可溯源性和弱关联性;本文模型采用无证书公钥密码体制和多中心的SM9 算法相结合的双层认证模式,分别从应用层和网络层保证交易的匿名性,同时使用动态EID弱化交易间的关联性,可以抵抗流量分析攻击,通过将用户身份信息与其网络身份标识绑定来实现交易的可溯源性。

本文模型使用应用层无证书公钥密码体制和网络层SM9 密码结合的双层认证结构,为了保证用户节点间交易的匿名性和可监管性,在报文传输效率上会有额外开销。本文在同一环境下分别测试了本文模型和以太坊模型在不同传输模式下的传输耗时,测试结果如图5、6 所示。

图5 中比较了在相同软硬件环境中连续发送消息情况下,以太坊节点间通信耗时和本文模型构建的双层签名消息传输耗时。从图5 中可以得知,双层签名消息的传输耗时平均比以太坊模型多168%;以太坊模型通信耗时波动较小,而本文模型传输耗时相较而言波动较大。

图5 连续传输时两种模型的传输耗时对比Fig.5 Transmission time consumption comparison of two models under continuous transmission

图6 中比较了传输不同长度消息(16 b、64 b、256 b、1 024 b)时的传输耗时:总体上双层签名消息传输耗时要比以太坊节点多38%;随着消息长度的增加,消息传输消耗的时间总体上也在增加,而双层签名消息传输耗时的波动较大,不够稳定。

图6 传输不同长度消息时两种模型的传输耗时对比Fig.6 Transmission time consumption comparison of two models under transmitting messages with different lengths

本文还测试并比较了在同一网络环境下单层无证书公钥密码签名消息传输耗时和双层签名消息传输耗时,结果如图7 所示。

由图7 可知,单层无证书公钥密码签名在相同网络环境下发送不同长度信息的传输耗时要比双层签名分别少17.5%和9.6%,总体而言两者差距并不是很大。

图7 单层签名和双层签名耗时对比Fig.7 Comparison of time consumption of single-layer and double-layer signatures

经过多个角度的比较可以发现,目前本文模型使用的双层认证结构在信息传输耗时上比现有的区块链系统慢,但整体运行效率在可接受范围内。

6 结语

本文将无证书公钥密码和标识密码结合,综合两种密码的优点,构建了一种可监管的区块链匿名交易平台模型。本文模型在应用层使用与网络层身份标识关联的无证书公钥密码保证用户交易的可监管性,在网络层使用基于SM9 标识密码的网络身份标识保证用户身份匿名性,通过双层认证签名的结构保证了用户交易数据的安全性和不可篡改性。通过实验测试了模型各算法的性能,并对比了双层签名消息和纯数据流消息及以太坊节点间的传输耗时,通过实验结果可以得知本文模型还有很大的优化空间。

我国对区块链技术的重视程度不断增加,数字货币的出现意味着国家已迈出了区块链应用的一大步,为了使区块链技术更好地服务人民,如何更好、更安全地监管区块链成为亟待解决的主要问题之一。本文提出的区块链匿名交易模型将隐私性和可监管性兼容,能够在一定程度上解决上述问题,相信在未来会有更好的发展前景。

猜你喜欢

公钥应用层攻击者
基于贝叶斯博弈的防御资源调配模型研究
神奇的公钥密码
正面迎接批判
正面迎接批判
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用
一种公开密钥RSA算法的实现