12-BTC-匿名性

学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=12
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。

文章目录

  • [1. 比特币是匿名的吗?](#1. 比特币是匿名的吗?)
  • [2. 破坏比特币匿名性的两个方面](#2. 破坏比特币匿名性的两个方面)
    • [2.1 方面一:多个账户地址可以被关联起来](#2.1 方面一:多个账户地址可以被关联起来)
    • [2.2 方面二:比特币地址与现实身份发生关联](#2.2 方面二:比特币地址与现实身份发生关联)
  • [3. 怎么尽量提高比特币的匿名性?](#3. 怎么尽量提高比特币的匿名性?)
  • [4. 零知识证明(Zero-Knowledge Proof, ZKP)](#4. 零知识证明(Zero-Knowledge Proof, ZKP))
  • [5. 零币(Zerocoin)与零钞(Zerocash)](#5. 零币(Zerocoin)与零钞(Zerocash))
    • [5.1 零币(Zerocoin)](#5.1 零币(Zerocoin))
    • [5.2 零钞(Zerocash)](#5.2 零钞(Zerocash))
  • [6. 总结](#6. 总结)

1. 比特币是匿名的吗?

一般来说,匿名是和隐私保护联系在一起的,就是指我做了什么操作,不希望别人知道。比特币不需要真名,用的是公钥产生的地址,属于化名(pseudonymity),而非完全匿名。

与法币相比:

  • 现金是完全匿名的,因为纸币上没有任何个人信息,交易双方无需任何身份验证。
  • 银行系统则要求实名制,所有交易都绑定真实身份。

如果银行也使用化名账户(即不关联真实身份),其匿名性反而可能优于比特币 ,因为银行账本是受控的------只有银行和授权司法机构可以查看,而普通人无法访问。

但比特币的账本(区块链)是公开透明 的,任何人都可以查看每一笔交易的输入、输出、时间戳和金额。因此,比特币的匿名性不如现金,甚至在某些方面不如受控的银行系统。

2. 破坏比特币匿名性的两个方面

2.1 方面一:多个账户地址可以被关联起来

从输入推断

比特币交易中常包含多个输入和多个输出。如果多个输入地址出现在同一笔交易中,通常可推断它们属于同一个控制者或者多方联合支付。

从输出推断

例如:

  • 输入1:4 BTC
  • 输入2:5 BTC
  • 输出1:6 BTC
  • 输出2:3 BTC

总输入为9 BTC,总输出也为9 BTC。其中6 BTC可能是支付给对方,3 BTC则是找零。由于找零地址通常由发送方钱包自动生成,分析者可通过启发式规则(如"找零地址通常未被使用过"、"金额较小"等)推测出哪个输出是找零,从而将该找零地址与发送方关联。

这种链上行为分析(chain analysis)使得多个地址可能被聚类到同一个实体,破坏了用户的伪匿名性。

2.2 方面二:比特币地址与现实身份发生关联

一旦比特币地址与现实世界的身份信息产生联系,匿名性就可能彻底失效。常见场景包括:

  • 通过交易所充值或提现:绝大多数合规交易所要求 KYC用户需提供身份证、银行卡等信息。一旦你从交易所提币到某个地址,该地址就与你的身份挂钩。
  • 线下消费:比如在餐馆用比特币支付。虽然技术上可行,但比特币交易确认慢、手续费高,实际很少用于日常小额支付。即便如此,若商家记录了你的交易 ID 和消费时间,并结合其他信息(如监控、订单姓名),仍可能反推出你的身份。
  • 公开捐款或打赏:如果你在社交媒体上公布"请打赏到这个地址",那么该地址就直接与你的网络身份绑定。

典型案例 :中本聪之所以至今身份未暴露,一个重要原因是他从未将早期挖出的大量比特币花出去。一旦他尝试将这些币兑换成法币,就必须通过交易所,从而暴露身份。

但中本聪只是个例,因为他没花过这些钱。所以并不是说比特币合适非法活动,恰恰相反,因其公开账本特性,执法机构往往能通过链上追踪锁定嫌疑人。

3. 怎么尽量提高比特币的匿名性?

比特币协议运行在应用层,底层是 P2P 网络。提升匿名性需从网络层应用层两方面入手。

3.1 网络层:隐藏 IP 地址

比特币节点广播交易时会附带 IP 信息。如果攻击者监控网络流量,可能将某笔交易与特定 IP 关联。

  • 风险示例:你在网吧用比特币钱包发送交易,网吧需实名登记,执法部门可通过 IP 追查到你。
  • 解决方案 :使用洋葱路由(Tor)VPN,让交易经过多跳转发,隐藏真实 IP。理想情况下,交易应通过 Tor 网络广播,避免直接暴露地理位置。

3.2 应用层:切断地址之间的关联------混币

核心问题是:同一个人的不同地址容易被聚类。解决思路是"混币"(CoinJoin)或"洗币"。

方法一:使用混币服务

用户将比特币发送到一个混币平台,平台将多个用户的币混合后,再分别发送到各自的新地址。这样,链上就难以追踪原始资金流向。

  • 缺点 :这类服务通常是中心化的,存在跑路风险(卷款消失)。且若平台被监管或日志被获取,反而会成为身份泄露的源头。
  • 改进方案 :使用去中心化混币协议,如 Wasabi WalletSamourai Wallet 中的 CoinJoin 功能,多方协作完成混合,无需信任第三方。

方法二:利用在线钱包或交易所"间接混币"

虽然不是设计目的,但某些操作天然具有混币效果:

  • 你将法币存入交易所 → 买入比特币 → 提现到新地址;
  • 或者:比特币 → 交易所 → 兑换成以太坊 → 提现 → 再换回比特币。

最终拿到的比特币,在链上已与原始地址无直接路径关联(前提是交易所不保留或泄露用户交易映射关系)。

注意:此方法依赖交易所的隐私政策,且仍需 KYC,仅能增加追踪难度,不能保证完全匿名。

4. 零知识证明(Zero-Knowledge Proof, ZKP)

零知识证明是指:证明者(Prover)向验证者(Verifier)证明某个陈述为真,而无需透露除"该陈述为真"之外的任何信息

经典例子:私钥所有权证明

你想向别人证明你拥有某个比特币地址的私钥,但又不想泄露私钥本身。

  • 你可以对该地址的公钥进行签名(例如对一段随机消息签名)。
  • 对方用公钥验证签名有效性。
  • 若验证通过,则说明你确实掌握私钥。

这算不算零知识证明?有争议

虽然你没有泄露私钥,但你泄露了一个由私钥生成的签名 。严格意义上的零知识证明要求完全不泄露任何额外信息

4.1 同态隐藏(Homomorphic Hiding)

同态隐藏是一种满足以下性质的加密函数 E ( x ) E(x) E(x):

  1. 唯一性 :若 x ≠ y x \ne y x=y,则 E ( x ) ≠ E ( y ) E(x) \ne E(y) E(x)=E(y)(无碰撞);反之,若 E ( x ) = E ( y ) E(x) = E(y) E(x)=E(y),则 x = y x = y x=y。
  2. 不可逆性 :给定 E ( x ) E(x) E(x),无法反推出 x x x(类似哈希的 hiding 性质)。
  3. 同态性:可在密文上进行代数运算,结果等于明文运算后再加密。

常见类型:

  • 同态加法 :可从 E ( x ) E(x) E(x) 和 E ( y ) E(y) E(y) 计算出 E ( x + y ) E(x + y) E(x+y)
  • 同态乘法 :可从 E ( x ) E(x) E(x) 和 E ( y ) E(y) E(y) 计算出 E ( x y ) E(xy) E(xy)
  • 可扩展至多项式计算

应用示例:

Alice 想向 Bob 证明她知道两个数 x x x 和 y y y,使得 x + y = 7 x + y = 7 x+y=7,但不想透露 x x x 和 y y y 的具体值。

  1. Alice 发送 E ( x ) E(x) E(x) 和 E ( y ) E(y) E(y) 给 Bob。
  2. Bob 利用同态加法计算 E ( x + y ) E(x + y) E(x+y)。
  3. Bob 比较 E ( x + y ) E(x + y) E(x+y) 是否等于 E ( 7 ) E(7) E(7)。
    • 若相等,则验证通过;
    • 由于 E E E 是隐藏的,Bob 无法得知 x x x 或 y y y; 不可逆性
    • 由于无碰撞,若等式成立,则必然有 x + y = 7 x + y = 7 x+y=7。 唯一性 + 同态加法

补充 :为防止 Bob 通过穷举猜测 x x x,Alice 通常会对 x x x 和 y y y 加入随机盲因子(blinding factor),在保持 x + y = 7 x + y = 7 x+y=7 不变的前提下扰乱具体数值。


4.2 盲签(Blind Signature)

在中心化电子现金系统中,为防止双花(double-spending),银行需跟踪每张"电子钞票"的编号,记录编号的钱属于谁,但这样就失去了匿名性。

盲签机制解决了这一矛盾:

  1. 用户 A 自己生成一个唯一编号(代表一张电子货币),但不告诉银行内容
  2. A 对该编号进行"盲化"处理(加入随机数),然后发送给银行。
  3. 银行对盲化后的数据签名(相当于"盖章"),并扣减 A 的存款。
  4. A 去盲化,得到银行对原始编号的有效签名(即 token)。
  5. A 将编号 + token 发送给 B 完成支付。
  6. B 将编号和 token 提交给银行,银行验证签名有效后,增加 B 的存款,并记录该编号已使用(防双花)。

关键优势 :银行无法将 A 和 B 关联起来,因为签名时看不到原始编号。
局限:仍是中心化模型,依赖可信银行。A转给B后,银行知道了这个钱属于B,如果B再转给C或者兑现,就又失去了匿名性。

5. 零币(Zerocoin)与零钞(Zerocash)

为在协议层实现强匿名性,密码学家提出了基于零知识证明的加密货币方案。

5.1 零币(Zerocoin)

  • 在比特币基础上增加一种新币种:"零币"。
  • 用户可将一定数量的比特币(基础币)销毁,同时生成等值的零币。
  • 零币花费时,通过零知识证明证明"我拥有一个未被花费的零币",但不透露是哪一个
  • 花费后,新生成的基础币与旧地址无任何链上关联。

本质是内置的、无需信任的混币机制

5.2 零钞(Zerocash)

  • 更进一步:完全隐藏交易双方地址和交易金额
  • 使用 zk-SNARKs(零知识简洁非交互式知识证明)技术。
  • 区块链只记录:
    • 交易存在
    • 输入未被双花
    • 金额守恒
    • 不记录发送方、接收方、金额
  • 所有验证通过零知识证明完成,矿工只需验证证明有效性。

6. 总结

  • 比特币是伪匿名的,不是完全匿名。

  • 匿名性弱于现金,因所有交易公开可查

  • 匿名性可能被破坏的两大途径:

    1. 地址聚类分析(链上行为)
    2. 与现实身份关联(交易所、消费等)
  • 提升匿名性需结合:

    • 网络层(洋葱路由)
    • 应用层(混币)
  • 中本聪的匿名得以维持,正因为他从未动用那些币------一旦进入现实金融系统,匿名屏障极易崩塌。

相关推荐
henujolly2 小时前
区块链pow和pos
区块链
老蒋每日coding4 小时前
从存证到智能:当碳链架构注入AI灵魂——区块链+AI融合新范式
人工智能·区块链
henujolly8 小时前
区块链p2p
服务器·区块链·p2p
老蒋每日coding9 小时前
基于FISCO BCOS 部署 Solidity投票智能合约 并基于GO SDK进行合约调用指南
golang·区块链·智能合约
MQLYES9 小时前
20-ETH-难度调整
区块链
MQLYES1 天前
17-ETH-交易树和收据树
区块链
终端域名1 天前
区块链技术在金融领域的实际应用方法
金融·区块链
MQLYES1 天前
16-ETH-状态树
区块链
MQLYES1 天前
18-ETC-GHOST
区块链