Qtum研究院:隐私元年,金融巨头们关注的零知识证明是什么?

2023-10-30 19:30

本文主要是介绍Qtum研究院:隐私元年,金融巨头们关注的零知识证明是什么?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


前言

据Coindesk 2018年10月21日报道,荷兰国际银行(ING Bank)在Sibos银行业会议上宣布推出“零知识集会员”(Zero-Knowledge Set Membership,ZKSM)解决方案,促进区块链隐私向更高层次发展。

 

区块链技术一直处于金融巨头们的灼热目光之下,类似联盟链的共享账簿帮助银行之间节省了大量的成本,但他们依然想要保护隐私数据,因此零知识证明是金融机构的一个可能帮助实现这一愿景的工具。Zcash首先提出一种零知识证明的实现方式,通过这种方式银行可以在不泄露他们的信息或损害客户机密的情况下将资产转移到这些网络上。

 

如何实现交易过程完全匿名?匿名交易的实现依赖于一种叫做“零知识证明”的密码学手段,本文为你清晰讲述ZCash的交易原理,以及零知识证明是交易过程中的运用。

 

1

什么是零知识证明?

20世纪80年代MIT首次提出零知识证明——证明方A向验证方B证明某事的真实性的方法,除了特定具体陈述的事实以外,不透露任何额外的信息。例如登录网站时,现如今通用做法是web服务器储存了原有密码哈希值,用户在登录时进行哈希计算结果比对,但是这种方式会使得服务器遭受攻击时,用户的密码也就暴露无疑。如果能够实现零知识证明,就可以在不知道用户密码的前提下,只进行随机验证即可登录,即使服务器被攻击,由于并未存储用户明文密码,有效的保证用户安全。

 

基本的零知识证明是交互的,需要验证方B向证明方A不断询问一系列有关其所掌握的数据的相关问题,如果均能够给出正确回答,大概率证明方A的确拥有相关数据。例如某人声称知道一个数独难题的答案,一种零知识证明的方式是验证方随机指定这一次按列、按行还是按九宫格来检测,每次检测不需要看到数字摆的具体位置,只需要检测出来是否包含了1-9个数字即可,只要验证的次数足够多,那么可以大概率相信证明方是知道数独题目的解的。但是这样简单的方式还不能让人相信证明方A和验证方B均没有作假,在数独的案例中,两者有可能事先串通好,从而使得证明方A在不知道答案的前提下通过验证。如果他们想让第三方信服,验证方B必须也要证明自己每次的检测方案是随机的且自己没有和证明方A串通。

 

非交互式的零知识证明顾名思义,不需要互动过程,避免了串通的可能性,但是可能会额外需要一些机器和程序来决定试验的序列:例如在数独的例子中,通过程序的方式来决定哪一次按行、哪一次按列来检测,但是这个试验序列必须保密,否则验证方预先知道了试验的序列就有可能利用这个信息,提前准备,在并不知情下通过验证。

 

零知识证明的随机验证可以概括为两类:

  • 事实类陈述:例如“证明一个数N是合数”

  • 数据呈现陈述:例如“知道N的因式分解”

 

但并不是所有的问题都有零知识证明的加密方案,Goldreich, Micali 和 Wigderson 给出了理论上存在零知识证明解的有效范围。他们发现对于在多项式时间内可以验证解的决策问题(问题的答案仅为是/否),存在已知的零知识证明方案。只需要在这样问题中找到想要证明的论述,并转化为图的3-着色问题的一个实例,那么就可以利用已有的协议实现零知识证明。

 

 

2

区块链中的零知识证明应用

实际零知识证明的技术涉及非常深入的数学与密码学基础知识,因此为了更加形象的讲述零知识证明的交易过程,我们请到了数字货币界最著名CP:Alice和Bob,以Qtum的交易为例演示零知识证明如何运用在区块链中。

 

交易场景:Alice转1个QTUM给Bob

 

转账前,Alice要事先准备1个QTUM。为了方便理解,我们把Alice准备转出的这1个QTUM看成一张面额为1个QTUM的权益票据。

从这张票据已知:

1. Alice确实有1个QTUM

2. Alice使用私钥证明Alice拥有对这笔资产转账的权力。

票据的面额和转账权都已经明确,Alice就可以给Bob转账了。转账的原理很简单,就是给Bob新建一张一样的票据,证明Bob拥有了1个QTUM。同时撕掉Alice手中那张的票据,通过这样的方式,实现资产所有权的转移。

 

 

以上逻辑其实不难理解,与日常生活中的银行转账是一个道理。通过银行转账,我们在交易时不必对实物货币进行转移,而是以银行记账的方式,实现“资产所有权”的转移。

 

ZCash的转账原理与QTUM一样,ZCash的交易过程也是 “资产所有权”的转移。继续沿用票据的比方。

 

交易场景:Alice转1个ZEC给Bob。

 

转账前,Alice创建一张面额为1个ZEC的票据。

 

能从该凭证中已知:

1. Alice确实拥有1个ZEC,Alice使用私钥证明Alice拥有对这笔资产转账的权力。

2. 这张“凭证”上多了一串随机数,用符号 r 表示。这串随机数的作用好比发票据代号,用来唯一识别该票据。Alice的票据代号为r1。明确以上信息,Alice就可以进行ZEC转账了。

 

1、QTUM一样,要先为Bob新建一张“票据”。Bob的票据代号(r2)与Alice的票据代号(r1)不相同。

 

 

2、新的“资产所有权”生成的同时,必须要想办法销毁原来的“资产所有权”。即必须想办法让Alice手中的“票据”失效。与QTUM的“直接撕毁”不同,而是采用“备注作废”的手段,达到同样的效果。怎么理解呢就是在不对原先票据作任何处理的前提下,新建一个作废文件列表,录入需要作废的“发票据代号”。

 

 

从上图可以看出,原先的Alice持有的票据仍旧存在,并没有消失,只是这张票据已经被记入“作废列表”。在确定资产所有权时要同时读取两个列表的信息,能确定Bob拥有资产所有权的判断方法是:作废列表中不存在Bob所持“票据”的代号。

 

可是为什么要这样设计呢?其实这样设计的目的是为了在交易过程中运用 “零知识证明”。

 

我们再回顾QTUM和ZCash的例子。

 

Alice要向Bob转一个单位的数字货币(QTUM/ZEC),即Alice要向Bob转移一个单位的资产所有权。这时有以下两个方法:

 

(一)QTUM:Alice拥有一张1QTUM的票据,要转账给Bob时,先给Bob新建一张1QTUM的票据,同时当着Bob的面将自己原先的票据撕毁。

 

(二)ZCash:Alice拥有一张1ZEC的票据,要转账给Bob时,先给Bob新建一张1ZEC的票据,然后在一张约定有效的作废列表中,记录下Alice的发票据的代号,证明Alice的票据已经失效。

 

ZCash的方法属于零知识证明。整个交易过程中,Bob并没有见过Alice的票据,但是还是实现了资产所有权的转移。在ZCash的整个交易系统中,Alice和Bob的交易还有其他见证者,即负责记录交易信息的矿工。同样道理,矿工也不必看到Alice的票据,只要能确定代号为r1的票据已经作废了就行。

 

进一步解释ZCash的匿名交易过程了。还是那个例子:Alice转1 个ZEC给Bob。这个例子中有涉及到的角色有转账双方Alice和Bob,以及记账者(矿工)。

首先是Alice和Bob都有了一张票据。

这两张“票据”都是有效的。Alice的票据开始就存在于整个ZCash网络,Bob的票据在生成后也会被广播到全网。为了隐藏交易者信息,要对两张票据进行加密处理,信息都是被加密的,可以通过拥有者的私钥解密。

 

同时,因为资产只能有一份,所有矿工手里还有一个作废列表。Alice要同时广播自己的“发票代号”,录入作废列表中。发票代号也是加密的。所以矿工们能看到的信息其实是这样的。其中Alice的票据是原先存在的,Alice的票据代号r1和Bob的票据是在交易过程中被Alice广播的。

矿工们能获取的信息相当有限,但是这并不影响对矿工对交易有效性的判断。

 

判断的逻辑相当简单:矿工拿到Alice给的票据代号r1,去作废列表中检索,假如作废列表中已经存在r1,则证明r1所对应的的票据早已失效;若作废列表中并不存在r1,则证明r1对应的票据仍旧有效,此时矿工把r1录入作废列表中,把新生成的票据录入票据列表中。所以记账的过程就是对原有票据登记失效,并存入现有票据票据的过程。

 

在这个过程中,我们不难发现,每笔交易矿工能接收到的东西只有一个发票据代号,和一张新的发票据,而且这两样东西都是被加密的。所以矿工并不知道转账双方是谁,也不知道转账金额是多少。

 

现有区块链上的交易中,除了使用地址来替换交易双方的真实身份,使得交易具有部分匿名性以外,发送、接收地址和金额都是已知的,别人有可能通过网络上的各种信息、和现实世界发生的交互记录等将地址和真实身份对应起来,也因此具有隐私暴露的隐患。

 

零知识证明可以在不透露花费了具体哪个货币的基础上,验证出你的确花了这笔钱。为了将这笔钱转给他人,逻辑上需要我们使得这枚隐私币不能再被别人花费,隐私币的办法是大家共同维护一个作废列表,存着所有已经花费的隐私币的序列号。

 

矿工在验证这笔花费交易时运用零知识证明的方法,不需要知道具体花掉哪一个隐私币,也可以验证隐私币的序列号是否在作废列表里。由于花费交易并没有输入地址和签名的信息,整个交易过程中,矿工也并不知道这个隐私币的来源,因此也就难以对交易历史进行分析而获取用户身份。

 

 

参考资料

  1. Ian Allison ,https://www.coindesk.com/ing-bank-launches-simplified-zero-knowledge-proofs-for-blockchain-privacy/

  2. https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/

  3.  老钱,《一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)》

  4. http://www.sohu.com/a/224915382_117959

  5.  Zcoin中文社区,《Zcoin和Zcash: 相似性和不同处》.

  6. http://www.zcoinchina.org/zcoin-and-zcash

  7. 零币技术白皮书《一种通过使用零币协议(zerocoin protocol)来保障账务隐私的加密货币》

  8. Christian Reitwiessner,《zkSNARKs in a nutshell》

  9. https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/

  10. Matthew Green,《Zero Knowledge Proofs: An illustrated primer》

     

这篇关于Qtum研究院:隐私元年,金融巨头们关注的零知识证明是什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/310080

相关文章

[职场] 公务员的利弊分析 #知识分享#经验分享#其他

公务员的利弊分析     公务员作为一种稳定的职业选择,一直备受人们的关注。然而,就像任何其他职业一样,公务员职位也有其利与弊。本文将对公务员的利弊进行分析,帮助读者更好地了解这一职业的特点。 利: 1. 稳定的职业:公务员职位通常具有较高的稳定性,一旦进入公务员队伍,往往可以享受到稳定的工作环境和薪资待遇。这对于那些追求稳定的人来说,是一个很大的优势。 2. 薪资福利优厚:公务员的薪资和

AI赋能天气:微软研究院发布首个大规模大气基础模型Aurora

编者按:气候变化日益加剧,高温、洪水、干旱,频率和强度不断增加的全球极端天气给整个人类社会都带来了难以估计的影响。这给现有的天气预测模型提出了更高的要求——这些模型要更准确地预测极端天气变化,为政府、企业和公众提供更可靠的信息,以便做出及时的准备和响应。为了应对这一挑战,微软研究院开发了首个大规模大气基础模型 Aurora,其超高的预测准确率、效率及计算速度,实现了目前最先进天气预测系统性能的显著

关于CPU的一点知识

首先说一下,CPU是干啥的: CPU所负责的就是解释和运行最终转换成机器语言的程序内容 我们需要知道的CPU结构:重点需要关注寄存器 运算器 简单说就是负责运算从内存读取到寄存器中的数据,可以看作一个数据加工厂,就是对寄存器中的数据做运算,这些运算包含基本的算术和逻辑运算。 算术逻辑单元(ALU) 这个是运算器中重要的一个组成,主要负责的就是对数据的处理,从而实现对数据的算术和

使用ig507金融数据库的股票API接口经验有感:Java与Python

一、Java技术: 1. Java调用ig507金融数据库(ig507.com)股票API接口 引言: 随着金融科技的不断发展,数据驱动的投资策略变得越来越重要。本文将介绍如何使用Java语言调用ig507金融数据库的股票API接口,以获取实时股票数据,并展示基本的编程步骤和注意事项。 步骤一:引入依赖库 在Java项目中,首先需要引入用于处理HTTP请求和网络通信的库,如Apache

计算机组成入门知识

前言👀~ 数据库的知识点先暂且分享到这,接下来开始接触计算机组成以及计算机网络相关的知识点,这一章先介绍一些基础的计算机组成知识 一台计算机如何组成的? 存储器 CPU cpu的工作流程 主频 如何衡量CPU好坏呢? 指令 操作系统 操作系统功能 操作系统"内核"  如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics:向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三.

某大厂程序员吐槽:离职交接时,新人被工作量吓退,领导却污蔑我故意劝退新人,我怒晒工作短信反击证明,新人看了后也决定走人了!

一位知名大公司的程序员分享了他离职时的遭遇:在交接工作时,新进的同事因工作量过大而感到压力,但出乎意料的是,他们的领导却指责我故意吓唬新人。为了证明自己的清白,我晒出了工作短信作为反击,结果连新人也决定离开。 在任何组织里,团队文化的优劣都是决定工作效率和质量的关键。一个和谐相处的团队不仅能提升工作效率,还能使工作氛围变得轻松愉快。 然而,一旦团队内部出现权力斗争或领导偏爱小团体、

【PL理论深化】(3) MI 归纳法:归纳假设 (IH) | 结构归纳法 | 归纳假设的证明

💬 写在前面:所有编程语言都是通过归纳法定义的。因此,虽然编程语言本身是有限的,但用该语言编写的程序数量是没有限制的,本章将学习编程语言研究中最基本的归纳法。本章我们继续讲解归纳法,介绍归纳假设和结构性归纳法。 目录 0x00 归纳假设 (IH) 和结构归纳法 0x01 归纳假设的证明 0x00 归纳假设 (IH) 和结构归纳法 归纳法是一种用于证明归纳定义的集合中的元素所具有

力扣SQL50 求关注者的数量 分组计数

Problem: 1729. 求关注者的数量 Code select user_id, count(1) followers_countfrom Followers group by user_idorder by user_id;

基础C语言知识串串香11☞宏定义与预处理、函数和函数库

​ 六、C语言宏定义与预处理、函数和函数库 6.1 编译工具链 源码.c ——> (预处理)——>预处理过的.i文件——>(编译)——>汇编文件.S——>(汇编)——>目标文件.o->(链接)——>elf可执行程序 预处理用预处理器,编译用编译器,汇编用汇编器,链接用链接器,这几个工具再加上其他一些额外的会用到的可用工具,合起来叫编译工具链(gcc就是一个编译工具链)。 gcc中各选项