区块链上的数据隐私

随着越来越多的区块链应用产品化之后,隐私成为人们关注的问题,而其效果在大多数情况下却并不尽如人意。 现在许多解决方案如雨后春笋般出现,旨在解决区块链上数据隐私的问题。

为什么在使用区块链技术的时候需要关注隐私层面呢?

与一个中心可以查看所有数据并控制它们的访问途径不同的是,去中心化系统意味着交易涉及的数据可以与所有参与者共享。 共享是必需的,这样所有方都能就交易的有效性达成共识。

如果数据本身需要保持私密,那么向其他人披露信息从而让该交易变得可验证会带来问题。

以购买披萨饼为例。假如我用比特币购买了一个披萨,那么所有访问比特币节点的人都可以看到我的付款交易。

在像比特币和以太坊这样的公共区块链平台中,这意味着所有交易与所有的节点共享,所以揭露参与交易人的真实身份并非是不可能的事。

在只有经过认证的节点才能参与的许可区块链网络中,所有身份在定义时即可被识别。

仅就公开信息以使多方验证交易这个问题,有多种方式可以解决,本文介绍其中三种最常见的方式:

  • 可信计算
  • 密码学
  • 选择性多播

1.可信计算

可信计算这个概念起源于游戏。在游戏中,游戏机比持有游戏机的玩家拥有更多关于游戏的信息。

例如,在第一人称射击游戏中,即使该信息存在于游戏机上,也可能向玩家隐藏对手躲在墙后面这个事实。

英特尔安全防护扩展(SGX)是英特尔CPU中的一项功能,它基于受信任的执行环境(TEE),内存中的隔离部分只能通过特定的API进行访问。

TEE不能通过任何其他进程访问,甚至不能通过操作系统或BIOS访问。因此,TEE有时被称为安全飞地(请参见下图中的紫色正方形)。

SGX-CPU还具有内置的私钥,该私钥对于机器的所有者/操作者是未知的。 此私钥用于解密TEE中的数据,以便在数据保持机密的同时对该数据执行逻辑计算。

可以在区块链中使用这个功能,以便对交易进行加密并将其发送到验证中涉及的所有配备SGX的机器。

配备SGX的计算机解密这些交易并在TEE中对其进行验证。 如果交易有效,则使用内置私钥在TEE中对其进行签名。 这样,可以将由多个组织运营的多台机器用于验证区块链交易,同时将交易内容保密,因为没有人,甚至配备SGX的机器的所有者或运营商都不能够访问机密数据。

除了有利于隐私方面之外,安全计算还可以在区块链中使用,让共识协议更加安全和快速,就像PoET 一样。

尽管SGX这项技术的前景非常明朗,但目前来看经常会在Intel SGX的安全性中检测到漏洞:这是Intel与攻击者之间的军备竞赛。

成功攻击SGX的一些示例:

  • 此与Spectre相关的漏洞(2018年3月)
  • Foreshadow(2018年8月)
  • 面向返回的编程(ROP)技术。 (2019年2月)

2.密码学

解决区块链隐私问题的另一种方法是使用加密技术。

显然,仅加密或对数据进行哈希运算存在很大缺点,会使验证使用该数据的交易更加困难,在平常状态下无法进行。

但是存在更高级的密码学解决方案可用于隐藏信息,同时允许进行验证。

这种解决方案的一个示例是Monero,它使用环签名来隐藏交易的发送者;
使用同态加密来验证(UTXO)交易的输入总和等于交易的输出总和。
使用零知识范围证明来验证隐私数据(在交易中支付的XMR)在已知范围内(介于0和非常高的数字之间),以证明支付的金额为正。

另一个应用示例是基于Zk-SNARKs的zCash,ZK-SNARKS是一种通用的零知识证明,允许用户创建任何形式语句的密码学证明。

因为ZK-SNARKs是通用的,所以它们非常契合各种逻辑(贸易融资,跨境支付,身份管理等)建模的智能合约。 ZK-SNARKs的缺点是需要可信设置:在启动网络的过程中,会生成许多私钥数据销毁,这些都需要在之后进行销毁。

与此同时,Bulletproof也支持通用的零知识证明,但不需要可信任设置。

零知识证明已在公网上产品化,经过了多年的实战测试,与SGX相反的是,并没有在其中发现大漏洞,这就是ING积极致力于将零知识证明集成到区块链中的原因。

3.选择性多播

其中一种实现选择性多播的好方法是由Corda实现的,它是一种受区块链启发的分布式账本,仅将交易数据发送给交易涉及的各方,并可选地发送给共识服务(称为公证服务)。
例如,如果一个人使用价值10英镑的Corda代币向另一个人付款,则该交易不与整个网络共享,而仅与该代币的发送者和接收者(与Notary服务共享是可选项)共享。

10英镑代币的接收者还将收到该代币的交易历史记录,以验证发送者成为其合法的所有者。

在验证公证人的情况下,公证服务接收完整的交易数据,或者在非验证公证人的情况下仅接收交易的哈希。

鉴此引入一个折衷方案:基于公证人验证,网络将具有防篡改功能(只有有效的交易将被记录在去中心化账本中),但参与者与该公证人服务将被要求共享私人数据。 另一方面,使用非验证公证人将使参与者之间的数据保持私密性,尽管DLT仍然可以被篡改(如果提交了无效交易,则清楚是谁提交的),因此不再具有防篡改功能。 选择非验证公证人时,网络将保持篡改状态(交易参与者可以查看是否提交了无效交易)。 可以说,防篡改在已知参与者的网络上是可行的。

选择性多播在 Corda 中的应用例子是HQLAx

结论

本文讨论了3种解决方案,允许多方验证数据同时将机密数据保密。

由于SGX前景广阔,但在撰写本文时尚未准备就绪,因此今天有2种可行的解决方案:

  • 1.密码解决方案,例如零知识证明。
  • 2.选择性多播。
    选择哪种方式取决于具体的应用情境。到目前为止,我们在实践中已经看到,加密技术(尤其是零知识证明)对公共加密货币(例如zCash和Monero)和选择性多播在许可网络上的产品化皆行之有效。

Leave a Reply

Your email address will not be published.