BTC-匿名性

Bitcoin and anonymity

比特币中不要求用真名,可以用公钥产生的地址,可以产生任意多的地址,用不同的地址干不同的事情。用的是化名,也被叫做pseudonymity。

一般来说,匿名性多与隐私保护相关。但实际上,比特币中的匿名并非真正的匿名,而是假的匿名。实际上,比特币与纸币相比,纸币的匿名性更好,因为其并没有对个人信息的标记。也正是因为其匿名性,很多非法交易采用现金交易(银行风控系统了解一下?)。但现金存在保管、运输等各个方面的不便。

实际上,比特币中的数据是完全公开的,而网上的交易是要与实体世界进行交易的,所以大大破坏了其匿名性。假如银行允许用假名(以前的存折时代),由于银行数据并非公开,所以银行系统的匿名性是要比比特币更好的。

BTC系统中什么情况会破坏其匿名性?
用户可以生成多个地址账户,但这些地址账户可以被关联起来
表面上看,每次交易可以更换公私钥对,从而每次都是新的账户,具有很强的匿名性。但实际上,这些账户在一定情况下,是可以被关联起来的。
例如下图,针对这样一个交易:
在这里插入图片描述

在图中可以看到该交易有2个输入和两个输出,所以addr1和addr2很可能是同一个人所持有的账户,因为该人同时拥有这两个私钥的地址。(一个账户中的钱可能不够)
而在输出中,很有可能有一个地址是属于找零钱的地址,即花掉之后剩余的钱。在某些情况下,也是可以分析出来的。
在这里插入图片描述

如上图,针对该交易,账户上面数字表示BTC,可以指导addr4很明显是找零钱的地址,而非addr3(支付6个比特币,单个账户不够用,所以用两个账户)。

地址账户与个人在真实社会中的身份也可能会产生关联。
任何使得BTC和实体世界中关联的操作都有可能泄露用户真实身份,其中最明显的就是资金的转入转出。要得到BTC,如果用钱买,就会与实体世界进行交互。想要将BTC转为现实中的货币,也同样需要与实体世界交互。
在很多国家,都有防洗钱法。如何防范不法分子采用BTC进行洗钱呢?其实很简单,只需要盯住资金转入转出链即可。对于大额资金转入BTC或将大量BTC转为现实货币,很难逃避司法金融机构的监管。

BTC支付时候
例如某些商家接受用BTC进行支付,例如可以用BTC购买咖啡、蛋糕等。(这种场景信用卡已经解决的很好了,用BTC交易延迟高,交易费贵,并非一个好的idea)
在进行支付时候,便和个人账户建立了联系,从而会泄露掉个人信息。
也就是说,BTC并不是具有很好的匿名信。实际中,很多人保持有较好的匿名性。保持最好的便是其开发者中本聪,其参与BTC时间最长,全世界都想知道他是谁。但实际上,中本聪的比特币并非有花出去,这也使得我们难以发现他具体是谁。

以前美国有一个skil road网站,也被叫做eBay for illegal drugs,主要用于匿名支付,采用各类可以躲避监管的方法(因为售卖的都是违禁品)。但运行没有几年就被查封,其老板当时赚取了许多比特币,从纸面上看,已经实现了小目标(一个亿)。但由于其担心被发现,这些钱实际中一个都不敢花,在美国仍然过的是非常简朴的生活(《人民的名义》赵德汉:“我一个都没敢花.”)。最终据说由于在同一电脑上登录现实社会账户和非法网站上账户,从而被抓(具体原因未公开)。
skil road被查封后,有人开通了skil road2,运行没有几年又被查封。

因此,可见互联网并非法外之地。如果想要干坏事,基本都能被查到。
中本聪为何能保持如此好的匿名性,因为在比特币走上正轨之后,他就功成身退消失了,这也是他到现在也没有泄露身份的原因。

  • BTC匿名性有多好?如何提高匿名性?
    匿名的本质是不想要暴露身份。而对于普通人来说,BTC的现有机制已经足够保持个人隐私了。但如果涉及违法,行政机关想要获得真实身份,其实很容易。

  • 那么可以采取哪些方法尽可能提高匿名性?
    从应用层看,可以将各个不同用户的BTC混合在一起,使得追查变得混乱(Coin mixing);从网络层看,可以采用多路径转发的方法,数据不直接发送出去,而是经过很多跳(洋葱路由的基本思想)。

实际上,暴露用户隐私正是由于区块链的公开性和不可篡改性。不可篡改性对于隐私保护,是灾难性的,因为一旦某一个交易不小心把身份暴露出去了,这个交易永久的写在区块链里,想抹掉都不能。

零知识证明

零知识证明:一方(证明者)向另一方(验证者)证明某一个陈述是正确的,但不需要透露除该陈述是正确的之外的任何信息。
例如:A想要向B证明某一账户属于A,这说明A知道该账户的私钥。但不可能通过A公布私钥的方法来证明,该账户确实属于A。因此,A可以产生一个账户签名,B通过公钥对签名进行验证。(实际上该证明是否属于零知识证明存在争议,因为泄露了用私钥产生的签名)

同态隐藏

零知识证明的数学基础便是同态隐藏。同态隐藏的三个性质。

  • 如果 x , y x,y x,y不同,那么它们的加密函数值 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)也不相同。说明如果有E(X)=E(y),则必然有x=y。(无碰撞)
  • 给定 E ( x ) E(x) E(x)的值,很难反推出 x x x的值。说明加密函数不可逆。知道加密值,无法反推出密码值。
  • 给定给你个 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)的值,我们可以很容易计算出某些关于 x , y x,y x,y的加密函数值。说明对加密后的函数值进行某些代数运算,等价于对输入直接进行代数运算再加密。
    • 同态加法:通过 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x + y ) E(x+y) E(x+y)的值
    • 同态乘法:通过 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x y ) E(xy) E(xy)的值
    • 扩展到多项式

例子:Alice想要向Bob证明她知道一组数 x 和 y x和y xy使得 x + y = 7 x+y=7 x+y=7,同时不让Bob知道 x 和 y x和y xy的具体数值。

简单的版本:

  1. Alice把 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)的数值发给Bob
  2. Bob通过收到的 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x + y ) E(x+y) E(x+y)的值
  3. Bob同时计算 E ( 7 ) E(7) E(7)的值,如果 E ( x + y ) = E ( 7 ) E(x+y)=E(7) E(x+y)=E(7),那么验证通过,否则验证失败。

盲签方法

  • 用户A提供SerialNum(货币编号),银行在不知道SerialNum的情况下返回签名Token,减少A的存款
  • 用户A把SerialNum和Token交给B完成交易
  • 用户B拿SerialNum和Token给银行验证,银行验证通过,增加B的存款
  • 银行无法把A和B联系起来。
  • 中心化。
    盲签名是一种特殊的数字签名技术。盲签名因签名的人看不到所签署文件的具体内容而闻名,它有两个显著的特点:一是签名者对消息的内容是不可见的 ;二是签名被公开后,签名者不能追踪签名。

零币和零钞

  • 零币和零钞在协议层就融合了匿名化处理,其匿名属性来自密码学保证。
  • 零币(zerocoin)系统中存在基础币和零币,通过基础币和零币的来回转换,消除就地址和新地址的关联性,其原理类似于混币服务。
  • 零钞(zerocash)系统使用zk-SNARKs协议,不依赖一种基础币,区块链中只记录交易的存在性和矿工用来验证系统正常运行所需要关键属性的证明。区块链上既不显示交易地址也不显示交易金额,所有交易通过零知识验证的方式进行。

零币在花费的时候,只需要用零知识证明来证明所花掉的币是系统中存在的某一个合法的币,但不用透露具体花掉的是系统中哪一个币。这样就破坏了关联性。
当然,这类货币并非主流加密货币,因为其为了设计匿名性,付出了一定代价,而且,需要强匿名性的用户并不多。

从数学上看,零币和零钞是安全的。但其并不是百分之百的匿名,其并未解决与系统外部实体发生交互时对匿名性的破坏。

参考来源:
https://www.bilibili.com/video/BV1Vt411X7JF?p=12
https://blog.csdn.net/Mu_Xiaoye/article/details/104439918

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值