George Samman 是一位区块链和密码学顾问,近期他和毕马威会计事务所联合发布了一份区块链架构的报告。他也在2013年联合创办了比特币交易平台BTC.sx,是一位区块链金融科技和初创企业创业营的企业家,也经常写有关区块链科技的博客。 Samman正调研零知识证明如何保护区块链的隐私性 – 如果它们还能实现速度和可扩展性。 当提到金融服务特别是资本市场的操作时,区块链领域最大的趋势之一就是在日常业务中对隐私和私密性的需求。这意味着区块链解决方案要以这个基本的需求为出发点。这样导致了很多私有区块链解决方案的出现。 当你创建隐私和私密性解决方案时需要有很多折中权衡。最主要的是会牺牲透明度,而这也是第一个区块链比特币区块链所最主要的特征。按照最初的设计,区块链是一个透明的机器。在这个系统中,计算机是分布式的,没有一个实体能够控制网络。不仅仅如此,任何人都可以是验证者,而且任何人都可以书写或读取网络上的数据。客户端和验证者可以是匿名的,每一个节点都在本地存储所有的数据。这使得所有交易数据都是公开的。 比特币的安全是通过一个验证过程来实现的,其中所有的参与者都各独立并自发地验证交易。比特币是通过使用匿名的地址来解决隐私问题的,但仍然可以通过各种技术来找到谁在使用该地址。 这在私有区块链领域是截然相反的,在私有区块链中,去中心化和透明度并不是必要的。 重要的是隐私和私密性、速度和可扩展性(随着更多的节点加入区块链,能够维持很高的速度表现)。加密的点对点交易意味着只有这两个参与交易的人才能接收到数据。在很多系统中,可以有第三方节点(监管者)加入来成为交易的一部分。 其它处于类似目的而开发的系统在这篇博客中也有描述,其中制定了区块生成者来接受和验证交易,周期性地将这些交易写入新的区块中。共识是由区块生成者来提供的,区块生成者将节点(核心链)都同意的规则(验证)应用到区块以及制定的区块链签名者。 在这些系统中,去中心化不在是必需的,因为所有的参与者都是已知的。在私有区块链中,节点必须是已知的,以便满足特定的监管和合规性要求。他们的关注重点是如何保护隐私和私密性,同时还能实现速度、可扩展性和网络稳定性。 强大、耐用的密码学识别密码学和加密是什么? 正如以上所写的,隐私和私密性是关键,加密已经成为所有区块链的关注点。很多的解决方案都使用了高级的密码学技术来为数据和交易的隐私提供保证。 R3CEV的Kathleen Breitman在近期的博客“加密温馨提示”中,她给出了一个简洁的定义:
如果该加密使用了密文来解密该明文信息,你将得到同态加密,这是密码学技术的基础,也是我们今天要讨论的。同态加密允许无需解密信息数据即可对加密数据进行运算,这种技术允许在保留对数据和交易隐私的同时还能对其进行运算,无需揭露数据和交易。只有使用解密秘钥才能访问这些数据和交易的详细信息。 同态加密意味着decrypt(encrypt(A) + encrypt(B)) == A+B。这就是所谓的加法同态。 因此对加密数据执行运算,解密就等同于对加密数据进行的运算。 关键的问题是:如何让系统在不泄露过多信息的情况下改变状态? 毕竟,区块链希望能分享状态;而不是信息。在一个区块链中,一些业务处理处于X状态,要移动至Y状态,这需要记录和证明,同时还要保护隐私,不能分享太多信息。而且,状态的改变需要正确地进行,否则就会违反保密性。 密码学技术像零只是证明(ZKPs)使用了不同类型的同态加密,分别是:
下面将讨论隐私趋势如何导致使用密码学技术来加密交易和数据。重点讨论零知识证明、zk SNARKs、Hawk、私密签名、状态通道和同态加密。 区块链隐私问题是所有一下讨论的密码学解决方案的关键。 在区块链之外,也有同态加密的使用案例。CryptDB是一个使用了同态加密和其它加密技术来安全查询数据库的系统。大量应用于谷歌和微软等其它公司。 它确实也存在局限性:你必须要事先定义所有类型的查询,这很容易泄露数据。CryptDB为数据内容和列表名称提供了私密性;然而,CryptDB并没有因此整体的表结构、行数目、列类型或者数据的大致大小。CryptDB加密每一个数据项的方法之一就是使用洋葱网络。这允许每一个数据项都放在更强大的加密层中。 私密签名Gregory Maxwell设计了一个密码学工具(CT)来改善比特币类型的区块链的隐私和安全。其中转账数据只对交易过程的参与者是可见的。CT加密了区块链上的交易数目和余额,特别附加了同态加密。用户所能看到的是他们自己账户的余额和他们所接收到的交易的数目。需要零知识证明来向区块链证明没有一个加密输出包含负值。 隐私交易(Confidential Transactions)的问题是他们只允许非常有限的证明。下面详细描述的zkSNARKs 和零知识证明(ZKPs)允许你来证明各种类型的交易验证,同时还能保持所有输入是隐私的。 零知识证明(ZKPs)零知识证明(ZKPs)并非新鲜事物。他们的概念初见于1985年的论文“互动证明系统的知识复杂性”。ZKP是一种密码学技术,允许两方(证明者和验证者)来证明某个提议是真实的,而且无需泄露除了它是真实的之外的任何信息。在密码学货币和区块链中,这通常是指交易信息数据。 一个零知识证明必须要满足以下三个条件:
上述的前两个条件也是通常意义上互动证明系统的的属性。第三个条件形成了零知识证明。 zk-SNARKs一个za-SNARKs(零知识简洁非互动性知识参数)是一种在无需泄露数据本身情况下证明某些数据运算的一种零知识证明。za-SNARKs是Zcash和Hawk背后的密码学工具,这两个协议都使用了ZKPs来创建区块链,后面会解释。在Zcash的例子中,这些SNARKs用于验证交易,在Hawk的例子中,它们用于验证智能合约。所有这些在完成的同时还能保护用户的隐私。 一个za-SNARKs是一个简洁的非互动性零知识证明,其中的证明非常简短,很容易验证。可以将它们看做是一个逻辑回路,这个逻辑回路需要生成一个证明声明来验证每一个交易。他们通过对每一个交易进行快照来实现这些目的,生成一个证明,然后来让接收方相信计算是正确的,而且不会泄露证明之外的其它任何数据。一个SNARK执行的基本操作就是将能够解密的数据编码到回路中。 因为zk-SNARKs能够很快被验证,证明非常小,因此他们可以保护运算的完整性,而且不会给非参与者带来负担。需要知道的是该技术正在成熟,还有很多局限性。它们是激励CPU来生成证明,需要1分钟才能生成新的证明,因此规模化仍然是需要解决的一个问题。 第一个使用zk-SNARKs的是Zcash,它是分布式状态和你所拥有的资产证明的结合体。 后续的文章中再继续介绍零知识证明的使用案例,Zcash和Hawk。 |