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)版本又提出了多层