最近看区块链方面的论文,看到了一个BlindCoin的概念,BlindCoin所依靠的原理是盲签名
在区块链上用户都是进行点对点的交易,因此如何保证用户交易信息不被泄露成为了一个问题。所谓的BlindCoin就是一种中心化混币机制,通过一个第三方服务商将需要交易的用户的资金进行混合,然后再输出至用户要求的地址。
如果不同地址之间存在稳定的关联交易,攻击者可以分析不同地址之间的交易关系图,推导出一些用户特征数据。此外,攻击者可以通过搜索所有可能的近似余额的交易来获取相应的交易地址,然后可以推断出用户的身份信息和位置信息。
基于中心节点的混币机制原理如上图所示。为了防止潜在攻击者直接发现A1和B1之间的关系,用户A1将资金转移到第三方节点MIX,MIX收到资金后可以转账给用户B1,最终实现A1和B1之间的资金转移。在某段时间内,中心节点MIX可能已经完成了多用户混币的过程,部分隐藏了A1和B1之间的关系,这使得攻击者无法在不同的接收者 B1、B2、B3中找到与A1关联的地址。但是,通过对A1、B1一段时间内的交易过程进行综合分析,攻击者有一定的概率猜测B1是A1对应的真实接收者。例如,如果MIX在一定时间内有n个输出,则攻击者找到正确交易链接的概率为l/n。所以,MIX中添加的交易越多,找到原始交易记录的概率越低,数据越安全。
但同时这里也会存在问题,因为第三方服务商MIX是知道用户的输入地址和输出地址,如果第三方是一个不诚实节点,那用户的隐私信息就会被泄露,因此出现了BlindCoin,他所解决的问题就是让用户的输入输出地址之间的联系对第三方服务商是不可见的。
盲签名技术的整体流程如下图 所示,主要分为以下 4 个步骤.
- 签名申请者首先将消息进行盲化操作,将盲化消息发给签名者.
- 签名者对盲化消息进行签名操作,将盲化签名返回签名申请者.
- 签名申请者对收到的盲化签名再作去盲变换,得出的就是签名者对原数据的签名.
- 签名申请者可以将原始消息与去盲化签名发送给签名验证者进行验证.
用一个简单例子来给大家进一步讲解这个过程,交易用户A1将自己想要输出的交易地址B1放入一个带有复写纸的密封的信封(上面的第一步,盲化消息),让第三方服务商进行签名,这时候第三方服务商是看不到你想要输出的交易地址B1,他在信封上签字,而信封里的复写纸这时候就有了他的签名,这就类似于盲消息签名,当第三方签完名发回给用户A1,A1这时候就可以打开信封拿到第三方的签名(这就是我们上面的第三步,签名去盲化),最后我们A1就能将我们的message(也就是我们的想要输出的交易地址B1)与去盲化签名一起给第三方服务商去验证签名的真实性。这样服务商在协商阶段知道用户的输入地址但不知道输出地址,而在输出阶段知道输出地址而不知道对应的输入地址,因而无法判断用户输入输出地址的关系,这样就可以有效的保证用户的地址信息不被第三方服务商所泄露。
参考文献: [1]Dan Wang,Jindong Zhao,Yingjie Wang. A Survey on Privacy Protection of Blockchain: The Technology and Application[J]. IEEE Access,2020,8: [2]张奥,白晓颖.区块链隐私保护研究与实践综述[J].软件学报,2020,31(05):1406-1434.DOI:10.13328/j.cnki.jos.005967.
|