11 BTC-匿名性
《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click
11 BTC-匿名性
Bitcoin and anonimity
比特币是匿名的吗?一般我们认为,匿名与privacy联系起来的。
比特币中不要求使用真名,可以使用公钥产生的地址,但是并不是完全没有名字(化名),叫做 pseudonymity。(未名湖 unnamed lake)
比特币中的匿名不是一种真的匿名,而是一种假的匿名。该比特币的匿名性有什么真正的好处呢?跟法币、美元、现金相比呢?
与现金相比,比特币的匿名性没有现金好,现金是真正匿名的,所以很多非法大额交易都用现金。但现金不是很容易保管和运输。
与银行相比,银行是实名制。比特币不需要实名,这一点比银行好。(以前银行也可以用化名,只要有存折就行。)如果,银行用化名,隐私性,匿名性与比特币相比,哪个好?
比特币如果要把钱取出来该怎么办?网上的交易最终是要和实体世界联系起来的。
从某种程度上来说,如果银行允许用化名的话,它的匿名性比比特币要好。比特币的账本是公开的,所有人都能查到。而银行的账本是受控制的,只有工作人员可以查到。
比特币在什么情况下可以破坏匿名性?
第一方面:
每次收款都用不同的地址。其实,这些地址是可以关联起来的。比特币交易允许有多个输入和多个输出。
上述 addr1 和 addr2 可能是同一个人。输出地址中一般也有一个找零地址。
如何找到那个找零地址?但是我们可以分析出来:
上述 addr4 是个找零地址。
第二方面:
比特币账户对应现实生活中的某个人。任何比特币与实体世界发生联系的时候,都有可能泄露个人真实身份。
最明显的,资金的转入和转出。
怎么防范比特币洗钱?资金的转入和转出的时候,如果有一大笔钱进入比特币,或者比特币兑换法币,不引起司法部门的注意,是很难的。
第三方面:
用比特币做支付的时候。
吃饭、喝咖啡时使用比特币支付是一个bad idea。
1 延迟很大;
2 交易费很贵;
案例:通过处理过的信用卡数据,推算信用卡对应的交易是谁的。
可以通过某个人的支付时间,过滤到很多的无用信息。
所以,信用卡的信息不能公开。
所以,比特币的匿名性并不是绝对的,没有想象中的那么好。
实际中,匿名性保持的最好的是中本聪。没有花过钱。
早期中本聪花了很多的功夫。所以,不是为了钱。
silk road 非法网站(eBay for illegal drugs),为了逃避司法制裁,支付手段使用比特币,网络层使用洋葱路由(TOR)。
幕后老板被捕,美国政府没收十几万比特币。但是本人过的非常简朴的生活,赚的比特币一个都没有花。
据说是,用同一台电脑登陆了真实比特币账户和自己网站的账户。
silk road2
凡是用比特币从事违法活动的,都能被抓到。
为什么中本聪能保持匿名?
他之后就什么做。不是为了钱,也不是为了名。
hide your identity for whom?
如果你是个比特币用户,能采取什么样的方法尽量的提高匿名性?
网络层:网络层的匿名性学术界已经有了很好的解决方案,普遍的方法,可以使用多路径转发。像之前的洋葱路由(TOR),就是这个原理。(消息不是由send直接发给recieve,而是中间要经过很多跳,每个节点只知道上一个节点是谁,但是不知道最早发出的消息的人是谁。路径中只要有一个节点是诚实的,就能将send人的身份隐藏起来)
应用层:把各个不同的币混在一起,叫Coin mixing,(不论是区块链,还是其它领域,都是一个常用的方法,也就是把你的身份和周围人的身份混在一起)。如何实现呢?有一些专门的服务网站,收取一定的服务,发送给网站一些比特币,之后Coin mixing,之后可以把币取回来,取回来的币就不是发过去的币了。真正实施起来有一些困难。现在在区块链世界中,没有一些信誉非常高的Coin mixing的服务。
不可篡改性对于隐私保护来说,是灾难性的。一旦某个交易不小心把你的身份暴露出去,这个交易会被永久的写到区块链中。你的相关交易都会被查询到。
零知识证明:
零知识证明的例子,比特币相关,比如:我说,某一个比特币账户是我的,我要证明这一点,如何证明?
我知道私钥,但是我不能把私钥告诉你。(我想向你证明我有私钥,但是我不能把私钥告诉你)
上述例子中,算不算零知识证明其实是有争议的。我虽然没有泄露私钥,但是泄露了私钥的签名。(其实是透露了额外信息)
同态隐藏:
零知识证明的数学基础是同态隐藏。
第一条:与hash不同,hash可能有碰撞。(逆否命题:如果 $E(x)$ 和 $E(y)$相等,则 $x$ 和 $y$ 相等)
第二条:加密函数不可逆。
第三条:叫同态运算。对加密结果进行代数运算等价于对输入直接进行运算之后再加密。
上述过程使用了同态的三个方法。
缺陷:Bob可以通过蛮力法,遍历 x 和 y 的各种取值,用蛮力算法求得 x 和 y。所以,实际使用,Alice需要对 x 和 y 进行随机化处理,随机化处理是保证 x 和 y 加起来还是不变的。
如果央行发行数字货币,有什么什么办法既让央行做中心化的记账,又不让它知道呢?
虚拟货币的编号不能由央行产生,改成是用户产生的。
如果我在央行处存了100个央币,然后我取一个央币,每个币也有一个编号,我自己在本地产生一个编号,这个编号不能告诉央行,问题?可以使用盲签。
在不知道具体内容的情况下还要对其签名。
可以学学盲签的原理。
零币和零钞
零币和零钞可以从数学上证明花的币是合法的币,但是不知道具体是哪个。这样关联性破坏。
可以看看相关文献。
这些为匿名性设计的加密货币,到现在也不是很主流。
这些加密货币是为了匿名性付出了一定的代价,性能上付出了损失,而且,对初始化随机源有比较严格的要求。更重要的原因,需要强匿名性的用户也不是很多。其实大多数用户认为比特币匿名就够了。
零币和零钞虽然在数学原理上提供了很高的匿名性,但是它真的是百分之百安全的吗?有没有哪个匿名性的因素,仍然没有解决掉?
与实体发生交互的时候。