零知识证明+智能合约,Origo认为隐私是区块链商用的关键之一

零知识证明+智能合约,Origo认为隐私是区块链商用的关键之一

区块链拥有防篡改与去中心化的特征,在存证和电子证据有着一定应用场景。然而,由于性能和隐私等方面的限制,导致企业们无法接受在以太坊等区块链上运行自身业务。比如,KYC(Know Your Customers)、签合同等场景,虽然需要防篡改和存证,但是用户并不希望泄露自身信息。

先假设一个金融行业中非常典型的 KYC 场景,理财或者保险等金融机构,在给客户提供服务之前(事前),往往需要了解用户是否符合特定要求,用户需要给金融机构提供大量的个人信息以证明自身“合格”。签订合同之后(事后),有可能会发生纠纷,比如客户出险,保险公司表示查证发现客户此前提供的信息与现今不一致,保单失效;客户却表示当时提供的就是与现今一样的情况。

该场景存在两个痛点:

1、隐私。KYC 往往是大量条款,机构无须知道用户具体资料,只需要知道用户是否合格即可。若有一个可信的第三方可以帮机构判断并返回结果,用户不须透露隐私。

2、存证。双方签署合同之后,出现纠纷时双方可能需要 “自证清白” 。为了防止任一方篡改合同,同样需要有一个可信的第三方作为“公证人”,持有未被改动的合同。

3. 强制执行。除存证以外,可信的第三方还可以根据合同和条件,强制履行合约条款。

目前的公有链能满足第二个和第三个,却无法满足第一个。以太坊等公链上的智能合约在代码、输入和输出完全公开透明,可是在大多数的商业场景,都无需要使用到这种程度的公开透明。显然,区块链想要真正落地,还需要其他技术手段解决隐私问题。Odaily 星球日报最近接触的智能合约平台 Origo (白皮书)希望构建一个支持隐私合约 + 零知识证明区块链网络,满足以上场景。

Origo 的方案包括 Layer 1(链上)和 Layer 2(链下)。Layer 1 负责存证和验证执行,Layer 2 负责执行计算。据创始团队成员张逸嘉介绍,合同(KYC 量表)双方需要把智能合约涉及到的信息的哈希值放到链上(保证合同对应参数不可篡改);输入数据的哈希值存到链上后,根据场景主链或双方会将加密数据发给链下执行者(Executor);执行者完成计算后将结果和在链下生成的零知识证明(ZKP,Zero—Knowledge Proof),提交给链上验证,以证明自身正确执行了运算以及得到结果。其中哈希上链主要是为了后续常出现合同纠纷,防止数据输入方篡改数据。

零知识证明可以理解为 “我不告诉泄露任何有效信息的情况下证明某件事”。张逸嘉解释,零知识证明就例如在不告诉其他人密码的时候,通过能够打开门来证明知道密码这件事情。理论上只要是多项式时间能够验证的问题,它就能证明。

据公开资料,零知识证明在 1985 年被首次提出;2010年,Groth 实现了首个基于椭圆曲线双线性映射的通用式零知识证明协议;2013年,一个叫做 Pinocchio 的协议实现了分钟级别证明、毫秒级别验证,证明大小不到300字节,将零知识证明从理论带到了应用。Zcash使用的 SNARKs 就是基于 Pinocchio 改进。

张逸嘉也表示,零知识证明等密码学方案都是公开的,这样的方案才可被证明有效。Origo 团队主要专注于工程上的优化以及制作开发工具,包括生成零知识证明的编译器,原来零知识证明系统需要让程序员自己写电路以及优化电路,Origo 编译器可将高级语言转换成密码学电路,优化开发流程。

Origo 的 Layer 1 目前还在开发当中,计划使用混合共识机制,先通过 POW/POS 筛选合格节点,然后入围节点采用 PBFT 快速达成共识。未来也会考虑使用分片(Sharding)等技术提高处理速度。在已有以太坊等成熟公链的基础下,Origo 为什么再开发一条链呢?张逸嘉解释,主要是出于两个考虑:

1、以太坊不适用于验证零知识证明。目前以太坊上计算资源很有限,没有对零知识证明相关的运算定义合理的gas消耗,如果在以太坊现有设置上做 ZKP 的验证,需要消耗约半个区块,也就是需要耗费大量的 gas(成本)。

2、以太坊在短期内不支持匿名交易(Private Transaction),这意味着双方合同涉及的金额是公开的。目前支持 Private Transaction 的包括达世币、门罗币和 Zcash 等,其中 Zcash 用的加密技术也是零知识证明。Origo会在支持匿名交易,优化性能同时支持智能合约。

至于 Layer 2 ,Origo 希望用户能自行选定执行环境,因为是否保护隐私,以及选择怎样的执行环境应该由参与方决定。目前可以选择执行者就是合同参与方,这样可以最大程度保证参与方数据安全。加之公链开发需要一定时间,Origo 采取的策略是先输出解决方案(Origo inside计划),帮助企业用户将联盟链和公链打通,企业用户在公链上存证数据哈希,而数据源可以来自联盟链,企业在链下执行运算。即数据提供者和执行者合一。

本质上,这种方案主要起到“电子证据”的作用,要实现绝对隐私,张逸嘉表示,有三种方式可考虑:同态加密、安全多方计算(sMPC,Secure Multi-party Computation)和未被破解的 SGX (Intel 的可信硬件产品)。Odaily星球日报曾报道过的Oasis Labs、TRIAS、Taxa等都选择了用可信硬件构建可信执行环境(Trusted Execution Environment, TEE)这条技术路径,链下隐私计算网络Enigma、ARPA和Points则选择了安全多方计算的方式。

同态加密是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。TEE和MPC我们分别在之前的报道中做过介绍。张逸嘉认为,同态加密面临的挑战是性能和多公钥全同态;MPC面临的最大挑战之一是output无法保持隐私,其他挑战包括随节点增长通信复杂度增加且速度变慢,以及对于正确执行的验证;TEE面临的挑战是安全性以及其验证签名只能是证明在指定硬件环境内运算的,不能从数学上证明正确执行,相当于需要完全信任 Intel 等某一制造商,近期SGX频发的安全问题背景下,Oasis的Dawn Song也在Crypto 2018上表示将不再依赖于TEE而用纯软件的方式来实现隐私。各种方案都需要考虑与区块链结合时面临的验证问题,张逸嘉表示团队可能会选择 MPC+ZKP的方式,同时配合一些经济学的方案做一些简化。

我是Odaily星球日报编辑卢晓明,探索真实区块链,爆料、交流请加lohiuming,烦请备注姓名、单位、职务和事由。

参考文章:

Zcash 交易剖析(Zcash 博客)

为什么几乎没人使用Zcash的匿名功能?

终极隐私(匿名)货币比较

零知识证明的江湖

零知识证明:一个略微严肃的科普

Zcash协议分析(2). 什么是零知识证明(zero-knowledge proof)

完全同态加密

隐私保护和数据安全(一):安全多方计算

安全多方计算的关键技术分析


分享到:


相關文章: