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

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

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

  • NP 是一类能在多项式时间内验证的语言

首先我们有一个元素x,我们想要知道是否x∈L(L是NP语言)。我们有一个证明P对x输出一个证据w,这可能需要要给多项式时间在给定x寻找w。然后如果我们给出x和w到我们的验证器V,V能够在多项式时间内输出是否x∈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类问题。但是它是一个例子。见Ryan的博客说明我想要说的关于仔细选择NP实例的问题。一般来说,找到一个数的因数很容易。其中一半能被2整除。但是如果我们选择一个特定的我们将会很难分解。让我们集中思路在形式N=p∗q对p,q素数。现在如果这两个数字有一个很小,那么分解它也是容易的,我们希望这两个数字大小接近。由此我们可以根据这个构建加密方案(RSA)。

[1] Equivalence_of_definitions

原文链接:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6-how-can-we-interpret.html
转载链接:https://www.cnblogs.com/zhuowangy2k/p/11518770.html

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第6篇]我们怎么把NP问题解释成一组可以在多项式内证明的命题相关推荐

  1. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第14篇]什么是基于线性对的密码学

    这是最新的一期密码学52件事.我们基于前几周介绍一种"对"的概念. 对的定义 给定三个循环群G1,G2,G3,它们的基为q,生成器分别为g1,g2,g3.我们说一个函数e:G1×G ...

  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第51篇]什么是基于ID的加密的安全模型,描述一个IBE方案

    在公钥密码学中,如果Alice想要给Bob发送一条消息,她需要Bob的公钥,一般来说公钥都很长,就像一个随机的字符串. 假设Alice可以不用公钥而是使用Bob的名字或者邮件地址作为他的公钥.实际的来 ...

  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第34篇]描述攻击离散对数问题的baby-step/Giant-step方法

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. Baby-step/Giant ...

  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第39篇]侧信道攻击和故障攻击有什么区别

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 侧信道攻击(Side-chan ...

  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第32篇]基于博弈的证明和基于模拟的证明

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 在基于博弈的安全定义中,安全是 ...

  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第31篇]Game Hopping证明

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 关于安全证明, 目前主流的方法 ...

  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第30篇]大致简述密钥协商中的BR安全定义

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 在两方之间建密钥共享是一件密码 ...

  8. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第25篇]使用特殊的素数定义GF(p)和GF(2^n)的方法

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 当实现密码学方案时,一个最频繁 ...

  9. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第22篇]如何用蒙哥马利算法表示一个数字和多个相乘的数字

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 安全和效率 密码学的目标是设计 ...

  10. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第16篇]描述DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。

    这是一系列博客文章中最新的一篇,文章的主题是"做密码学每个博士生都应该知道的52件事".这一系列问题是为了让博士生们在第一年结束时了解他们应该知道的事情.本周我们将介绍DSA.Sc ...

最新文章

  1. MySQL5.5复制新特性
  2. 上海人工智能再出重磅!寒武纪科技发布新一代云端AI芯片,联想、曙光、科大讯飞发布相关应用...
  3. TabelView嵌套CollectionView高度适应
  4. harmonyos2.0三大技术特点,一文解析HarmonyOS的技术特性、子系统架构、四大技术特性...
  5. oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)
  6. a表剔除b表 oracle,删除a表中和b表相同的数据
  7. sublime的一些快捷键
  8. plantuml 方法图_UML与软件建模:第四次作业(学习PlantUML活动图绘制方法)
  9. 东部985硕士毕业,北方二线省会军工所,还是上海互联网大厂?
  10. luogu P1216 [IOI1994][USACO1.5]数字三角形 Number Triangles (递推)
  11. Oracle刷建表语句
  12. OpenGL快速入门
  13. 史上最详细的F450四轴装机实例(无名官方推荐的)
  14. freemarker面试_SpringBoot基础面试题
  15. SpringBoot上传xlsx并批量导入
  16. arm开发板上电设置静态ip_Tiny4412友善之臂ARM开发板静态IP设置(重启有效)
  17. 很雷很有财也很搞笑的笔试答题
  18. 白苹果了怎么办_苹果7无限黑屏白苹果,苹果7开不了机怎么办
  19. 虚拟机将ip地址修改成静态的
  20. open output file xxx exe Permission denied

热门文章

  1. CentOS7.0安装Nginx 1.7.4
  2. 轻快的VIM(三):删除
  3. SpringMVC+MyBatis 返回时间格式转换的解决方案
  4. 内部类访问局部变量的时候,为什么变量必须加上final修饰
  5. Spring学习9-MyEclipse中Spring工程使用@Resource注释的问题
  6. 如何使用一个库中不存在的函数
  7. 技巧:在 C/C++中如何构造通用的对象链表
  8. 索引原理及项目中如何使用索引实例分析
  9. android Module之间数据传递
  10. arm linux 开机电路_ARM Linux启动过程分析