当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于环签名和智能合约的以太坊交易隐私保护方法技术

技术编号:30779301 阅读:16 留言:0更新日期:2021-11-16 07:39
本发明专利技术公开了一种基于环签名和智能合约的以太坊交易隐私保护方法,以隐藏用户的原始账户地址,实现了以太坊交易隐私保护,包括以下步骤:(1)生产账户地址;(2)部署智能合约;(3)计算环签名;(4)向合约转账;(5)向合约发送公钥及环签名;(6)验证公钥;(7)验证环签名;(8)执行转账交易,本发明专利技术能够在隐藏用户原始账户地址的情况下完成向目标账户地址转账的目的,同时保证交易的可追溯性。同时保证交易的可追溯性。同时保证交易的可追溯性。

【技术实现步骤摘要】
一种基于环签名和智能合约的以太坊交易隐私保护方法


[0001]本专利技术涉及密码学以及信息安全
,具体是一种基于环签名和智能合约的以太坊交易隐私保护方法。

技术介绍

[0002]随着以太坊等区块链系统的兴起,如何在开放的区块链系统中保护用户的交易隐私已成为一个重要的研究课题。区块链维护的公开账本中记录了所有的交易数据,包括了交易的发起账户和接收账户。虽然这些账户地址与用户在真实世界中的信息不存在任何关系,但是攻击者可以通过分析区块链中的交易和账户数据进而关联到用户在真实世界中的IP或者其他可识别的身份信息。
[0003]例如,某个用户在线下进行消费时通过以太币进行支付,那么商家事实上就将用户的线上以太坊账户地址和用户的线下身份之间建立了关联。一旦攻击者通过分析以太坊中的交易数据,锁定了某个接收转账的账户地址就是商家的账户地址。攻击者就可以通过入侵商家的数据系统来获取到用户的以太坊账户地址和真实世界身份的关联信息,严重威胁到用户的数字货币资产的安全。
[0004]在区块链交易隐私保护研究领域,环签名技术是研究和关注的热点。环签名算法是由Rivest等人于2001年提出的一种新型的数字签名算法,签名的生成过程中签名需要按照一定的规则首尾相接,形成环型结构,因此该算法被称为环签名。不同于群签名,环签名中不存在管理系统,因此无法撤消单个签名的匿名性。另外,环签名的生成不需要群签名中所需的群建立过程,大大增加了签名的生成效率。
[0005]环签名可以由一组具有公私钥对的签名者集合的其中任何一名成员执行,无需其他成员参与。实际的签名者可以使用自己的私钥以及签名者集合中所有成员的公钥来生成环签名,任何验证者都可以通过签名者集合中的公钥来验证该环签名是否由该签名者集合中的成员签发。如果签名通过验证,验证者也只能知道签名者属于签名者集合,但是却不能确定签名者是集合中的哪一个成员。因此环签名可以很好的保护用户隐私,实现匿名性。
[0006]智能合约是在以太坊虚拟机(Ethereum Virtual Machine,简称EVM)中运行的代码,可以理解为存在某个特定账户地址上的功能模块集合。基于目前主流的solidity编程语言,用户可以开发出实现定制化操作的智能合约。智能合约被部署到以太坊主网络以后,会生成一个特定的合约账户地址。当以太坊中的用户需要调用合约中的函数时,就可以使用发送交易信息的方式与合约账户地址进行通信。在消息字段中表明需要调用的功能函数,以及对应要传递的函数参数,函数执行成功后即代表此交易成功。此交易不同于传统的以太转账交易,并不涉及钱包之间余额的传递,但仍需花费gas,且每笔交易也和普通交易一样生成哈希值并保存在区块中。
[0007]作为目前比较热门的区块链系统,以太坊中的交易数据都是公开的,所以用户在以太坊中发起的任何交易都是公开透明的。本专利技术尝试通过环签名技术和智能合约技术来保护用户的以太坊交易隐私,在隐藏用户原始账户地址的情况下完成向目标账户地址转账
的目的,同时保证交易的可追溯性。

技术实现思路

[0008]本专利技术基于上述背景和存在的问题,拟提供一种基于环签名和智能合约的以太坊交易隐私保护方法,其能够在隐藏用户原始账户地址的情况下完成向目标账户地址转账的目的,同时保证交易的可追溯性。
[0009]为解决上述技术问题,本专利技术提供一种基于环签名和智能合约的以太坊交易隐私保护方法,包括如下步骤:
[0010](1)生成账户地址:使用者需要采用椭圆曲线加密算法额外生成n个账户地址,具体如下所示:
[0011]addressPool={address0,address1,...,address
n
‑2,address
n
‑1}
[0012]addressPool中的每个账户地址都对应一个账户公钥,即address
i
对应的账户公钥为addressPool中的每个账户地址都对应一个账户私钥,账户地址发起的每一笔交易都需要依赖于对应账户私钥进行的签名,即address
i
对应的账户私钥为
[0013]使用者使用自己的账户地址address
A
来替代addressPool中的address
j
,其中j∈ [0,n

1],生成了addressGroup;addressGroup中的账户地址对应的账户公钥集合为 publicKeyGroup,具体如下所示:
[0014]addressGroup={address0,...,address
j
‑1,address
A
,address
j+1
,...,address
n
‑1}
[0015][0016](2)部署智能合约:使用者使用账户地址address
j
来将交易隐私保护合约部署到以太坊主网络中,并生成合约账户地址address
contract
。账户地址address
j
是该合约的拥有者,即owner=address
j
。owner变量会保存到交易隐私保护合约中,交易隐私保护合约中的函数在调用时需要判断调用者的账户地址是否与owner变量相同,只有合约拥有者address
j
才能调用合约中的函数。
[0017](3)计算环签名:利用公钥集合publicKeyGroup与address
A
对应的账户私钥来生成环签名σ,环签名σ采用的是AOS环签名算法,环签名σ表示为 (e0,s0,s1,......,s
n
‑1),公钥其中为address
A
对应的账户私钥且素数阶为q循环群素数阶为q循环群是循环群的生成元;等待被签名的消息 M=keccak256(pwd),其中keccak256为哈希函数,pwd是使用者为计算环签名所设置的一次性口令,该口令在整个过程中都不会公开,只有使用者知道口令pwd的内容。
[0018](4)向合约转账:交易隐私保护合约利用合约地址address
contract
来帮用户执行转账交易,但是用户需要提前使用账户地址address
j
来将数额为amount的以太币(单位为wei)发送到合约账户地址address
contract
,这样交易隐私保护合约才会拥有数额为amount的以太币(单位为wei)以用于替用户执行转账交易。
[0019](5)向合约发送公钥及环签名:使用者使用账户地址address
j
对应的账户私钥x
j
来签名一个调用环签名合约上的sendRingSignature函数的交易。在交易中,使用者需要向函
数传入的参数为账户地址集合addressGroup、账户公钥集合publicKeyGroup、环签名σ本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于环签名和智能合约的以太坊交易隐私保护方法,其特征在于:包括如下步骤:(1)生成账户地址:使用者需要采用椭圆曲线加密算法额外生成n个账户地址,具体如下所示:addressPool={address0,address1,...,address
n
‑2,address
n
‑1}addressPool中的每个账户地址都对应一个账户公钥,即address
i
对应的账户公钥为addressPool中的每个账户地址都对应一个账户私钥,账户地址发起的每一笔交易都需要依赖于对应账户私钥进行的签名,即address
i
对应的账户私钥为使用者使用自己的账户地址address
A
来替代addressPool中的address
j
,其中j∈[0,n

1],生成了addressGroup;addressGroup中的账户地址对应的账户公钥集合为publicKeyGroup,具体如下所示:addressGroup={address0,...,address
j
‑1,address
A
,address
j+1


,address
n
‑1}(2)部署智能合约:使用者使用账户地址address
j
来将交易隐私保护合约部署到以太坊主网络中,并生成合约账户地址address
contract
。账户地址address
j
是该合约的拥有者,即owner=address
j
。owner变量会保存到交易隐私保护合约中,交易隐私保护合约中的函数在调用时需要判断调用者的账户地址是否与owner变量相同,只有合约拥有者address
j
才能调用合约中的函数。(3)计算环签名:利用公钥集合publicKeyGroup与address
A
对应的账户私钥来生成环签名σ,环签名σ采用的是AOS环签名算法,环签名σ表示为σ=(e0,s0,s1,......,s
n
‑1),公钥其中为address
A
对应的账户私钥且素数阶为q循环群素数阶为q循环群是循环群的生成元;;等待被签名的消息M=keccak256(pwd),其中keccak256为哈希函数,pwd是使用者为计算环签名所设置的一次性口令,该口令在整个过程中都不会公开,只有使用者知道口令pwd的内容。(4)向合约转账:交易隐私保护合约利用合约地址address
contract
来帮用户执行转账交易,但是用户需要提前使用账户地址address
j
来将数额为amount的以太币(单位为wei)发送到合约账户地址address
contract
,这样交易隐私保护合约才会拥有数额为amount的以太币(单位为wei)以用于替用户执行转账交易。(5)向合约发送公钥及环签名:使用者使用账户地址address
j
对应的账户私钥x
j
来签名一个调用环签名合约上的sendRingSignature函数的交易。在交易中,使用者需要向函数传入的参数为账户地址集合addressGroup、账户公钥集合publicKeyGroup、环签名σ、被签名的消息keccak256(pwd)、交易接收者的账户地址address
B
、交易转账的以太币数额amount,交易会被广播到交易隐私保护合约的账户地址address
contract
并调用sendRingSignature函数,而sendRingSignature函数会依次调用合约内的3个函数,分别是验证公钥的v...

【专利技术属性】
技术研发人员:黄杰王威
申请(专利权)人:东南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1