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

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

                 个消息是由环中同一个签名人产生的.其中,判断链接性的算法如下定义.
                    签名链接算法.其输入是环 U={U 1 ,U 2 ,U 3 ,…,U n }的两个消息签名对(m, 1 )、(m, 2 ),当签名 1 、 2 是由同一个
                 环成员产生时,算法输出为 1,否则为 0.
                    门罗币用户在进行交易时首先执行自主混币过程,即搜索链上具有相同面额的 UTXO,选择它们的公钥和
                 自身公钥一起来构成环(匿名集合);其次,用户通过自身私钥和环成员的公钥对支付消息生成环签名;最后,验证
                 节点验证环签名的有效性和链接性(防双花).门罗币自主混币过程的实例如图 15 所示:以其中的交易 TXN 2 为
                 例,交易发送方 P 4 与具有同等货币面额的支付者 P 2 、P 5 、P 6 混淆在一起构成一个环进行交易.对于观察者来说,
                 通过支付信息和签名无法辨别出交易发送方的真实身份.
                    通过对上述分析可知,门罗币采用基于可链接环签名技术的混淆方案实现了如下 3 个功能:(1)  利用环签名
                 的匿名性将交易发送方的身份隐藏在环成员构成的匿名集合中;(2)  利用环签名的不可伪造性实现了用户对交
                 易行为的确认和不可否认;(3)  利用可链接环签名的可链接性防止货币(UTXO)双花(double spending).












                                                Fig.15    Mixing coin in Monero
                                                 图 15   门罗币自主混币过程

                    门罗币早期版本使用的是 CryptoNote 协议中定义的一次性环签名算法                    [58] ,该算法是对 Fujisaki 和 Suzuki
                 工作的改进    [66] .
                    (1)  密钥生成
                    签名者首先随机选择一个私钥 x[1,l–1],然后计算对应的公钥 P=xG 和密钥镜像 I=xH p (P).其中,密钥镜像
                 用于可链接性的判断.
                    (2)  签名验签
                    签名者随机选择一个包含 n–1 个元素的公钥集合,然后与自己的公钥进行混淆产生混合后的集合 S=(P 1 ,
                 P 2 ,…,P n ),使用输入消息 m、集合 S 和私钥 x 基于文献[67]中的零知识证明技术来生成签名信息=(I,c 1 ,…,c n ,
                                                                                                 –1
                 r 1 ,…,r n ).这一协议过程是证明签名者知道私钥 x,该私钥对应于集合 S 中的某个公钥 P=xG 且 H p (P)=I·x .验证者
                 接收到签名后使用输入消息 m 和公钥集合 S 对签名进行验证.
                    (3)  链接算法
                    若验签通过,则验证者还需进一步检查 I 是否曾被用于过去的签名.如果存在重复使用,则说明签名来自同
                 一个私钥 x,意味着存在货币双花问题.
                    门罗币在发展过程中也在不断进行环签名技术的优化.2015 年,Back 等人提出了对 CryptoNote 一次性环签
                 名结果存储空间的优化方案           [68] .该方案基于 Liu 等人提出的可链接自组织匿名群签名方案 LSAG(linkable
                 spontaneous anonymous group signatures,简称 LSAG) [69] ,改进后的签名数据为=(I,c 1 ,r 1 ,…,r n ),在存储空间上约
                 缩减为原来的一半.但采用 LSAG 的 CryptoNote 方案也存在不足.首先,明文的交易金额为观察者提供了分析的
                 便利,基于特定金额可实现身份追踪;其次,由于交易发送方在自主混币过程中需在公开账本中寻找相同金额的
                 UTXO 并使用其属主身份构成环(匿名集合),这在一定程度上带来了交易过程中匿名集合过小的问题,从而造
                 成身份隐私泄漏.此外,LSAG 方案只能支持单输入交易的身份混淆,这限制了其应用范围.
                    为了解决 LSAG 方案的上述问题,后续的门罗币 Ring CT(ring  confidential transactions)版本又提出了多层
   353   354   355   356   357   358   359   360   361   362   363