匿名和隐私保护
1. 比特币的匿名性原理
1.1 区分与普通货币
如果是与银行这样的中心化架构相比,比特币的匿名性要更好,因为银行需要实名制等
但比特币的匿名性是很容易被破坏的
1.2 破坏匿名性的方法
1.2.1不同账户之前可以进行关联
假设你每次收款都用不同的地址,支付的时候也随机选择其中一部分地址进行支付,这种匿名情况看似很好,但是这些账户之前的关联性其实很容易被识破
举例说明:
1.2.2 与实体世界进行关联
账户地址与真实世界中的地址之间的关联性可能会被找到,只要使用比特币与实体世界发生了交互,;就有可能泄露地址,最明显的是线下买卖比特币,以现金购买,并且,只要你在某个特定的时间地点使用了比特币,就可以通过过滤区块链中的时间的方式推测出这些交易是属于谁的。
由于比特币系统的不可篡改性,如果你的账户关联性被发现,只要有一个账户对应所有人的信息被发现,其他账户会被连根拔起,对用户比特币账户的匿名性是一个大大的损伤。
2.提高用户使用比特币匿名性的方法(或者说隐私保护)
提高使用比特币匿名性主要从两个层面出发,一个是用网络层,从网络IP的角度出发,一个是应用层,比特币协议是运用在应用层的,可以通过coin mixing混合交易的办法,达到匿名目的。
2.1 网络层匿名
2.1.1 加密
例如洋葱路由(TOR):通过不断地转发IP、分节点加密解密来达到匿名的目的,这里无需细讲。
2.2 应用层匿名
1.coin mixing(洗钱),通过交易所,将原本存入的钱,经交易所操作,最后你取出来的钱,不再是你当时存入的那些币,这样便实现了一种应用层的匿名。
2.2.1 零知识证明(通过交易本身提高用户匿名性)
什么是零知识证明? :零知识证明是指,付款方(证明者),只需要告诉收款方(验证者),自己付钱了,而不用告诉收款方,钱是怎么付的,是谁付的,即证明者只需要陈述某事是正确的,而无需透露除该陈述是正确的以外的任何信息。
2.2.1.1 同态隐藏
什么是同态隐藏? :同态隐藏是一种可以在加密数据上进行计算,从而得到加密后的结果,将加密后的结果解密可以得出的结果,是原来要求的结果,说明原来计算的加密数据,是该结果的解,
假设现在有这样一个情景:
有这样一道数学题,结果是C,有两个数A和B能够计算得出C,通过你的一系列骚操作,你得出了A和B,但是,A和 B的结果你不可以直说出来,这样就泄密了,但是你又想证明你确确实实是解出来了A 和B,于是
有这样一个加密函数E(X) 出现了,他有这样一个功能,如果X和Y不相同,那么他们的加密函数E(X) 和E(Y ) 也不相同,并且, X到E(X) 的计算是单向的,给定E(X) 的值很难反推出X的值,
并且,通过E(A ) 和E(B)可以很容易推出来E(f(A...B)) 的加密函数值,这样便可以在不泄露A和B结果的情况下,证明A和B是满足这个题的解,这便是同态隐藏的含义
-
同态加法: 通过E(X) 和E(Y ) 计算出E(X+Y) 的值
-
同态乘法: 通过E(X) 和E(Y ) 计算出E(X+Y) 的值
-
同理可扩展到多项式
举一个具体的例子:
3.2.3 盲签方法
盲签,关键点,随机序列(盲化因子)是用户生成的,银行只知道这个随机序列,不需要知道是哪个用户。对银行来说,谁取的钱,是未知的。谁兑换的钱也是未知的(用特定表示符决定存到谁的账号上)
缺点:中心化,有银行这样的中心化机构
3.2.4 扩展:零币和零钞票
比特币章节思考问题
1.多人共享的账号该如何安全的使用?能否将私钥拆分给多个人保管
-
私钥拆分与破解难度
1. 私钥拆分的错误思路
- 假设有一个 256 位的私钥,将其均分为 4 段(每段 64 位),然后分配给 4 个人。
- 直觉上,可能认为每人只拥有部分信息,整体会更加安全。
- 实际上: 拆分后每段的破解难度远低于原始完整密钥。
2. 破解难度的对比
(1)破解 256 位密钥的复杂度
- 对于 256 位密钥,可能的组合数量为 ( 2^{256} )。
- 攻击者需要在最坏情况下尝试 ( 2^{256} ) 次才能穷举所有可能。
(2)破解 64 位密钥的复杂度
- 对于 64 位密钥,可能的组合数量为 ( 2^{64} )。
- 攻击者需要在最坏情况下尝试 ( 2^{64} ) 次即可穷举。
3. 拆分后的安全问题
-
将 256 位私钥拆分为 4 段,每段只有 64 位。
-
攻击者只需破解其中一段(64 位)的密钥即可,而破解难度为 ( 2^{64} ) 。
-
破解难度的对比:
- 原始密钥的破解复杂度:( 2^{256} )。
- 单段密钥的破解复杂度:( 2^{64} )。
- 安全性降低比例:(2^256)/(2^64) = 2^192
可以使用多重签名的方法来解决这个问题
多重签名(Multisig) :指在进行比特币交易时,要求多个私钥的签名才能执行交易。常见的格式是给钱包设置M-of-N签名方案,即需要M个签名才能批准交易,而其中N是私钥的总数。比如,3-of-5的多重签名方案意味着需要5个私钥中的至少3个签名才能完成一笔交易。
这种方式增加了安全性,因为即使某个私钥被泄露,仍然需要其他私钥的配合才能进行交易
理论上某个特性的结论只是在某个特定的模型下,
比特币可以从私钥推导出公钥
即使是公钥也不要随便泄露,如果你很担心量子计算的威胁的话。