[发明专利]一种基于环签名和智能合约的以太坊交易隐私保护方法在审
申请号: | 202110656722.2 | 申请日: | 2021-06-11 |
公开(公告)号: | CN113645036A | 公开(公告)日: | 2021-11-12 |
发明(设计)人: | 黄杰;王威 | 申请(专利权)人: | 东南大学 |
主分类号: | H04L9/30 | 分类号: | H04L9/30;H04L9/32;H04L29/06 |
代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 程洁 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 签名 智能 合约 以太 交易 隐私 保护 方法 | ||
1.一种基于环签名和智能合约的以太坊交易隐私保护方法,其特征在于:包括如下步骤:
(1)生成账户地址:使用者需要采用椭圆曲线加密算法额外生成n个账户地址,具体如下所示:
addressPool={address0,address1,...,addressn-2,addressn-1}
addressPool中的每个账户地址都对应一个账户公钥,即addressi对应的账户公钥为addressPool中的每个账户地址都对应一个账户私钥,账户地址发起的每一笔交易都需要依赖于对应账户私钥进行的签名,即addressi对应的账户私钥为
使用者使用自己的账户地址addressA来替代addressPool中的addressj,其中j∈[0,n-1],生成了addressGroup;addressGroup中的账户地址对应的账户公钥集合为publicKeyGroup,具体如下所示:
addressGroup={address0,...,addressj-1,addressA,addressj+1,…,addressn-1}
(2)部署智能合约:使用者使用账户地址addressj来将交易隐私保护合约部署到以太坊主网络中,并生成合约账户地址addresscontract。账户地址addressj是该合约的拥有者,即owner=addressj。owner变量会保存到交易隐私保护合约中,交易隐私保护合约中的函数在调用时需要判断调用者的账户地址是否与owner变量相同,只有合约拥有者addressj才能调用合约中的函数。
(3)计算环签名:利用公钥集合publicKeyGroup与addressA对应的账户私钥来生成环签名σ,环签名σ采用的是AOS环签名算法,环签名σ表示为σ=(e0,s0,s1,......,sn-1),公钥其中为addressA对应的账户私钥且素数阶为q循环群是循环群的生成元;;等待被签名的消息M=keccak256(pwd),其中keccak256为哈希函数,pwd是使用者为计算环签名所设置的一次性口令,该口令在整个过程中都不会公开,只有使用者知道口令pwd的内容。
(4)向合约转账:交易隐私保护合约利用合约地址addresscontract来帮用户执行转账交易,但是用户需要提前使用账户地址addressj来将数额为amount的以太币(单位为wei)发送到合约账户地址addresscontract,这样交易隐私保护合约才会拥有数额为amount的以太币(单位为wei)以用于替用户执行转账交易。
(5)向合约发送公钥及环签名:使用者使用账户地址addressj对应的账户私钥xj来签名一个调用环签名合约上的sendRingSignature函数的交易。在交易中,使用者需要向函数传入的参数为账户地址集合addressGroup、账户公钥集合publicKeyGroup、环签名σ、被签名的消息keccak256(pwd)、交易接收者的账户地址addressB、交易转账的以太币数额amount,交易会被广播到交易隐私保护合约的账户地址addresscontract并调用sendRingSignature函数,而sendRingSignature函数会依次调用合约内的3个函数,分别是验证公钥的verifyPublicKey函数、验证环签名的verifyRingSignature函数、执行交易的transferEther函数。
(6)验证公钥:首先,verifyPublicKey函数利用msg.sender全局变量来获取交易发起者的账户地址。只有调用者的账户地址与owner变量相同时,即调用者的地址为addressj时,函数才能被调用成功,solidity智能合约中的msg.sender全局变量可以用来获取调用合约的账户地址,该变量获取到的是合约调用者的真实账户地址。
然后,verifyPublicKey函数会判断传入的账户地址集合addressGroup中的每个账户地址是否与账户公钥集合publicKeyGroup中的每个公钥对应,判断方法的伪代码如下所示:
for i=0;i<n;i=i+1 do
Pi=publicKeyGroup[i],addressi=addressGroup[i];
Base=0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
if(uint(keccak256(Pi))Base)≠uint(addressi)then
return false;
return true;
(7)验证环签名:接着,verifyRingSignature函数会被调用以判断传入的环签名σ=(e0,s0,s1,......,sn-1)的完整性。
(8)执行转账交易:transferEther函数会被调用以向特定的账户地址进行转账。一旦环签名认证成功,交易隐私保护合约会使用自己的合约账户地址addresscontract来向账户地址addressB发起转账交易,转账的金额是数额为amount的以太币(单位为wei)。交易隐私保护合约使用自己的合约地址addresscontract来帮助用户进行交易,成功地隐藏了用户的原始账户地址,实现了保护用户以太坊交易隐私的目的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110656722.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:防护服、控制系统及防护系统
- 下一篇:一种冲粉机