Page 356 - 《软件学报》2021年第7期
P. 356

2274                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 主动参与,任何一个用户的退出都会导致混币交易失败;其次,在提供了更好隐私特性的方案中,如:MixCoin、
                 BlindCoin、Blind Signed Contract、CoinShulffle 和 CoinShuffle++等,均在链外引入了实体(混淆器、用户等)间
                 的多轮交互协议以提高安全性.这在一定程度上增加了系统实现的复杂性和运行开销.文献[56,57]中引入了聚
                 合签名技术,从而实现参与混币方之间的非交互式混淆过程.所谓聚合签名(aggregate signature)是指可将多个
                 消息的不同签名 1 , 2 ,…, n 聚合为一个签名并可进行有效验证的签名算法.非交互式聚合签名特性确保了交
                 易用户无需主动参与混淆过程,聚合签名的单向性确保了观察者无法通过聚合签名获得原始签名,从而隐藏了
                 真实交易的输入、输出对应关系.但交易的签名聚合过程需由第三方完成,如:矿工、Joiners 或 Merging Service
                 等.因此这一过程并未完全解决交易的内部不可链接性问题,仍存在一定的身份隐私泄漏风险.

                 4.3    自主混币技术
                    自主混币技术的典型代表是门罗币(Monero)             [10] .它是一个衍生自比特币的开源加密货币,其用户在混币过
                 程中无需第三方中心机构和其他用户的参与,可实现自主混币,能够有效杜绝原有混币方案面临的问题.门罗币
                 的设计基于 CryptoNote 协议   [58] ,并且提供了更强的隐私保护特性.在身份隐私保护方面,首先门罗币沿用了比特
                 币中基于椭圆曲线公钥密码体制的匿名身份认证技术,门罗币中每个用户随机生成两个椭圆曲线公钥(A,B)作
                 为用户的公开身份标识,相对应的私钥(a,b)由每个用户私自持有,并在交易过程中用于生成签名信息,完成用户
                 的身份认证和支付确认.但它不同于比特币所使用的 NIST 曲线和 ECDSA 签名算法                       [59] ,门罗币选用了设计更为
                 公开和高效的 ED 25519 数字签名模式          [60,61] ;其次,门罗币实现了交易过程中的身份隐藏机制,它使用环签名实
                 现了交易发送方的身份隐藏,使用隐蔽地址(stealth address)实现了交易接收方的身份隐藏                      [62] .一次性地址和环
                 签名组合方案构成了门罗币的自主混币技术.
                    门罗币沿用了比特币中的 UTXO 交易模型并设计了基于隐蔽地址的交易接收方身份隐藏机制.在每次交
                 易过程中,通过使用发送方生成的随机数和接收方的身份标识(A,B)来运行一个半 Diffie-Hellman 密钥交换协议
                 派生出一个一次性接收地址,从而将真正的交易接收方身份隐藏在整个可能的用户空间中,而只有持有相应私
                 钥(a,b)的人才能够判断出这是一笔发送给(A,B)的交易.此时对于系统总用户数为 N 的情况,观察者可成功判断
                 出接收方身份的概率为 1/N.
                    设椭圆曲线中的基点为 G,G 的阶数为 l,则门罗币中的隐蔽地址计算流程如图 12 所示.
                    (1) Alice 想要付款给 Bob,Alice 先需获取 Bob 的公钥信息(A,B);
                    (2) Alice 产生一个随机数 r[1,l–1],然后计算一次性公钥 P=H S (rA)G+B;
                    (3) Alice 计算 R=rG,然后生成一笔交易将 P 作为目的地址,并将 R 也放入交易中;
                    (4) Alice 将交易广播到区块链上;
                    (5)  Bob 检查区块链上每一笔交易,并用他自己的私钥(a,b)计算出相应的 P=H S (aR)G+B,因为 aR=arG=rA,
                 如果 P=P,那么说明这笔交易就是发送给自己的;
                    (6) Bob 找到自己的交易后就可以算出对应的一次性私钥 x=H S (aR)+b,且 P=xG,他可以使用私钥 x签名交
                 易来进行支付.











                                          Fig.12    Generation algorithm of stealthy address
                                                 图 12   隐蔽地址的生成算法
   351   352   353   354   355   356   357   358   359   360   361