零知识证明技术概述

简述

隐私泄露问题给企业带来了巨大的损失,本文简述零知识证明技术并且给出对应的应用示例:
在这里插入图片描述

什么是零知识证明?

零知识证明又被称为零知识协议,利用数学知识在双方不需要直接传递信息本身的前提下来验证信息的正确性。这个思想首先被发表在1985年出版的MIT的论文里。

零知识证明如何工作?

接下来介绍一个被用来介绍零知识证明思想的实例:

假定你(证明人 the prover)有一个患有色盲的朋友(验证者 the verifier),这个朋友没办法区分球的颜色是绿色还是红色(没有任何信息能区分球的颜色),你被要求去证明两个球的颜色的差异,而你的朋友不只是因为你的言论而被取信。

针对这个问题的零知识证明的方法过程如下所示:

1、你的朋友将两个球分别拿到左右手,然后让你看看手上的球的颜色分别是啥

2、你的朋友背对着你,交换左右手球或者不交换。

3、然后你的朋友将手里的球展示给你,问你他交换了球还是没有交换球?因为你能够通过颜色来区分球,所以你能很轻松的给出正确的答案。

4、但是你的朋友并没有信任你,如果左右手的球的颜色本来就没有差异,你有50%的机率来猜中你的朋友是否更换了球。

5、然而,如果你的朋友重复整个实验过程,那么你每次都猜中他是否更换了左右球的概率会很低,如果你一直猜中他的动作,那么你的朋友在没有知晓这两个球颜色的情况下(他是色盲)能够确认这两个球的颜色是不同的。

现实中有一系列的密码学算法来验证整个数学计算过程,例如,利用零知识证明的概念,交易的接受方能够在不知晓支付的发起方账户余额的情况下,确认支付的发起方是否有足够的余额来支付发起这笔交易。

另一个用来阐述零知识证明的例子,是阿里巴巴洞穴的故事

零知识证明有哪些特性?

零知识证明必须满足如下的特性:

1、完整性:如果证明人提供的信息都是正确的,那么一个零知识证明的方法将会让验证者能够验证证明人所说的信息是正确的。

2、健全性(soundness):如果证明人提供的信息是错误的,那么一个零知识证明的方法能够让验证者去反驳证明人所陈述的信息。

3、零知识:证明人提供的信息除了让验证者能够知道正确还是错误之外,不会提供任何其他的信息。

不同类型的零知识证明

目前有两类零知识证明:

交互式零知识证明 :在这种类型的零知识证明中,证明者和验证者将会交互多次,验证者将会对证明者发起挑战,证明者将会回应验证者的的多次挑战直到验证者信服。

非交互式的零知识证明:在这种类型的零知识证明中,验证者可以在任意时间执行证明者所发起的证明过程,这种类型的零知识证明需要更多的算力。

零知识证明运用于哪些场景中?

零知识证明将会被运用在保护数据隐私的各种密码学实例中,例如:

1、区块链:公开区块链(比特币和以太坊)的透明性可以进行公开的交易认证。然后,这也意味着仅仅保护比较少的隐私性并且可能会导致用户的去匿名化,零知识证明可以让公开区块链引入更多的隐私保护。例如,密码学货币Zcash就是基于非交互式的参数零知识证明方法(zk-SNARK)–一种零知识证明的方法。另一个例子是Zero-Knowledge Scalable Transparent Argument of Knowledge (zk-STARK),被用于以太坊的区块链中,以提供隐私性和可扩展性。

2、金融领域:ING使用零知识证明技术允许顾客证明他们的秘密数字在已知的范围内,例如,资产抵押贷款人能够证明他们的收入在可接受的范围内,而不需要披露出他们具体的收入。

3、在线投票:零知识证明的技术能够在匿名投票中展现出投票的结果,并且验证他们的投票是否在结果中。

4、鉴权:零知识证明技术能够在不交换秘密信息(例如密钥)的前提下验证用户的信息。

5、机器学习:零知识证明技术能够允许机器学习模型的所有者让其他人能够相信模型的结果,而不需要泄露模型相关的信息。

零知识证明所面临的挑战

  • 并没有100%的保证:尽管证明者在撒谎的情况下验证者验证成功的概率很低,零知识证明技术并不能保证声明是100%合法的。正如之前所展示的,在验证的轮次越来越多的情况下,证明者撒谎的概率越来越低,但是概率并不会等于0,因此,从数学意义上,零知识证明并不是真正的数学证明。

  • 计算复杂度:在交互式的零知识证明过程中,算法的复杂度会比较高,因为验证者和证明者之间会进行多次交互。在非交互式的零知识证明中,需要很多的计算资源,这使得零知识证明不怎么适合慢的计算设备或者移动设备。

鉴权过程中,零知识证明方式和JWT之间的区别?

一个经典的零知识证明用于鉴权的方案:

Shnorr身份认证方案中,证明实体A的公钥为v,私钥为s,其中v=a^s mod p,a为q阶元。证明实体A向验证实体B证明其身份的具体过程如下:

(1)证明实体A任选一随机数r∈[1,q-1],计算x=a^r mod p,然后将计算结果发送给验证实体B;

(2)验证实体B任选一整数e∈[1,2^1]发送给证明实体A;

(3)证明实体A发送给验证实体B:y=(r+se)mod q;

(4)验证实体B验证x=(ay)*(ve) mod p是否成立。

根据方案可以发现,该零知识证明存在大量的模运算过程,计算量很大,占用了大量计算资源。

JWT身份认证,包含了身份验证所有的信息,服务器不需要存储报文信息,增加了系统可用性和伸缩性,减缓了服务器的压力,缺陷:因为token是无状态的,所以在有效期内,无法让一个token失效,如果用户选择从登陆状态退出,后端需要其他的逻辑来解决。
ZKPs用于鉴权比较JWT技术,侧重于在验证方不需要知晓要验证信息的具体值,JWT技术却需要知晓客户端发送过来的身份验证的所有信息,不具有隐私保护的能力。

参考:[Zero-Knowledge Proofs: How it Works & Use Cases in 2023]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55175.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为PMS API client token auth failed

对接华为pms时出现问题,提示华为PMS API client token auth failed 主要是权限的问题,创建项目的时候选择N/A

Windows11 家庭中文版关于本地组策略编辑器gpedit.msc找不到即打不开的解决办法(征诚小张售后实测有效)

Windows11 家庭中文版关于本地组策略编辑器gpedit.msc找不到即打不开的解决办法 根本原因:是因为Windows11家庭中文版的 版本系统没内置安装本地策略组编辑器 好了废话不多说 直接说解决办法 第一步 首先电脑上新建一个空文本文件 输入以下内容: echo o…

网络安全之原型链污染

目录: 目录: 一、概念 二、举例 三、 实操了解 总结 四、抛出原题,历年原题复现 第一题: 五、分析与原理 第二题: 八、分析与原理 九、具体操作,payload与结果 结果: 一、概念 Java…

Prometheus实现系统监控报警邮件

Prometheus实现系统监控报警邮件 简介 Prometheus将数据采集和报警分成了两个模块。报警规则配置在Prometheus Servers上, 然后发送报警信息到AlertManger,然后我们的AlertManager就来管理这些报警信息,聚合报警信息过后通过email、PagerDu…

ClickHouse SQL与引擎--基本使用(一)

1.查看所有的数据库 show databases; 2.创建库 CREATE DATABASE zabbix ENGINE Ordinary; ATTACH DATABASE ck_test ENGINE Ordinary;3.创建本地表 CREATE TABLE IF NOT EXISTS test01(id UInt64,name String,time UInt64,age UInt8,flag UInt8 ) ENGINE MergeTree PARTI…

webpack复习

webpack webpack复习 webpack基本配置 拆分配置 - 公共配置 生产环境配置 开发环境配置 使用merge webpack-dev-server 启动本地服务 在公共中引入babel-loader处理es6 webpack高级配置 多入口文件 enty 入口为一个对象 里面的key为入口名 value为入口文件路径 例如 pa…

图像处理库(Opencv, Matplotlib, PIL)以及三者之间的转换

文章目录 1. Opencv2. Matplotlib3. PIL4. 三者的区别和相互转换5. Torchvision 中的相关转换库5.1 ToPILImage([mode])5.2 ToTensor5.3 PILToTensor 1. Opencv opencv的基本图像类型可以和numpy数组相互转化,因此可以直接调用torch.from_numpy(img) 将图像转换成t…

使用Exe4j将jar文件打包成可执行.exe程序[详细]

1. 下载Exe4j EXE4j破解版下载http://www.sd173.com/soft/10717.html 不破解的话,运行打包的exe会有exe4j的欢迎语。关于Exe4j的破解教程可自行百度搜索。 2. 准备jar包 打包前首先确保jar能运行。可以将所有的以来包放在一个目录下,如lib目录&#…

TOPSIS法

TOPSIS法 文章目录 TOPSIS法TOPSIS法的三点解释增加指标个数1.统一指标类型极小型指标转换为极大型指标的公式中间型指标转换为极大型指标的公式区间型指标转换为极大型指标的公式 2.正向化矩阵标准化3.计算得分并归一化类比只有一个指标计算得分 TOPSIS法代码统一指标类型判断…

f12 CSS网页调试_css样式被划了黑线怎么办

我的问题是这样的 class加上去了,但是样式不生效,此时可能是样式被其他样式覆盖了, 解决方案就是 给颜色后边添加一个!important

软工导论知识框架(四)结构化系统的实现

一.编码 编码和测试统称为系统实现。 1.目的:把模块的过程性描述翻译为用选定的程序设计语言书写的源程序(源代码)。 (真正交付给用户使用的,并不是源代码,而是经过编译链接生成的可执行的代码&#xff…

Go语言time库,时间和日期相关的操作方法

time库 用于处理时间、日期和时区的核心库。在实际开发中,常常需要与时间打交道,例如记录日志、处理时间差、计算时间间隔等等。因此,掌握time库的使用方法对于Go开发者来说非常重要。 在Go语言中,时间表示为time.Time类型&…