区块链技术与应用 - P12 - 比特币的匿名性

Posted by raftale on October 8, 2024

比特币的匿名性

比特币的匿名并非真的匿名,而是假的匿名,匿名性不如现金。

什么情况下有可能破坏匿名性

比特币地址和交易都是在区块链中公开的,且不可篡改的。

  1. 输入地址和输出地址有可能可以通过交易分析关联起来。
  2. 跟现实身份产生关联的时候:
    • 如法币购买或提现的时候
    • 电商支付的时候
    • 社会工程学

如何提高匿名性

  1. network layer use tor
  2. application layer use coin mixing

零知识证明

零知识证明:一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露该陈述是正确的外的任何信息。

同态隐藏的性质:

  1. 如果x,y不同,那么它们的加密函数值E(x)E(y)也不相同。
    • 逆否命题:如果E(x)E(y)相同,那么x,y也相同。
  2. 给定E(x)的值,很难反推出x的值。
  3. 给定E(x), E(y)的值,我们可以很容易的计算出某些关于x, y的加密函数值
    • 同态加法:通过E(x), E(y)计算出E(x + y)的值
    • 同态乘法:通过E(x), E(y)计算出E(x*y)的值
    • 扩展到多项式

例子

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

  1. AliceE(x)E(y)的值发给Bob:利用了性质2
  2. Bob通过E(x)E(y)计算出E(x + y)的值:利用了性质3
  3. Bob同时计算E(7)的值,如果E(x + y) = E(7),那么验证通过,否则验证失败:利用了性质1

盲签方法

盲签的特点是 签名的人不知道签名内容的情况下进行签名。

  1. 用户A提供SerialNum,银行在不知道SerialNum的情况下返回签名token,减少A的存款
  2. 用户A把SerialNumtoken交给B
  3. 用户B把SerialNumtoken给银行验证,银行验证通过,增加B的存款
  4. 银行无法把A和B联系起来
  5. 中心化

零币和零钞

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