技术科普 | Ultrain 可编程零知识证明解决方案

一、零知识证明介绍

技术科普 | Ultrain 可编程零知识证明解决方案

1.1 区块链技术在数据隐私保护方面的困境

区块链技术的特点,就是存储在区块链上的数据,对所有人都是公开、透明、不可篡改的,这是区块链技术能以低成本建立商业信任中心的技术基础。但在实际的商业实践中,比如我们把病人的电子病历放到链上,结果所有人都可以知道该病人得了什么疾病,这显然是不可接受的。所以,对链上数据进行加密保护,是区块链技术应用到商业领域的一个技术刚需。

传统的数据加密技术,无论是基于对称加密还是非对称加密,其特点就是通过密钥对数据进行加密成乱码,使用者持有对应的密钥就可以解开该份乱码,还原为对应的数据。但在区块链场景下,如果单纯使用传统的加密技术,将加密后的数据上传到区块链上,没有持有对应密钥的各方将完全无法知道该数据的内容,从而丧失了区块链数据公开透明的特点,丧失了建立互信的基础,区块链技术在该情况下的使用价值将大打折扣。

技术科普 | Ultrain 可编程零知识证明解决方案

所以,如何既能满足链上商业数据的隐私保护要求,又同时不丧失区块链技术公开透明的特点,是一个区块链技术商业落地中必须解决的核心问题。基于密码学的零知识证明技术就应运而生了。

1.2 零知识证明的通俗介绍

零知识证明是上世纪 80 年代提出的一项密码学技术,其应用目的就是一方在不提供任何有用信息的情况下,使另一方相信某个信息是正确的。我们简单的举个理想化的例子通俗的说明一下零知识证明的作用:小明想向 A 银行贷款 300 万元买一套房子,A 银行需要小明出具一个存款证明,证明他有 300 万以上的资产才能给他贷款,小明在 B 银行有 2300 万的存款,此时小明有两种选择:

选择 1:找 B 银行开具一个 2300 万的存款证明给 A 银行,证明他有 300 万以上的资产,但这时小明就暴露了自己的资产数量,这是他不愿意的;

选择 2:小明找 B 银行开具一个 2300 万的存款证明,在该证明上盖一张纸,在百万那一位挖一个洞,这时 A 银行可以看到百万位的数字是 3,所以小明的存款是在 300 万以上的,满足贷款条件,而小明也不需要告诉银行其全部的存款信息。在这个理想化的例子中,小明一方没有提供全部的知识,就向另一方银行 A 证明了自己的资产大于 300 万,而盖在存款证明上的那张纸和挖的洞,就可以视为零知识证明在该场景下的实现。

1.3 零知识证明的技术原理

以上是一个通俗的例子,在实际上,零知识证明是这样定义的:

一种方法,通过该方法,一方 A 可以向另外一方 B 证明 A 知道一个秘密 x,但是又不透露任何 x 的信息。对于任意逻辑 f,有一对密钥,分别为证明密钥 pk 和验证密钥 vk。A 持有一些秘密 x, 通过该函数 f 计算生成 y,即 y=f(x)。利用 y 和 x、pk,可以生成证明 proof。任意拿到 proof 和 y, vk 的人,都可以通过验证知道 y 确实是 f(x) 的输出,而不需要知道 x 的具体信息。

1.4 零知识证明应用场景介绍

零知识证明结合区块链技术,在包括商业数据资产交易流转,商业数据隐私保护等方向具备广阔的发展前景。我们以一个真实的医疗数据交换场景举例,来说明零知识证明在数据交易领域的应用意义:

场景:A 保险公司希望向 B 医院购买某个年龄段的冠心病患者的相关数据用于该病种的保险精算分析,为了简化商业逻辑,我们假设患者的年龄信息是一个隐私数据,医院不能将其透露给保险公司,而保险公司需要取得年龄在 40 到 90 岁之间的患者的数据,在这种情况下,区块链+零知识证明的解决方案,可以有效的支持该场景:

技术科普 | Ultrain 可编程零知识证明解决方案

  1. B 医院用零知识证明技术的加密模块,对原始患者数据中的年龄列进行加密和存证

  2. B 医院将加密完成后的数据和存证结果(1 万份,其中 40 岁到 90 岁之间的数据有 6800 份)上传到 Ultrain 区块链平台,此时数据已经处于不可篡改状态;

  3. A 保险公司向区块链平台查询年龄段在 40 岁到 90 岁之间的冠心病患者的数据,平台返回 6800 份数据给 A 保险公司,并使用零知识证明模块证明数据的真实性和完整性

  4. A 保险公司可以通过零知识证明验证模块,验证该数据集:a. 每个数据的年龄都是在 40 岁到 90 岁之间的;b. 平台已经返回了全部的该年龄段的数据;

  5. A 保险公司可以使用该数据用于保险精算分析;

技术科普 | Ultrain 可编程零知识证明解决方案

二、Ultrain 可编程零知识证明解决方案

技术科普 | Ultrain 可编程零知识证明解决方案

2.1 现有底层技术分析

以上我们初步介绍了零知识证明技术,目前常见的主流零知识证明技术包括 SNARKs、STARKs、Bulletproofs 等,这些技术各有特点:

技术科普 | Ultrain 可编程零知识证明解决方案

基于 [1] 对现有主流零知识证明技术的分析对比,我们目前采用 SNARK 技术作为 Ultrain 零知识证明技术的底层技术基础。SNARKs 技术目前具备这样的优势:首先该技术是目前区块链链上单个交易性能最好的(聚合验证如 SNARK 虽然可以大大提升单个交易的平均验证速度,但是只有在非常高的并发交易量的情况下,如 675 倍,才能发挥作用);其次 SNARKs 可用代码的成熟度最高(如基于 rust 的更安全的库),并且有诸多后续改进项目持续提高 SNARK 的可用性和安全度如 Sonic[2]、supersonic[3]、Marlin[4]、Fractal[5]。

2.2 现有技术存在的问题

虽然 SNARKs 具备多种优势,但由于其重点关注于零知识证明核心技术部分的实现,在具体应用时,还存在着较多的问题需要解决,主要集中在三个方面:

  • 性能差

SNARKs 重点关注在技术实现上,证明过程运算需要消耗大量的计算资源,大大限制了其应用范围和平台可移植性;该技术缺乏足够的性能和成熟的高速库,使得类似最基本的匿名交易都无法在手机端完成交易的创建;无法让节点在短时间完成大规模的交易验证。

  • 架构弱

SNARKs 在应用架构上存在隐私问题,现有的架构依然部分依赖中心化的服务器,让用户的隐私性方面受到一定的挑战;

  • 开发部署难

基于零知识证明的商业解决方案,并不仅仅是引入 SNARKs 模块就能实现的,需要结合商业场景的隐私保护需求,同存证、加解密、数据授权以及区块链结合,才能形成一套完整的解决方案。同时零知识证明原有的开发步骤非常繁琐,代码编写类似于电路编程,对程序员非常不友好,因而商业落地的时候部署难度比较大。

2.3 Ultrain 可编程零知识证明解决方案架构

技术科普 | Ultrain 可编程零知识证明解决方案

Ultrain 零知识证明解决方案由两部分组成,客户端以及区块链节点端。

  • 零知识证明客户端

零知识证明客户端:负责对用户数据,按客户要求的自定义逻辑进行零知识证明的加密和证明处理,处理完成后的加密数据会提交到区块链节点端保存。我们对客户端进行了大量的优化,可以提供 Pribox 硬件加速版及手机客户端版。

Pribox 硬件加速版针对于需要对大规模数据进行快速处理的情况,可以做到在 TPS 1000 的情况下针对 15 个区块链节点完成零知识证明的证明处理工作;

技术科普 | Ultrain 可编程零知识证明解决方案

手机客户端版本,通过大量的代码优化和引入并行计算能力,客户端的运算量降低到传统方法的 50%,降低了交易延时,同时突破了原有零知识证明只能应用部署在较高计算能力的服务器节点的限制,有助于将零知识证明的能力直接集成到手机客户端中,极大的扩展了零知识证明的应用范围。

  • 零知识证明区块链节点端

零知识证明区块链节点端:负责存储加密的业务数据,同时部署用于访问及验证加密数据的零知识证明智能合约。链上组件采用业界最为成熟的 Groth16 验证方法,同时支持 bls12_381 和 alt_bn128 两种曲线,可以分别针对高安全度应用场景和高性能的应用场景进行深度定制。

同时,为了解决零知识证明难以开发的问题,我们提供了 Ultrain 零知识证明 SDK 组件。开发者通过该 SDK 组件,可以灵活的针对任意数据 / 任意逻辑关系,进行开发配置,而无需进行传统的类电子电路编程,可以极大的简化程序员的工作量和编程难度。

2.4 解决方案技术特点

*业界性能最高的隐私交易

Ultrain 的零知识证明方案,比传统的零知识证明运算速度提升 50%,是目前业界性能最高的隐私计算;

  • 与区块链技术无缝对接

零知识证明方案需要与区块链技术配合使用,本方案与 Ultrain 区块链完成无缝对接,链上提供了零知识证明的智能合约的模板,方便用户快速创建存证、数据授权、匿名交易等一系列服务。链下采用性能优化后的电路模板,方便用户进行一键使用,与区块链技术快速对接。

  • 简单易用的硬件部署方式

采用硬件 pribox 的方式部署时,用户只需要将 pribox 部署在本地,即可调用所有链上相关合约,完成大部分的业务相关使用,支持全周期的金融交易和数据隐私保护。完全避免了传统零知识证明部署复杂繁琐的问题。

  • 完全离线操作,保护用户数据隐私

本方案在用户的区块链节点完全断网的情况下,用户依然可以通过自己的私钥,访问本地节点中自己有权限访问的隐私数据,让用户真正拥有自己的隐私数据产权。

以上我们介绍了 Ultrain 的可编程零知识证明解决方案。在区块链技术应用到商业环境时,零知识证明技术是一项必不可少的关键技术,我们将在区块链数据隐私保护技术方面持续投入,在 pribox 硬件加速版方面,我们将会把 FPGA 以及可信硬件加入到 pribox 中,通过 FPGA 实现更高性能的硬件加速,以及通过 TEE 实现更高安全性的可信计算。在零知识证明 SDK 方面也会持续优化,提供更方便的开发接口,帮助开发者进一步提升零知识证明的开发效率。

参考文献:

[1] 现有 zkp 技术对比 https://github.com/matter-labs/awesome-zero-knowledge-proofs#comparison-of-the-most-popular-zkp-systems

[2] Sonic: Zero-Knowledge SNARKs from Linear-Size Universal and Updateable Structured Reference Strings https://eprint.iacr.org/2019/099

[3] Transparent SNARKs from DARK Compilers https://eprint.iacr.org/2019/1229.pdf

[4] A Marlin is One of the Fastest SNARKs in the Ocean https://www.benthamsgaze.org/2019/09/19/a-marlin-is-one-of-the-fastest-snarks-in-the-ocean/

[5] Fractal: Post-Quantum and Transparent Recursive Proofs from Holography https://eprint.iacr.org/2019/1076

让信任计算赋能各行各业

技术科普 | Ultrain 可编程零知识证明解决方案

Ultrain 团队核心管理人员

技术科普 | Ultrain 可编程零知识证明解决方案

扫二维码下载 UltrainOne APP:

技术科普 | Ultrain 可编程零知识证明解决方案


以下为 Ultrain 各社交媒体账号

欢迎大家加入:

技术科普 | Ultrain 可编程零知识证明解决方案

微信用户可关注公众平台:ultrainchain

并可添加管理员微信(Ultrain_Fan-Club)

或扫码申请加入超脑链 Ultrain 中文社区

技术科普 | Ultrain 可编程零知识证明解决方案

技术科普 | Ultrain 可编程零知识证明解决方案

微博用户可关注:@Ultrain 超脑信任计算

技术科普 | Ultrain 可编程零知识证明解决方案

Facebook 用户可访问主页:Ultraincommunity

Link:http://fb.me/Ultraincommunity

技术科普 | Ultrain 可编程零知识证明解决方案

Twitter 用户可关注:@UltrainB

Link:https://twitter.com/UltrainB

技术科普 | Ultrain 可编程零知识证明解决方案

Telegram 用户可加入电报群:

Link:https://t.me/UltrainOfficial

技术科普 | Ultrain 可编程零知识证明解决方案

-END-

来源链接:mp.weixin.qq.com