零知识证明技术概述

简述

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

什么是零知识证明?

零知识证明又被称为零知识协议,利用数学知识在双方不需要直接传递信息本身的前提下来验证信息的正确性。这个思想首先被发表在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]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM reasoners 入门实验 24点游戏

LLM reasoners Ber666/llm-reasoners 实验过程 实验样例24games,examples/tot_game24,在inference.py中配置使用代理和open ai的api key。 首先安装依赖 git clone https://github.com/Ber666/llm-reasoners cd llm-reasoners pip install -e .然后…

【JAVA】继承

作者主页:paper jie的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精…

437. 路径总和 III

题目描述: 主要思路: 方法一:递归 从每个节点开始一次递归 class Solution { public:int ans0;void dfs(TreeNode* now,int targetSum, long sum){if(!now)return;sumnow->val;if(sumtargetSum)ans1;dfs(now->left,targetSum,sum);df…

[Docker实现测试部署CI/CD----构建成功后钉钉告警(7)]

目录 15、钉钉告警创建项目群,然后添加机器人添加机器人Jenkins 系统配置项目配置修改Jenkinsfile文件,添加钉钉提示信息测试 不修改Jenkinsfile文件,添加钉钉提示信息测试 15、钉钉告警 创建项目群,然后添加机器人 首先需要在钉…

Grafana制作图表-自定义Flink监控图表

简要 有时候我们在官网的Grafana下载的图表是这样的,如下图 #算子的处理时间,就是处理数据的延迟数据抓取,这个的说明看下下面的文章 metrics.latency.interval: 60 metrics.reporter.promgateway.class: org.apache.flink.metrics.prometh…

websocket服务端大报文发送连接自动断开分析

概述 当前springboot版本&#xff1a;2.7.4 使用依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>现象概述&#xff1a; 客户端和服务端已经有心跳…

《大型网站技术架构》第二篇 架构-高可用

高可用在公司中的重要性 对公司而言&#xff0c;可用性关系网站的生死存亡。对个人而言&#xff0c;可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构&#xff0c;对性能、扩展性、伸缩性做了很多改善&#xff0c;但别人未必能直观地感受到&#…

windows系统安装ElasticSearch7.9.3笔记

windows系统安装ElasticSearch7.9.3笔记 从es中文社区 或elastic官网下载安装包 ES中文社区-浏览器地址https://elasticsearch.cn/download/ 下载7.9.3版本的相关安装包 下载的安装包清单如下 开始配置使用带ik分词器和拼音分词器的ES7.9.3 分别解压这3个zip 拷贝ik分词器…

MATLAB(R2023a)添加工具箱TooLbox的方法-以GPOPS为例

一、找到工具箱存放位置 首先我们需要找到工具箱的存放位置&#xff0c;点击这个设置路径可以看到 我们的matlab工具箱的存放位置 C:\Program Files\MATLAB\R2023a\toolbox\matlab 从资源管理器中打开这个位置&#xff0c;可以看到里面各种工具箱 二、放入工具箱 解压我们…

[JavaScript游戏开发] Q版地图上让英雄、地图都动起来

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 第五章 Q版地图上让英雄、地图都动起来…

微信小程序中的全局数据共享(状态管理)使用介绍

开发工具&#xff1a;微信开发者工具Stable 1.06 一、状态管理简介 微信小程序全局状态是指可以在不同页面之间共享的数据或状态。 它可以存储用户的登录状态、个人信息、全局配置信息等。 二、安装MobX 1、安装NPM 在资源管理器的空白地方点右键&#xff0c;选择“在外部…

Oracle锁的学习

Oracle数据库中的锁机制 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。 在数据库中有两种基本的锁类…

Grafana 曲线图报错“parse_exception: Encountered...”

问题现象 配置的Grafana图报错如下&#xff1a; 原因分析 点开报错&#xff0c;可以看到报错详细信息&#xff0c;是查询语句的语法出现了异常。 变量pool的取值为None 解决方案 需要修改变量pool的查询SQL&#xff0c;修改效果如下&#xff1a; 修改后&#x…

第4章 变量、作用域与内存

引言 由于js是一门只有在声明变量后才能明确类型的语言&#xff0c;并且在任意时刻都可以改变数据类型。这也引起了一些问题 原始值与引用值 原始值就是基本数据类型&#xff0c;引言值就是复杂数据类型 变量在赋值的时候。js会判断如果是原始值&#xff0c;访问时就是按值访问…

【Linux】网络套接字知识点补足

目录 1 地址转换函数 1.1 字符串转in_addr的函数: 1.2 in_addr转字符串的函数: 1.3 关于inet_ntoa 2 TCP协议通讯流程 1 地址转换函数 本节只介绍基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr sin_addr表示32位 的IP 地址但是我们通常用点分十进制的字符串…

认识 spring AOP (面向切面编程) - springboot

前言 本篇介绍什么是spring AOP, AOP的优点&#xff0c;使用场景&#xff0c;spring AOP的组成&#xff0c;简单实现AOP 并 了解它的通知&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 什么是s…

js-6:typeof和instanceof的区别

1、typeof typeof操作符返回一个字符串&#xff0c;表示未经计算的操作数的类型。 operand表示对象或原始值的表达式&#xff0c;其类型将被返回。 从上面的例子可以看出&#xff0c;前6个都是基础数据类型&#xff0c;虽然typeof null为object&#xff0c;但这只是javascrip…

Qt扫盲-Model/View入门

Model/View 编程入门 一、概述二、介绍1. 标准部件2. Model/View 控件3. Model/View控件概述4. 在表格单和 model 之间使用适配器 Adapters 三、 简单的 model / view 应用程序示例1. 一个只读表2. 使用role扩展只读示例3. 表格单元中的时钟4. 为列和行设置标题5. 最小编辑示例…

20天学会rust(二)rust的基础语法篇

在第一节&#xff08;20天学rust&#xff08;一&#xff09;和rust say hi&#xff09;我们配置好了rust的环境&#xff0c;并且运行了一个简单的demo——practice-01&#xff0c;接下来我们将从示例入手&#xff0c;学习rust的基础语法。 首先来看下项目结构&#xff1a; 项目…

OpenUSD联盟:塑造元宇宙的3D未来

一、引言 近日&#xff0c;美国3D内容行业的五家主要公司苹果、英伟达、皮克斯、Adobe和Autodesk联合成立了OpenUSD联盟&#xff08;AOUSD&#xff09;。这一联盟的成立标志着元宇宙领域的一次重要合作&#xff0c;旨在制定元宇宙的3D图形标准。本文将深入探讨OpenUSD联盟的目…