第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题

原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6-how-can-we-interpret.html

这是密码学52件事的第六篇,我们继续解释复杂性理论,这篇我们给NP问题另一个定义。(注:就是说这节中,我们把"问题是否为NP的"转换为另一组可以在多项式时间内判定的定理)。

这个问题是紧接着上一周的问题的。上周我们回答了什么是复杂NP类问题。这周我们回答一个相关的问题---我们怎么把NP解释成一组能被多项式时间检查的命题。

现在我们看一个直觉上的"一个问题是NP的"这意味着什么?他不仅仅是一个直观的定义,更是清晰的说明了为什么这类复杂性问题对密码学和世界上其他问题那么重要。现在在我们讨论怎么用之前,我们先给出定义:

NP 是一类能在多项式时间内确定的问题

NP 是存在多项式时间运行的Verifier

这到底啥意思?首先我们有一个元素\(x\),我们想要知道是否\(x \in L\)(\(L\)是NP语言)。我们有一个证明\(P\)对\(x\)输出一个证据\(w\),这可能需要要给多项式时间在给定\(x\)寻找\(w\)。然后如果我们给出\(x\)和\(w\)到我们的验证器\(V\),\(V\)能够在多项式时间内输出是否\(x \in L\)。

我在看到这里的时候以我的知识有点不懂。 这里就是交互式证明系统,限制了交互的时间复杂度。那为什么非要给出一个V,然后给出一个P呢。这个是交互式证明系统定义的一部分。在这种计算模型(交互式证明系统)下,限制一下计算时间,就可以给出了NP问题的定义。 这里我十分推荐读下这节Sipser's Introduction to the Theory of Computation, section 7.3.

这个定义似乎和上一周给出的不同,但是实际上他们是等价的。(Sipser的书中有精确的定义)。非正式的说,他们的等价性是因为\(w\)可以是NDT在每个分支节点做出的决定的序列,这样就从非确定的降级成确定的自动机了。(上面的那节也给出了精确的证明)。

因此为什么这个问题在密码学中那么有用呢?本质上,我们有一类这样的原因,如果你没有witness(凭据?密钥?)可以用指数时间来检查,但是如果你有这个witness那么你就可以用多项式时间来完成。这是很多密码学算法的feel。(23333)。如果你不知道key那么你就很难解密这个消息,如果你知道key那么你很快就能解密出消息。

一个警告:虽然密码学中使用NP问题看起来是个不错的做法。但是它可能不是那么简单。因为NP问题的语言是基于最坏时间的。然而密码学中的算法是基于平均时间的。例如,我们有一种NP语言,一个元素需要指数级的时间求解,其他元素都非常快。这不是好的加密方案。我们希望对所有的消息都是安全的。而不是仅仅一个。

现在我们知道整数因子分解不知道是不是NP完全的,也不知道是不是P类问题。但是它是一个例子。说明我想要说的关于仔细选择NP实例的问题。一般来说,找到一个数的因数很容易。其中一半能被2整除。但是如果我们选择一个特定的我们将会很难分解。让我们集中思路在形式\(N = p * q\)对\(p,q\)素数。现在如果这两个数字有一个很小,那么分解它也是容易的,我们希望这两个数字大小相同。由此我们可以根据这个构建加密方案(RSA)。

[1] Equivalence_of_definitions

第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题的更多相关文章

  1. 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么

    第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...

  2. 第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证

    第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证 这是密码学52件事系列中第16篇,这周我们描述关于DSA,Schnorr和RSA-FDH的密钥生成,签名和验证. 1. ...

  3. 第二十六个知识点:描述NAF标量乘法算法

    第二十六个知识点:描述NAF标量乘法算法 NAF标量乘法算法是标量乘法算法的一种增强,该算法使用了非邻接形式(Non-Adjacent Form)表达,减少了算法的期望运行时间.下面是具体细节: 让\ ...

  4. 第三十六个知识点:Index Calculus算法

    第三十六个知识点:Index Calculus算法 我们这篇博客继续描述一种数学攻击,这种数学攻击被叫做Index Calculus(IC)算法. 注意这里Index Calculus算法没有找到合适 ...

  5. python基础知识第六篇(知识点总结)

    ####################### 整理 ################# # 一.数字# int(..) # 二.字符串# replace(替换)/find/join/strip(移除 ...

  6. Cassandra学习六 一些知识点

    http://www.flyml.net/2016/09/08/cassandra-tutorial-java-api-example/ Cassandra对查询的支持很弱,只支持主键列及索引列的查询 ...

  7. SQL Server进阶(六)表表达式--派生表、公用表表达式(CTE)、视图和内联表值函数

    概述 表表达式是一种命名的查询表达式,代表一个有效地关系表.可以像其他表一样,在数据处理中使用表表达式. SQL Server支持四种类型的表表达式:派生表,公用表表达式,视图和内联表值函数. 为什么 ...

  8. Scipy的stats模块包含了多种概率分布的随机变量,随机变量分为连续和离散两种。+忽略程序中警告信息+np.newaxis解释

  9. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

随机推荐

  1. 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目

    前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...

  2. Java8 Lambda表达式、函数式接口和方法引用

    目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...

  3. Flink(八)【Flink的窗口机制】

    目录 Flink的窗口机制 1.窗口概述 2.窗口分类 基于时间的窗口 滚动窗口(Tumbling Windows) 滑动窗口(Sliding Windows) 会话窗口(Session Window ...

  4. 商业爬虫学习笔记day7-------解析方法之bs4

    一.Beautiful Soup 1.简介 Beautiful Soup 是python的一个库,最主要的功能是从网页抓取数据.其特点如下(这三个特点正是bs强大的原因,来自官方手册) a. Beau ...

  5. Java SSLSocket

    Java SSLSocket JSSE(Java Security Socket Extension)是Sun公司为了解决互联网信息安全传输提出的一个解决方案,它实现了SSL和TSL协议,包含了数据加 ...

  6. Oracle中常用的系统函数

    本文主要来梳理下Oracle中的常用的系统函数,掌握这些函数的使用,对于我们编写SQL语句或PL/SQL代码时很有帮助,所以这也是必须掌握的知识点. 本文主要包括以下函数介绍:1.字符串函数2. 数值 ...

  7. VIM中把^M替换为真正的换行符

    :%s/\r/\r/g 或者:%s/^M/\r/g 红色的^M不是直接打出,而是按住ctrl再依次按下V和M

  8. Nodejs源码解析之module

    modulejs的导入 Require函数详解 module路径解析 module.js的导入 module.js是由node.js在Nodejs程序启动的时候导入的.module.js中使用的req ...

  9. 注册页面的servlet

    package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.ResultInfo;import cn.itcast.trav ...

  10. 【Linux】【专项突破】Linux重定向与管道

    [专项突破]Linux重定向与管道 This article is written by Xrilang(Chinese Name:萌狼蓝天) If you want find me ,You can ...