以下内容翻译自:维基

介绍

在计算复杂性理论中,计算困难假设是一个特定问题无法得到有效解决的假设(有效通常指“在多项式时间内”)。目前还不知道如何证明其困难性。同时,我们可以将一个困难问题规约到(reductions)一个比较容易理解的问题上。

多项式时间

常见的时间复杂度从小到大:

\[O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!)
\]

只要算法的复杂度不会是最后两个指数或者阶乘型,前面的\(O(1)\)到\(O(n^m)\)(\(m\)为常数)任意组合都算是多项式级的复杂度,它们的规模\(n\)都出现在底数位置;而\(O(2^n),O(n!)\)型 复杂度,就是非多项式级的,问题规模较大时,计算机也很难算出结果。所以我们一般会选择多项式级复杂度的算法。

在密码学中,计算困难假设是非常重要的。可以这么说,"只要给出一个困难问题,就能构造一个公钥加密方案"。通常一个加密方案,需要具有信息论上的安全(information theoretic security),也就是满足一次一密(one-time pad),然而信息论上的安全一般是难以实现的。在这种情况下,我们一般会回到计算安全上(computational security),粗略的说,就是假设敌手的计算都是有限的,那么系统就是安全的。

常见困难问题

整数难分解问题(Integer factorization)

简单来说,就是对于一个复合数\(n\),是两个大素数的乘积,即\(n=p*q\)。给定\(n\),难以在多项式时间内求出其素因子\(p\)和\(q\)。更一般来说,是给出\(n=\prod_{i}p_i\),难以找到这些素数\(p_1,...,p_k\)。

RSA问题

给出复合数\(n\),\(e,c=m^e(mod n)\),难以找到\(m\)。所以在RSA密码中,\((n,e)\)作为公钥,\(m\)作为私钥。

更详细的RSA参考:RSA

剩余问题(Residuosity problems)

给出符合数\(n\),\(y,d\),找到\(x\)是困难的,对于\(x^d=y(mod n)\)。

特殊情况:二次剩余问题(Quadratic residuosity problem)、决策复合剩余问题(Decisional composite residuosity problem)

下面给出基于剩余问题的密码方案:

  • Goldwasser–Micali cryptosystem (quadratic redisduosity problem)
  • Blum Blum Shub generator (quadratic redisduosity problem)
  • Paillier cryptosystem (decisional composite residuosity problem)

    更多Paillier请参考:Paillier
  • Benaloh cryptosystem (higher residuosity problem)
  • Naccache–Stern cryptosystem (higher residuosity problem)

隐藏假设(Phi-hiding assumption)

对于复合数\(m\),难以计算出\(\phi(m)\),即欧拉函数。

离散对数问题(Discrete log problem (DLP))

给出乘法群\(G\)中的两个元素\(a,b\),难以找到一个整数\(k\),使其满足\(a=b^k\)。

离散对数问题和整数分解问题不同,但是其计算复杂度接近。

大多数的密码协议都基于更具体的DH假设。

DH假设(Diffie–Hellman assumption)

给出群中元素\(g,g^a,g^b\),其中\(g\)是群\(G\)的生成元,\(a,b\)是随机整数,难以找到\(g^{a,b}\)。

例如:

在原始的DH密钥交换协议(Diffie–Hellman key exchange)中使用。详细见:DH-密钥交换协议

ElGamal算法基于的是Decisional Diffie–Hellman (DDH)问题的变体。了解更多ElGamal参考:ElGamal

多线性映射(Multilinear maps)

对于一个多线性映射函数\(e:G_1,...G_n\to G_T\),其中\(G_1,..,G_n,G_T\)都是群,例如有任意的\(g_1,...,g_n\in G_1,...,G_n\)和\(a_1,...,a_n\),则有\(e(g_1^{a_1},...,g_n^{a_n})=e(g_1,...,g_n)^{a_1...a_n}\)。

在设计密码方案时,我们需要构造一个群\(G_1,...G_n,G_T\)和一个映射函数\(e\),使得在群上可以方便计算,而在\(G_1,...G_n\)上的离散对数是困难的。

当\(n=2\)时,就是双线性映射(bilinear maps),使用Weil pairingTate pairing构造的。

下面给出基于多线性映射的例子:

  • Boneh-Franklin scheme (blinear Diffie-Hellman)
  • Boneh–Lynn–Shacham (blinear Diffie-Hellman)

格上问题(Lattice problems)

更多请参考:格基础

对于量子计算机来说,可以破解整数分解问题和离散对数问题,但对格上的问题是安全的,所以使得一些基于格上的密码成为后量子力密码。

下面给出一些基于格上的密码方案:

  • NTRU (加密和签名)
  • 全同态加密,fully homomorphic encryption

最短向量问题,Shortest vector problem (SVP))

一些变体:

  • Shortest independent vectors problem (SIVP)
  • GapSVP
  • Unique-SVP

最近向量问题 ,Closest vector problem (CVP)

LWE问题,Learning with errors

LWE问题可以规约到GapSVP问题。

计算困难假设(Computational hardness assumption)的更多相关文章

  1. 计算思维(Computational Thinking)在少儿编程中的体现

    本文主要针对少儿编程从业人员及正在学习编程的学生家长 大家好,我是C大叔,国内早期的少儿编程从业人员.一直以来都是在做scratch,JavaScript,python以及信息学奥赛C++的讲师,教研 ...

  2. 计算广告(computational advertising)

    计算广告学是一门由信息科学.统计学.计算机科学以及微观经济学等学科交叉融合的新兴分支学科. 1. 课程与资源 Andrei Broder:美国工程院院士,计算广告概念的提出者: MS&E 23 ...

  3. DH问题汇总

    本节内容主要转载于:弄清楚DL,D-H,CDH problem,CDH assumption,DDH,BDDH,BCDH. DLP(Discrete Logarithm Problem) 在乘法群\( ...

  4. CFD计算

    47 求解器为flunet5/6在设置边界条件时,specify boundary types下的types中有三项关于interior,interface,internal设置,在什么情况下设置相应 ...

  5. 漫谈计算摄像学 (一):直观理解光场(Light Field)

    什么是计算摄像学 计算摄像学(Computational Photography)是近年来越来越受到注意的一个新的领域,在学术界早已火热.本来计算摄像学的业界应用在群众中一直没什么知名度,直到Lytr ...

  6. 在有限 computational budget 下,借助 low-fidelity 模型提高精度

    论文名称:context-aware learning of hierarchies of low-fidelity models for multi-fidelity uncertainty qua ...

  7. GPU计算的十大质疑—GPU计算再思考

    http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...

  8. Computational biological hypothesis generation using "-omics" data

    Computational biological hypothesis generation using "-omics" data Forming biological hypo ...

  9. 《Kafka Stream》调研:一种轻量级流计算模式

    原文链接:https://yq.aliyun.com/articles/58382 摘要: 流计算,已经有Storm.Spark,Samza,包括最近新起的Flink,Kafka为什么再自己做一套流计 ...

  10. aix 计算性内存和文件内存

    经过有客户问AIX   topas中内存(memory)一项显示的数值含义: MEMORY Real,MB    4096 % Comp     68.9 % Noncomp  22.6 % Clie ...

随机推荐

  1. JDBC中数据库的连接与查询

    让我们仔细看看是怎么访问数据库的 package sql; import java.sql.Connection; import java.sql.DriverManager; import java ...

  2. 2024-2025, 四大翻译工具加AI翻译的深度对比

    前言 在过去两年中,人工智能技术的迅猛发展对翻译工具产生了深远的影响. 本期特意挑选了四款翻译工具以及一个AI翻译工具, 对其性能进行评测,看看在AI技术的加持下,它们的质量提升如何. 以下是参赛选手 ...

  3. Vue 实现图片下拉选择控件

    element-ui 的组件库中没有图片下拉选择组件,基于 el-select 组件做的改动并不能完全满足需求,因此决定重写一个. 从头到尾做下来收获很多,我决定把实现过程中遇到的问题记录一下. 效果 ...

  4. php xattr操作文件扩展属性后续

    由于之前看了xattr的写入效率,这里简单的实现一下生产者消费者模型的高速写入. 生产者(让他创建40万条数据) <?php // 生产者 不断的生产大量数据 但是总会有停止的时候(本业务功能结 ...

  5. 符合ASTM标准的雨流计数法及其不同的改进方法

    随着研究的深入,人们发现采用时间序列计算载荷谱太麻烦了,处理的工作量太大,我们不需要将每个时刻点的载荷都做运算,疲劳计算只需要提供幅值.均值和循环次数,鉴于此发展出了很多不同的计数方法,雨流法是最常见 ...

  6. 面试官:来谈谈Vue3的provide和inject实现多级传递的原理

    前言 没有看过provide和inject函数源码的小伙伴可能觉得他们实现数据多级传递非常神秘,其实他的源码非常简单,这篇文章欧阳来讲讲provide和inject函数是如何实现数据多级传递的.ps: ...

  7. PTA-1002

    原先主要错误: 没有考虑到有关0的相关情况 观看的大佬代码 整理思路 无非就是在相同的指数的情况下,系数相加 因为最后是要从大到小输出来. 注意 要对最后的结果进行四舍五入: PTA的英语题对英语不好 ...

  8. Ant Design Pro项目Popover位置微调

    前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...

  9. Java模拟Oracle函数MONTHS_BETWEEN注意事项

    Java模拟Oracle函数MONTHS_BETWEEN注意事项 MONTHS_BETWEEN(DATE1, DATE2) 用来计算两个日期的月份差. 最近接到一个迁移需求,把Oracle SQL接口 ...

  10. openEuler-怎么看服务器操作系统是不是欧拉系统?

    ​[root@localhost ~]# cat /etc/os-release NAME="openEuler" VERSION="22.03 (LTS-SP2)&qu ...