Arthur-Merlin protocol交互式知识证明系统

2023-10-09 15:59

本文主要是介绍Arthur-Merlin protocol交互式知识证明系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Arthur-Merlin protocol(以下简称AM)为交互式证明系统,其中Merlin为prover, Arthur为verifier。verifier公开投掷硬币(对prover也可见)来query prover,并对prover提供的proof进行验证来决定是否接受。

1. interactive proof system交互式证明系统

源自论文《Private coins versus public coins in interactive proof systems》:
交互式证明系统中的prover通常被认为具有无限的资源,verifier具有有限的资源。verifier通过抛硬币的方式query prover(有可能询问相同的问题),并对prover返回的结果(proof)进行验证测试,通过测试才认为prover的回答为正确的。
可把这个证明系统扩展为NP问题,其中verifer不需要抛硬币或询问问题,仅需要听(接收)及验证。
在交互式证明系统中,proof的正确性不是数学意义上的,而是概率意义上的,具有一个非零可忽略的错误概率。

可把verifier想象为具有随机数生成器的普通计算机,而将prover想象为具有无限算力的预言机。prover需回答verifier的询问,由verifier来判断prover的回答是否可信。

在论文《Private coins versus public coins in interactive proof systems》中,证明了verifier秘密抛硬币和公开抛硬币在交互式证明系统中的等价性。

2. MA(Arthur-Merlin protocol的1-message模式)

在这里插入图片描述
如上图所示,若在AM中仅有一次消息交互,则可称为该种情况下可称为MA, M A ⊆ A M MA\subseteq AM MAAM。pover对 x x x的proof m m m若为真,则verifier通过运行polynomial time test信服该proof的概率应不低于2/3,若proof为假,则信服该结果的概率应不高于1/3。

  • if x ∈ L x\in L xL, then ∃ m \exist m m, P r r ( V ( m , r ) = 1 ) ≥ 2 3 Pr_r(V(m,r)=1)\geq \frac{2}{3} Prr(V(m,r)=1)32,
  • if x ∉ L x\notin L x/L, then ∀ m \forall m m, P r r ( V ( m , r ) = 1 ) ≤ 1 3 Pr_r(V(m,r)=1)\leq \frac{1}{3} Prr(V(m,r)=1)31.

若并行运行以上流程 n n n次,则有,对于 ∀ n \forall n n:

  • if x ∈ L x\in L xL, then ∃ m \exist m m, P r r ( V ( m , r ) = 1 ) ≥ 1 − 1 2 n Pr_r(V(m,r)=1)\geq 1-\frac{1}{2^n} Prr(V(m,r)=1)12n1,
  • if x ∉ L x\notin L x/L, then ∀ m \forall m m, P r r ( V ( m , r ) = 1 ) ≤ 1 2 n Pr_r(V(m,r)=1)\leq \frac{1}{2^n} Prr(V(m,r)=1)2n1.

所以,综上对MA的perfect completeness表述可为:

  • if x ∈ L x\in L xL, then ∃ m \exist m m, P r r ( V ( m , r ) = 1 ) = 1 Pr_r(V(m,r)=1)=1 Prr(V(m,r)=1)=1,
  • if x ∉ L x\notin L x/L, then ∀ m \forall m m, P r r ( V ( m , r ) = 1 ) ≤ 1 2 Pr_r(V(m,r)=1)\leq \frac{1}{2} Prr(V(m,r)=1)21.

参考资料:
[1] https://en.wikipedia.org/wiki/Arthur–Merlin_protocol
[2] 讲义:lect22-An Arthur-Merlin proof for the Hilbert’s Nullstellensatz
[3] 讲义:Lecture 17- Arthur-Merlin games, Zero-knowledge proofs
[4] 论文《Private coins versus public coins in interactive proof systems》

这篇关于Arthur-Merlin protocol交互式知识证明系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中