Preethi Kasireddy, medium.com (来源)
鉴于区块链交易并不直接与您的身份挂钩,它们可能显得更私密。世界上任何人都可以匿名创建一个新的钱包,并使用它进行交易。
但是,这不是这么简单。
一方面,这项技术的大的方面就是应用假名:所有交易是记录和存储在公共账本中的,但是它们仅与一个个由数字和字母组成的账户地址相关联。由于这个地址没有真实世界的身份,交易的创始人似乎无法跟踪。
然而,这种完全安全是一种误导。只要化名不与个人联系在一起,一个人就可以保护自己的隐私是一个事实,但是只要有人与化名发生联系,秘密就显露出来。这方面的一个典型的例子就是,执法机构承认他们能够在调查过程中识别特定的比特币用户,这些“去匿名化”,违背了区块链交易完全隐秘的承诺。
这个去匿名化是如何实现的?
商家网站上的网络跟踪器和cookies使得交易人信息泄漏到网络上变得非常容易,任何人(包括政府,执法机构和恶意用户)都可以随时使用这些信息。
此外,像以太坊这样的区块链平台,用户通过智能合约进行交互,而不仅仅是简单的价值转移。关于这些智能合约的所有细节在以太坊区块链上都是公开的,包括发件人和收件人,交易数据本身,执行的代码以及合约中存储的状态。
将关键业务数据上传到区块链上后,黑客,竞争对手或其他未授权方就都可以查看区块链上的信息,这对大多数公司来说都不会同意不会这样做的。原因如下:
电子病历,这是非常私人和敏感的信息。在公共区块链上公开显示这些信息是不可接受的,从而危及病人的机密性。
身份验证数据,如社会安全号码,不能公开存储在公共智能合同中。
凭证管理,如密码和密钥,在开放的,最终不安全的智能合同中无法写入的。
财务报告,如资产表或员工工资等文件不可能与公开的,易于追溯的区块链地址发生联系。
还有其他的例子。
对于隐私和个人主权的个人,组织和行业来说,隐私仍然是一个根本的障碍。我们中许多痴迷于区块链和密码货币的公司都有兴趣建立一个不受信任和审查制度,为个人提供财务支持。矛盾的是,我们正在使用一个公开的,易于追踪的分类账来做到这一点。 (每当我想起来的时候我就会溜号!)
隐私解决方案
以下是几个不同开发团队一直在努力的解决方案。
1. 椭圆曲线Diffie-Hellman-Merkle(ECDHM)地址
要了解ECDHM地址,您需要了解Diffie-Hellman密钥交换。 Diffie-Hellman密钥交换背后的想法是它建立了双方之间的共享秘密。这可以用来在公共网络上私下交换信息。
过程是?
发件人和收件人可以公开共享ECDHM地址,然后使用他们的共享密码来获取匿名比特币地址。这些比特币地址只能由拥有这个秘密的人公布。唯一公开可见的是可重复使用的ECDHM地址。因此,用户不必担心交易被跟踪。
通过使用颜色而不是非常大的数字说明密钥交换的一般概念的概念图(来源:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
ECDHM地址方案的一些例子包括Peter Todd的Stealth Addresses,Justus Ranvier的BIP47可重复使用支付代码,Justin Newton的BIP75波段地址交换等等。但是,这些方案的具体实现和实际使用是很少的。
2. 混合器
混合器的设想是,一群人可以将他们的付款合并成一个交易池,跟踪私人账本上的债务。然后,当从交易池中获得资金时,每笔付款的来源都会被掩盖。任何观察区块链的人都可以看到所支付的金额以及收款人,但理论上,无法追踪付款的人。混合器的一个例子是CoinJoin。
来源:https://en.wikipedia.org/wiki/CoinJoin
不幸的是,混合器已被证明是不可靠的解决方案。例如,研究人员能够轻松识别CoinJoin的交易,并证明识别的正确,只是需要支出32,000美元的成本,攻击者就能够以90%的机会成功实现交易的去匿名。进一步, 研究人员也证实混合器只能提供非常有限的保护对于Sybil攻击和Denial-of-Service 攻击。
更令人不安的是,混合器的私人账本需要由一些中央机构进行管理,这意味着它需要一个值得信赖的第三方来“混合”交易。
由于CoinJoin是供用户选择是否使用的解决方案,而不是默认的方法,因此历史上很少有人选用加入混合器的交易池,结果就是这使得匿名产生的交易池很小。因此,很容易确定一个特定的输出是来自少数几个人中的某一人。
混合器解决方案的另一个例子是CoinShuffle,这是一个由德国萨尔大学的一组研究人员开发的分散混合协议。 CoinShuffle试图通过不需要可信的第三方来组装混合交易来改进CoinJoin。
3. Monero
解决隐私问题的另一种方法是创建默认情况下私密的加密货币,如Monero。与许多山寨币不同,Monero不是比特币的分支。相反,Monero基于另一种协议CryptoNote。
Monero提供的主要功能是另一种“环形签名”方案。
环签名是一种组签名,组中的每个签名者都有一个秘密和公钥。与传统的加密签名不同,它证明一个交易是由一个签名者使用一个所述私钥“批准”的,而一个签名组证明一个固定组的签名者批准了一个交易,而不会泄露谁。
4. 零知识证明
零知识证明是证明者设法让验证者相信自己拥有一些秘密知识,而不必直接展示该秘密知识。换句话说,一个程序可以有秘密的输入,证明者没有向验证者展示任何东西。零知识证明提供了可用于构建隐私保护机制的基础。应用的例子包括:
示例1:挑战/反应游戏
在计算机安全方面,质询 - 响应认证是一个协议族,其中一方提出一个问题(“质疑”),而另一方必须提供一个有效的答案(“答复”)进行认证。这个“游戏”可以在区块链上用来验证交易。如果一个特定的事务是无效的,另一个节点可以选择“提示注意”来证明无效。这就要求提供可证实的证据,证明交易是无效的。如果不这样做,就会产生一个“挑战”,要求交易的发起者提供一个证明交易有效的“回应”。
举一个例子:假如“鲍伯”只是访问一些资源(例如他的车)。爱丽丝现在也想访问它,所以她可以开车去杂货店。鲍勃发出了一个挑战,假如是“52w72y”。爱丽丝必须用适合鲍勃发出的挑战的一串字符来回应。通过使用只有Bob和Alice知道的算法来找到答案是唯一方法。而且,鲍勃每次都会发出不同的挑战。因此,知道以前的正确答案并不会给Alice带来任何优势。
挑战/反应游戏已经在像以太坊这样的区块链中得到使用。但是,我们需要代码库和开发工具来使这类的认证方案更加容易使用。
例2:zkSNARKs
什么是zkSNARKs?我们来看看不同字母的含义:
zk =零知识。不需要展示信息出来就可以证明信息存在
SNARK:简洁的知识非交互式自适应参数。
“简洁”是指可以快速验证的简洁证明。
“非交互”意味着不要求验证者与证明者直接进行交流。替代的方法是,证明者可以提前发布证明,验证者可以确认它是正确的。
“适应性的知识论”意味着一些计算知识的证明。
虽然我希望有一天能够在一篇文章中介绍zkSNARK,但是我会跳过这里的技术细节。 zkSNARKs是一个令人兴奋和有前途的隐私建设区块,有几点注意事项:
1)SNARKs是资源密集型的。
2)SNARKs允许用户证明他们可以访问一个秘密,但是用户有责任维护秘密并只是在需要时才使用它。
3)SNARKs有一个设置阶段,在这个阶段,需要证明该路径或者其计算是固定的。这个阶段需要事先在相互已经取得了信任的人群中进行。这不仅要求您相信前期设置的人员,还意味着SNARK不适合运行任意计算,因为计算总是需要有准备阶段。
示例3:zkSNARKs + Zcash
Zcash是基于zk-SNARKs的隐私保护加密货币。 Zcash拥有所谓的“屏蔽交易”,即所有使用的硬币都有一个匿名集合。屏蔽交易使用“屏蔽地址”,要求发送者或接收者生成一个零知识证据,允许其他人验证交易的加密数据,而不会被泄露。
Zcash交易图
Zcash绝对是一个有趣的项目,值得关注。
例4:zkSNARKs +以太坊
在以太坊的下一个协议升级中,Metropolis,开发者将有能力有效验证链上的zk-SNARKs。
在应用了SNARKs的以太坊上我们可以做什么?某些合同变量可以被有效地私有化。取代存储秘密信息在链上,它可以存储信息在用户哪里,那些可以证明他们遵守合同规则使用SNARKs的用户。这些用户中的每一个都需要获得自己可信任的过程,这会增加一些准备工作。但是,一旦路径存在,就可以根据需要使用于尽可能多的交易中。
然而,以太坊上的SNARKs无法做到的是,独立于用户的自治性隐私。由于以太坊上的SNARKs依靠用户维护秘密的外链,如果没有这个用户,无法追踪这个秘密。
例5:zkSTARKs
ZK-SNARKs有一个更新的,更闪亮的表亲:ZK-STARK,'T'代表“透明”.ZK-STARK解决了Zk-SNARKs的主要弱点之一:依赖于可信赖的预先设置。它们也更简单,因为它们纯粹依赖哈希计算和信息理论,并且更安全,因为它们不使用椭圆曲线或指数假设。
总的来说,尽管在隐私保护方面取得了令人惊叹的进展,但是仍然有很多工作要做。零知识证明软件库需要进行大量的研究,实战检验和完善。 zkSNARKs和zkSTARKs需要在各种公共链上进行实验。 Zcash需要在现实世界的场景用例中大规模地证明。我们仍然还无法应用这一方法。
5. 代码混淆
另一个隐私保护机制是代码混淆。目标是找到一种混淆程序P的方法,使得混淆器可以产生第二个程序O(P)= Q,使得如果给定相同的输入,则P和Q返回相同的输出,但是Q不显示关于P的内部结构。这使得我们可以隐藏Q中的私有数据,如密码,社会安全号码等,但仍然可以在程序中使用它。
虽然研究人员声称,黑盒混淆是不可能的,但研究人员认为弱化的混淆,不可区分性混淆器,是可以实现的。不可区分性混淆器O的定义是,如果你取两个等价的程序A和B(即同一个输入到A或B产生相同的输出)并且计算O(A)= P和O(B)= Q,那么那里对于没有访问A或B的人来说,对于P是来自A还是B来说,没有计算上可行的方法。
最近,研究人员Craig Gentry,Amit Sahai等,已经能够完成不可区分的代码混淆。但是,该算法需要很大的计算量。
如果这个架构可以获得改进,潜在的好处是巨大的。在加密货币世界中,最令人感兴趣的可能性是区块链合同包含有私密信息。
例如,我们可以想象一个以太坊合约,它包含一个用户密码给Coinbase。然后,我们可以编写一个程序,如果合同的某些条件得到满足,合同将使用一些中间节点与Coinbase发起HTTPS会话,使用用户的密码登录并进行交易。由于合同中的信息将被混淆,中间节点或区块链中的任何其他玩家将无法修改正在运输的请求或确定用户的密码。
6. Oracles
在区块链空间中,一个Oracle是在智能合约和外部数据源之间传递信息的一方。它本质上充当区块链上智能合约与区块链外部数据源之间的数据载体。因此,保持信息“私密”的一种方法就是使用Oracle从外部数据源获取隐私信息。
7. 可信执行环境
可信执行环境(TEE)是主处理器的安全区域。它保证内部加载的代码和数据在保密性和完整性方面得到保护。这种可信赖的环境与面向用户的操作系统并行运行,但比面向用户的操作系统更加私密和安全。
资料来源:https://www.slideshare.net/JavierGonzlez49/operating-system-support-for-runtime-security-with-a-trusted-execution-environment-phd-thesis
早期的研究和开发正在进入TEE,以确定如何使用它们来实现区块链上的隐私。我个人非常期待,有更多的安全专家来解决这些问题。这方面的确需要更多的专家来。