公有链发展未来还有哪些挑战?

巴比特 中字

混合器(Mixers)

混合器背后的想法是,一群人可以将他们的付款合并到一个池中,在私人账簿中记录收支情况。然后,当池中的资金被花掉时,每一笔付款的来源就会变得模糊不清。任何人都可以看到支付的金额和收款人,但理论上,具体授权支付的人是无法追踪的。混合服务的一个例子是CoinJoin。

不幸的是,混合器不是一个可靠的解决方案。因为研究人员很容易就能识别CoinJoin交易。并且,有证据显示,只要花费32,000美元,攻击者就可以破坏交易的匿名性。而且,这种攻击的成功率为90%。此外,研究人员还证明,混合器对Sybil攻击和Denial-of-Service提供的保护很少。

更令人不安的是,混合器所谓的私人分类账却需要由某个中央实体管理,这意味着它需要一个可信的第三方来“混合”交易。

由于CoinJoin不是强制的,用户可以自己选择。因此很少人选择参与这种混合池。参与混合的用户很少,很容易就可以追踪出某一特定输出的来源。

混合解决方案的另一个例子是CoinShuffle,这是一种去中心化的混合协议,由德国萨尔兰大学的一组研究人员开发。CoinShuffle试图改进CoinJoin,不再需要可信的第三方来完成混合交易。

门罗(Monero)

另一种保护隐私的方法是创建一个私有的加密货币,比如门罗。与许多代币不同的是,门罗不是比特币的分叉。相反,门罗是基于另一种协议:CryptoNote。

门罗提供了“环签名”方案。

环签名是一种群签名,组中的每个签名者都有一个私钥和一个公钥。不同于由单个签名者使用私钥“批准”的传统签名模式,环签名证明是来自固定组的一个签名者批准了交易,而不公开具体签名的人的信息。

零知识证明

零知识证明是指在不直接透露信息的情况下,向验证者证明这些私密信息。换句话说,程序上,将信息输入,而验证时不向验证者透露任何信息。零知识证明提供了基本的原语,可以用来建立隐私保护机制。例子包括:

案例1:挑战 / 反应小游戏(Challenge / response games)

在执行挑战 — 反应认证时,一方提出一个问题(“质询”),而另一方必须提供一个有效的答案(“响应”)来进行认证。这个“游戏”可以用来验证链上交易。如果特定交易无效,则另一个节点可以选择“提请注意”。这就需要提供一个可验证的证据,来确认交易是无效的。如果做不到这一点,就会产生一个“质疑”,要求交易的发起人产生一个“响应”来证明交易是有效的

让我们看一个例子:假设“Bob”有访问某资源的唯一通道。Alice现在也想来访问这个资源。于是Bob提出了一个挑战,也许是“52w72y”。Alice必须用一串符合Bob提出的挑战的字符来回应。使用仅有Bob和Alice知道的算法,才能找到对应答案。此外,Bob每次都会发出不同的挑战。所以就算Alice知道某次的答案也没用。

挑战 / 反应游戏已经在以太坊这样的区块链中使用了。但是,我们需要软件库和工具来使这种验证方案更易于使用。

案例2:Example 2: zkSNARKs

zkSNARKs到底是什么?让我们分解一下定义:

1.ZK=Zero-knowledge,即“零 + 知识”。不需要了解信息,就能证明信息的存在。 2.SNARK: Succinct Non-interactive Adaptive ARgument of Knowledge,即“简洁的、非交互式的、适应性的知识论证。” 3.简洁的(Succinct):指可以快速验证的简洁证据。 4.非交互的(Non-interactive):指不要求验证者与证明人交互。证明人可以先公布证据,之后验证者再进行验证。 5.适应性的知识论证(Adaptive ARgument of Knowledge):指计算知识的证明。

之后我会在其他文章种详细说说zkSNARKs,但在这里,我将跳过技术细节。总而言之,zkSNARKs是非常有希望确保隐私性的,但有几个注意事项:

1)SNARKs是资源密集型的。 2)SNARKs允许用户证明他们有访问某个秘密的权限,但用户有责任维护该秘密,并在需要时使其可用。 3)SNARKs有一个设定阶段(setup phase)。在此阶段,要确保算力固定。算力固定的大前提时可信环境:不仅要求用户信任准备设定的人员,而且还意味着SNARKs总是需要一个准备阶段,所以是所有计算设备都适用。

案例3:zkSNARKs + Zcash

Zcash是一种基于zkSNARKs的保护隐私的加密货币。Zcash所谓的“屏蔽交易”,所有使用过的代币都会在一个匿名集里。屏蔽交易使用“屏蔽地址”,这要求发送方或接收方生成零知识证明,允许其他人在不接触交易信息的情况下,可以对交易数据进行验证。

Zcash确实是个值得关注的项目。

案例4:zkSNARKs + 以太坊

在以太坊一次协议升级中(Metropolis),开发人员能在链上对zkSNARKs进行验证。

对于一个zkSNARKs + 以太坊,我们可以做什么呢?一些合同变量可以成功转化为私有变量。不再需要把隐私信息存储在链上,只需要用户用SNARKs来证明自己遵守合同的规则,就可以由用户自己存储信息。

在以太坊上,SNARKs不能实现的是独立于用户之外的、完全自主的隐私权。由于以太坊上的SNARKs需要用户保存链下信息,那么如果那个用户缺席,就无法找到对应的信息。

案例5:zkSTARKs

zkSNARKs有一个新出生的表亲:zkSTARKs。其中“T”指的是“transparent(透明的)”。

zkSTARKs解决了zkSNARKS的主要弱点之一:依赖用户来进行存储。zkSTARKs更简单,因为完全依赖哈希和信息理论,并且,由于不再使用椭圆曲线(elliptic curves)或指数假设(exponent assumptions),因而对量子计算机更安全。

总的来说,尽管在保护隐私方面取得了惊人的进步,但仍有许多工作要做。零知识证明库需要进行大量的研究和摸索,才能成熟;zkSNARK和zkSTARK需要在各种公链上进行试验。Zcash需要在现实场景中,进行大规模地证明和使用。这一切都还有很长的路要走。

代码混淆(Code Obfuscation)

另一种隐私机制是代码混淆。其目的是找到一种混淆程序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会话,使用用户的密码登录,并进行交易。由于合同中的信息将被混淆,因此中间节点或区块链中的任何其他参与者将无法修改正在传输的请求或确定用户的密码。

声明: 本文系OFweek根据授权转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存