第八个知识点:交互式的定义如何帮助计算和IP类问题是什么
第八个知识点:交互式的定义如何帮助计算和IP类问题是什么
这是系列中的第8篇,我们主要讨论计算中交互作用的用处和IP类问题是什么.
为了回答这些问题,我们首先给交互式证明系统一个简洁的介绍.众所周知,零知识证明在密码协议中十分重要.零知识的概念在这篇介绍中有 [1].这种证明的迷人之处就在于断言的可验证性被证明了.为了解释这个东西,Goldwasser, Micali和Rackoff在经典证明系统上增加两种结构变成了交互式证明系统.第一个结构是随机化(randomisation),也就是说证明的结果可能是错的,但是这种错误只能以很小的概率出现.第二个结构就是像它名字那样,就是交互性(interaction),静态证明系统被动态的证明代替,动态证明将于验证程序交互并给出断言是否为真.结合这两种结构的经典证明系统就是一个巨大的复杂类问题---IP.
什么是证明
不严谨的说,一个证明就是一个人能让另一个人相信的方法.这两个人在证明系统中叫prover和verifier.
经典的证明
一个经典的数学证明系统就是固定的一些陈述语句的排列.这些排列被prover写下来,然后verifier一步一步的判断这些陈述语句的正确性.这个过程是没有交互的.
任何证明系统应该有下面的属性:
- 有效性 证明应该是有效率的.
- 稳定性 对于错误的命题,很难有不合法的证明
- 完整性 对任何正确的命题都应该有一个证明
回顾NP复杂类问题被看作是一类语言.它的成员都具有可以轻松检查的证书(注:这里建议读读NP的另一种定义,清晰的解释了这个证书是啥.).因此NP恰好就是一类经典证明的语言.
交互式证明系统
在一个交互式证明系统里,prover和verifier被允许交互式的交换信息.在引入交互证明的概念之前,我们来给出一个例子来解释交互式证明系统是怎么工作的.
例子:图的同构和图的非同构
两个图G和H被叫做同构的,如果G的节点可以重新排列使得它可以和H节点相同.我们定义下面这类语言:
\(ISO = \{ <G,H>| G\space and\space H\space are \space isomorphic\space graphs \}\)
ISO是NP类的语言.尽管节点的数量可能非常大,但是我们能非常容易的验证这个问题.
然后我们考虑ISO问题的补,即Non-isomorphism问题,就是定义语言:
\(NOISO = \{ <G,H>| G\space and\space H\space are\space not \space isomorphic\space graphs \}\)
问题是,使用经典的证明我们如何给verifier证明G和H不是同构的.我们不知道如何提供一个短的证明,多项式时间无法对每个情况进行检查.因为我们不知道如何证明NOISO在NP中.然而在考虑到交互式证明,prover可以说服verifier,这两个图是不同构的(多项式时间内).
prover和verifier都有一对图\((G_1,G_2)\)作为初始输入.verifier随机的选择一个随机比特(bit)\(b \in \{ 0,1\}\)和一个排列\(\pi\).然后将\(\pi\)应用到\(G_b\)得到一个图\(H\).(这里意思就是说\(H\)和\(G_b\)同构)verifier发送\(H\)给prover.然后prover在收到\(H\)之后,prover发送一比特\(b^{'} \in \{0,1\}\)给verifier.最后verifier接受当且仅当\(b^{'}=b\).
在协议背后的观点就是,如果被给的\((G_1,G_2)\)不是同构的,那么prover应该能够确定\(H\)是来自于\(G_1\)或者\(G_2\)的.然而,如果输入的两个图是同构的,那么尽管有着无限的计算能力,prover最好的选择就是随机的猜\(b^{'}\).这种情况下,prover至少1/2的接受.
从上面的例子中,我们总结NOISO不能被verifier用一个古典的证明系统证明.但是它可以被一个交互的证明系统证明.我们能看到交互的力量.
现在我们给出交互式证明系统的定义和IP复杂类的定义.
交互式证明系统:一对交互机\((P,V)\)被叫做\(L\)语言的交互式证明系统,如果V是多项式时间的,(P的计算能力是无限的),和现在的条件满足:
- 完整性:对所有的\(x \in L\),\(Pr[<P,V> (x)=1] \ge 2/3\)
- 稳定性:对所有的\(x \in L\),\(Pr[<P,V>(x)=1] \le 1/3\)
IP类复杂问题:IP类问题包含所有交互式证明系统能证明的语言.
通过定义,在BPP语言中的所有语言都在IP中.如果我们限制交换的信息的数量为1,那么这就是IP中的NP类问题.实际上,IP是一个很大的类.在1992年,Shamir证明了\(PSPACE = IP\)[3].
额外的,注意到协议prover应该抛出私有的硬币,如果prover被允许访问verifier的随机字符串,就会导致使用共有硬币的交互式证明,这种模型和AM复杂类[4]很像.
[1] http://dl.acm.org/citation.cfm?id=63434
[2] http://www.amazon.co.uk/Introduction-Theory-Computation-Michael-Sipser/dp/0619217642
[3] http://dl.acm.org/citation.cfm?doid=146585.146609
[4] http://en.wikipedia.org/wiki/Arthur–Merlin_protocol
第八个知识点:交互式的定义如何帮助计算和IP类问题是什么的更多相关文章
- 第二十八个知识点:什么是公钥密码学的IND-CCA安全定义?
第二十八个知识点:什么是公钥密码学的IND-CCA安全定义? 我们将在这篇博客中讨论公钥加密的IND-CCA安全. IND-CCA安全代表选择明文的不可伪造性.这样的安全方案的思想就是给定一个密文,攻 ...
- 第四十八个知识点:TPM的目的和使用方法
第四十八个知识点:TPM的目的和使用方法 在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题.真正的问题是信任.信任什么?首先内存和软件运行在电脑上.这些东西能直接的通过操 ...
- 第十八个知识点:画一个描述ECB,CBC,CTR模式的操作
第十八个知识点:画一个描述ECB,CBC,CTR模式的操作 第8周是画三个图的任务,但是维基百科上已经有人画的很好了 https://en.wikipedia.org/wiki/File:ECB_en ...
- 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- day319 1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法
1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ...
- 【Java】定义魔法数字,以及枚举类的构造方法的使用
JavaWeb项目中需要定义各种常量时,常用方法有: 写到Property配置文件中,用静态代码块优先加载配置文件.参考http://www.cnblogs.com/guxin/p/java-prop ...
- 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Compl
因标题框有限,题目未显示完整,以下再放一份: 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Compl ...
- Python全栈day24(面向对象编程作业作业_定义学校老师课程班级学生类)
面向对象作业 作业_定义学校老师课程班级学生类.py #面向对象编程作业,定义学校老师课程班级学生类 #定义几个类,尽可能定义多的数据属性及函数属性 class School: def __init_ ...
随机推荐
- 11 — springboot集成swagger — 更新完毕
1.前言 理论知识滤过,自行百度百科swagger是什么 2.导入依赖 <!-- swagger所需要的依赖--> <dependency> <groupId>io ...
- Postman 中 Pre-request Script 常用 js 脚本
1. 生成一个MD5或SHA1加密的字符串str_md5,str_sha1 string1 = "123456"; var str_md5= CryptoJS.MD5(string ...
- Linux学习 - Bash变量
一.用户自定义变量(本地名) 用户自定义变量只有在当前的shell中生效 1 定义变量 name="zheng huiwei" aa=123 2 变量叠加 aa="$aa ...
- Spring整合Ibatis之SqlMapClientDaoSupport
前言 HibernateDaoSupport SqlMapClientDaoSupport . 其实就作用而言两者是一样的,都是为提供DAO支持,为访问数据库提供支持. 只不过HibernateD ...
- 一、手把手教你docker搭建fastDFS文件上传下载服务器
在搭建fastDFS文件上传下载服务器之前,你需要准备的有一个可连接的linux服务器,并且该linux服务器上已经安装了docker,若还有没安装docker的,先百度自行安装docker. 1.执 ...
- 【力扣】剑指 Offer 25. 合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4输出:1->1->2->3-> ...
- 🔥🔥🔥Flutter 字节跳动穿山甲广告插件发布 - FlutterAds
前言 Flutter 已成为目前最流行的跨平台框架之一,在近期的几个大版本的发布中都提到了 Flutter 版本 Google 广告插件 [google_mobile_ads] .对于"出海 ...
- time_formatter(uaf)
拿到题目先例行检查 然后进入主函数查看程序流程, 进入函数 这些字符串对我们选择1的输入进行了限制 在输入里面,可以看到strdup这个关键性的函数 调用了malloc这个函数 在选择四里面,可以看到 ...
- Google earth engine 中的投影、重采样、尺度
本文主要翻译自下述GEE官方帮助 https://developers.google.com/earth-engine/guides/scale https://developers.google.c ...
- 小迪安全 Web安全 基础入门 - 第九天 信息打点 - CDN绕过篇&漏洞回链&接口探针&全网扫描&反向邮件
一. CDN知识-工作原理及阻碍 (一)工作原理 1.概述:CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地 ...