BTC-匿名性
约 2458 字大约 8 分钟
2021-09-28
匿名性
比特币是匿名的么?一般来说,匿名是根据隐私privacy结合一起的。比特币中不要求用真名,可以用公钥产生的地址,所以有一定的匿名性。但是,不是完全没有匿名,有人认为它是pseudonymity"假名“。比特币中的匿名不是一种真的匿名,而是一种假的匿名。就像作家用的笔名。
这种匿名性能提供什么样的隐私保护呢?根法币相比,根现金相比怎么样?它的匿名性没有现金好,现金是完全匿名的,上面没有关于个人的任何信息,假名都没有,所以很多非法交易用大额现金。而现金的问题是不是很容易保管和运输。
那比特币的匿名性根银行存款相比如何?比特币好一点,因为到银行是要实名制,要提交身份信息。而比特币不需要。其实早起国内的银行,你可以使用化名,编一个名字,不查身份证,将来取钱的时候就拿存折去取。谁有存折就能取出钱。后来改成了实名制。如果银行还能用化名的话,从某种意义来说,这种情况的银行的匿名性,会比比特币更好。因为比特币的账本是公开的,所有人都能查,而银行的账本是受控的。
比特币系统中,什么情况会破坏匿名性?有的人甚至会每次收款的时候都用一个新的地址,就是临时生成一个新的账户。好像匿名性很强。但是实际上创建的不同的地址是可以被关联在一起的。
假设有这么一个交易发布到区块链。这个信息能告诉我们什么? addr1和addr2很有可能是同一个人,因为这个人同时控制了这俩个账户的私钥。为什么会出现多个输入,因为要买个的那个东西,一般很难刚好是某一个账户的全部的值,所以有多个输入也会有多个输出,这两个输出很有可能有一个是找零钱的地址。这种交易一般都是钱包生成的,很多钱包软件交易的时候都会生成一个新的找零的地址,也是为了隐私保护。那有没有可能,把输入地址和输出地址也关联起来呢?有些情况是可以人为分析出来的。
比如这样的,可以分析出来第二个输出肯定是找零的地址。因为如果第二个是商家的,就不要用俩个输入了。
这些基本都是钱包生成的。如果能够掌握这些钱包的生成规则。那么区块链上很大一部分转账交易都可以分析出来!
还有一种情况,有可能比特币关联到现实中的个人。即,一旦比特币系统和现实产生关联,就会有风险。比如购买比特币的时候,去交易所买就会有风险暴漏。也可以场外交易,就是两个人私下交易,但这也有可能泄露身份。
过去的经验里表明,很多国家有反洗钱法,怎么方法用比特币进行洗钱的这种违法行为呢?盯着这个资金的转入转出链其实是一个常用的方案。如果你想大额转入比特币或者将比特币转为法币(法律背书的货币)实际是很难的。
有些商家可能接收比特币支付,当然这是一个不好的主意。第一,如果要等确认的话,要等一个小时。第二,交易费也很贵。第三,用于支付也会导致隐私泄露。不光是接受支付的商家知道,其他人也会知道。
注意
比特币的匿名性没有那么强,只要产生交易,只要与现实有联系就有几率被查到。
网络层的匿名性也是必须的,好在有很多解决办法,比如TOR洋葱路由。
零知识证明
零知识证明zero-knowledge proof(ZKP)
是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确的外的任何信息。
可以想到有哪些属于是零知识证明的例子么?
比如说某一个比特币账户是我的,如何证明?实际上是要证明我知道私钥,所以我要证明我知道私钥,但又不能把私钥告诉别人,怎么办?签名么?我可以产生一个用这个私钥进行的签名,假设你是知道这个账户的公钥,那么你可以验证这个签名的正确性。这个例子中,证明者是我,验证者是你。证明这个陈述是“我知道这个账户的私钥”,但是我没有把这个私钥透漏给你。这个例子算不算零知识证明呢?其实是有争议的,虽然没有泄露私钥,但是泄露了由私钥产生的签名,与“无需透露除该陈述是正确的外的任何信息。“还是有一定差距的。这个在实际当中要看应用场景,你透漏的额外信息要看应用场景。
零知识证明
零知识证明(Zero-Knowledge Proof, ZKP)简介
零知识证明是一种密码学技术,允许证明者向验证者证明某个陈述是正确的,而无需透露任何与陈述相关的额外信息。其核心特性包括:
零知识性:证明过程中不会泄露任何秘密信息。
简洁性:证明的长度很短,验证过程快速。
非交互性:通常只需要一次交互即可完成验证。
零知识证明的应用场景
- 数字货币与区块链
零知识证明在数字货币和区块链领域应用广泛。例如,Zcash 使用零知识证明技术(如 zk-SNARKs)实现了交易的隐私保护,既隐藏了交易双方的身份和金额,又确保了交易的透明性和可追溯性。 - 身份验证与隐私保护
零知识证明可用于身份验证,用户可以在不泄露敏感信息的情况下完成验证。例如,用户可以证明自己年龄超过18岁,而无需透露具体出生日期。 - 安全多方计算
在安全多方计算中,零知识证明允许各方在不泄露各自输入的情况下,验证计算结果的正确性。4. 零知识机器学习(ZKML)
零知识证明技术也被应用于机器学习领域,允许在不泄露数据或模型细节的情况下验证计算结果的正确性。5. 区块链扩容与效率提升
零知识证明技术(如 ZK-rollups 和 ZK-STARKs)被用于区块链扩容,通过生成简洁的证明来验证大量交易,从而提高交易处理速度并降低成本。
零知识证明的技术进展1. zk-SNARKs 与 zk-STARKs
zk-SNARKs:零知识简洁非交互知识论证(Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge),是一种高效的零知识证明技术,但需要可信设置。
zk-STARKs:零知识可扩展透明知识论证(Scalable Transparent ARgument of Knowledge),解决了 zk-SNARKs 的可信设置问题,具有更高的透明性和可扩展性。 - 新兴模型
Groth16:一种高效的非交互式零知识证明系统,基于椭圆曲线配对和二次算术程序。
PLONK:一种通用的 zk-SNARK,支持递归证明组合,进一步优化了证明效率。
SuperSonic:一种无需可信设置的零知识方案,基于多项式承诺。 - 抗量子安全
部分零知识证明技术(如 zk-STARKs)已具备抗量子安全性,能够抵御未来量子计算的潜在威胁。
总结 零知识证明技术在隐私保护、身份验证、区块链扩容等方面展现出巨大潜力。随着技术的不断优化,其应用场景将进一步扩大,为实现更安全、高效的数字交互提供支持。
同态隐藏
零知识证明的数学基础是同态隐藏。
例子:Alice想要向Bob证明她知道一组数x和y使得x+y=7,同时不让Bob知道x和y的具体数值。
证明者是Alice,验证者是Bob,陈述是她知道一组数x和y使得x+y=7,需要隐藏的是x和y的具体数值。
这是个简单的版本,Bob可能通过蛮力破解法得出x和y的值。所以在更复杂的解法中,Alice在把输入给Bob之前,要对x和y的值做一些随机化处理,随机化的处理保证x和y加起来还是不变的。
不过这种为了匿名性,牺牲了很多,市场上也不是很火热。其实很多人匿名性觉得比特币基本已经够用了。还有一层,其实这也不是100%匿名的,只有与现实发生交易关联的时候仍然是有暴露的风险的。