【技术实现步骤摘要】
一种基于环签名和智能合约的以太坊交易隐私保护方法
[0001]本专利技术涉及密码学以及信息安全
,具体是一种基于环签名和智能合约的以太坊交易隐私保护方法。
技术介绍
[0002]随着以太坊等区块链系统的兴起,如何在开放的区块链系统中保护用户的交易隐私已成为一个重要的研究课题。区块链维护的公开账本中记录了所有的交易数据,包括了交易的发起账户和接收账户。虽然这些账户地址与用户在真实世界中的信息不存在任何关系,但是攻击者可以通过分析区块链中的交易和账户数据进而关联到用户在真实世界中的IP或者其他可识别的身份信息。
[0003]例如,某个用户在线下进行消费时通过以太币进行支付,那么商家事实上就将用户的线上以太坊账户地址和用户的线下身份之间建立了关联。一旦攻击者通过分析以太坊中的交易数据,锁定了某个接收转账的账户地址就是商家的账户地址。攻击者就可以通过入侵商家的数据系统来获取到用户的以太坊账户地址和真实世界身份的关联信息,严重威胁到用户的数字货币资产的安全。
[0004]在区块链交易隐私保护研究领域,环签名技术是研究和关注的热点。环签名算法是由Rivest等人于2001年提出的一种新型的数字签名算法,签名的生成过程中签名需要按照一定的规则首尾相接,形成环型结构,因此该算法被称为环签名。不同于群签名,环签名中不存在管理系统,因此无法撤消单个签名的匿名性。另外,环签名的生成不需要群签名中所需的群建立过程,大大增加了签名的生成效率。
[0005]环签名可以由一组具有公私钥对的签名者集合的其中任何一名成员 ...
【技术保护点】
【技术特征摘要】
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...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。