量子算法3 RSA & Shor Part I

  • 1 数论简单基础
    • 1.1 质数分解
    • 1.2 Multiplicative group mod p
    • 1.3 费马小定理
      • Euler's Identity
    • 1.4 一些经典数论算法
      • Primality,质数判断
      • Euclid's GCD algorithm,最大公约数算法
      • Repeated squaring,高效指数运算
  • 2 RSA加密算法
  • 3 Shor算法概要
    • 3.1 History
    • 3.2 Procedures
    • 3.3 Notes

终于来到了激动人心的Shor’s质数分解算法的环节,这可以说是有史以来最伟大的算法之一了。应该需要几次推送才能看完,其重大意义在于,假如量子计算机可用的情况下,其可以破解当前最流行的RSA加密算法。今天先看看相关数论基础,RSA简介,及Shor’s质数分解简介。

1 数论简单基础

1.1 质数分解

  • 定理:每个正整数都有唯一的质数分解, N = p 1 e 1 … p k e k N=p_1^{e_1}\dots p_k^{e_k} N=p1e1​​…pkek​​(Euclid, 300BC)
    我们关注一个特殊情况,即 N = p q N=pq N=pq, 其中 p ≠ q p\ne q p=q是很大的质数,另外 n = ⌈ log ⁡ 2 N ⌉ n=\lceil \log_2N \rceil n=⌈log2​N⌉是表达 N N N所需的比特数,我们用 n n n来讨论复杂度。

注意,质数有无限多个,且在 N N N以内的质数数目大概是 N ln ⁡ N \frac{N}{\ln N} lnNN​个,虽然可以看出数越大出现质数的概率越低,因为其比线性慢点,但是也没慢多少,当数目较大时,大概可以认为1000个里面出一个质数。

如果采用遍历和试错方法,需要花费 ∼ N = ∼ 2 n / 2 \sim\sqrt{N}=\sim2^{n/2} ∼N ​=∼2n/2,即指数时间,取根号是因为,如果可以分解为两质数之积,那肯定有个是小于 N \sqrt{N} N ​的。

目前已知的最快的质数分解算法NFS(Number Field Sieve),使用high-powerd elliptic curve理论,也需要 ∼ exp ⁡ ( n 1 / 3 ) \sim \exp(n^{1/3}) ∼exp(n1/3)时间,这个算法在NSA美国安全局肯定得到了使用。因此,目前,至少没有公开的多项式时间算法来做质数分解

但是,通常认为质数分解问题不是NP完全问题,但是其困难性也是进行RSA公钥加密的基础

1.2 Multiplicative group mod p

Multiplicative group mod p,记为 Z p × = { i ∣ 0 < i < N , gcd ( i , p ) = 1 } \mathbb{Z}^{\times}_p=\{i|0<i<N, \text{gcd}(i,p)=1\} Zp×​={i∣0<i<N,gcd(i,p)=1},即小于p,且跟p互质的数的集合;或者由 1 , … , p {1,\dots,p} 1,…,p在乘法 × \times ×和取余mod p的操作下产生的集合,如下图 Z 5 × \mathbb{Z}^{\times}_5 Z5×​的每个元素,都是自己和自己相乘然后对5取余数,如 4 × 4 mod  5 = 1 4\times 4 \text{ mod } 5=1 4×4 mod 5=1。
定义 ∣ Z p × ∣ = ϕ ( N ) |\mathbb{Z}^{\times}_p|=\phi(N) ∣Zp×​∣=ϕ(N)为"Euler totient function"即欧拉函数。

对于质数 p p p,其Multiplicative group mod p的元素个数 ϕ ( N ) = p − 1 \phi(N)=p-1 ϕ(N)=p−1,对于合数 N = p q N=pq N=pq, ϕ ( N ) = ( p − 1 ) ( q − 1 ) \phi(N)=(p-1)(q-1) ϕ(N)=(p−1)(q−1)

1.3 费马小定理

对于任意质数 p p p,和整数 x x x,且 x x x不是 p p p的倍数,则 x p − 1 ≡ 1 (mod p) x^{p-1}\equiv 1 \text{ (mod p)} xp−1≡1 (mod p)费马小定理从Multiplicative group mod p的角度去理解,即认为对于 p − 1 p-1 p−1的集合,我从里面取任意一个数,将指数变成 p − 1 p-1 p−1,就变成了1,这个可以用该集合的相关理论去证明。

Euler’s Identity

这个相当于费马小定理的一个拓展,对于整数 N N N及和其互质的 x x x x ϕ ( N ) ≡ 1 mod N  x^{\phi(N)}\equiv 1 \text{ mod N } xϕ(N)≡1 mod N

如果 N = p q N=pq N=pq,则 ϕ ( N ) = p q − p − q − 1 \phi(N)=pq-p-q-1 ϕ(N)=pq−p−q−1,则知道 ϕ ( N ) \phi(N) ϕ(N)就能有效率的分解 N N N,即 ϕ ( N ) \phi(N) ϕ(N)包括了对 N N N做质数分解的秘密。

1.4 一些经典数论算法

Primality,质数判断

  • 虽然质数分解是指数复杂度很难,但是判断一个数是不是质数就没这么难了,可以在多项式时间内完成。但是其只能判断是否为质数,对于合数也不会给出其分解的信息。
  • 在RSA的密钥生成时是需要这么判断的。
  • 从1970s就有了多项式复杂度的随机算法,2002年AKS也提出了确定行的多项式复杂度的确定性算法(人家还是个本科生,想想觉得自己是废物)
  • 大概思路是进行费马测试,选一个相对于 N N N互质的 x x x,看看 x N − 1 ≡ 1 mod p  x^{N-1}\equiv1 \text{ mod p } xN−1≡1 mod p 是否成立,不成立就说不是质数;当然不成立不能作为充分条件,比如 561 = 3 × 11 × 17 561=3\times 11 \times 17 561=3×11×17就能通过这个测试,但是经过另外一些神奇的已经证明的操作,也是可以证明其可以发展成一个多项式算法来判断是否为质数。

Euclid’s GCD algorithm,最大公约数算法

最大公约数算法我们应该都了解过,就是 gcd(a,b)=gcd(a,b mod a) \text{gcd(a,b)=gcd(a,b mod a)} gcd(a,b)=gcd(a,b mod a),这样可以将数字指数性的减小,因此在 min ⁡ { log ⁡ a , log ⁡ b } \min\{\log a,\log b\} min{loga,logb}迭代次数内就能完成,也是多项式时间。

Repeated squaring,高效指数运算

我们发现需要经常计算 x y mod N x^y \text{mod N} xymod N这种操作,如果 y y y是很大的数如 exp ⁡ ( n ) \exp(n) exp(n)就很难算了。更好的方法是,将 y y y分解为2的指数的和,这个就是计算机里面的表达方式,还是很好分解的,通过不断的平方操作来计算,如图所示:

可以看出,也是在指数的速度就把这个指数操作算完了,所以其复杂度也是对 log ⁡ N = n \log N=n logN=n呈多项式复杂度的。

2 RSA加密算法

  • 基本场景:张三想给在淘宝上买东西,因此要把自己的账户密码啥的信息发给淘宝;
  • 准备工作:假设淘宝用的是RSA加密算算法,那淘宝会先生成一些大的随机的质数,因为大质数大概1000个里头出一个,且判断是否质数也是多项式时间,所以这个过程可以有效率的完成。假设生成的质数 p ≡ 2 mod 3 p\equiv2 \text{ mod 3} p≡2 mod 3,即 p − 1 p-1 p−1, q − 1 q-1 q−1不是3的倍数,这些质数也很多,因为mod 3也就1和2两种情况。
  • 淘宝发给张三一个数 N = p q N=pq N=pq,这个是公开发布的,黑客也可以监听到,这个数就叫做公钥。
  • 张三用 N N N来加密自己的信息 x x x,当然会往 x x x里面放入一些随机的信息,以免有重复的序列被破解。加密后得到 y = x 3 mod N y=x^3 \text{ mod N} y=x3 mod N,然后发送 y y y到淘宝,黑客可以监听到 y y y,也知道 N N N,但是计算离散的立方根是个很难的问题,所以黑客无法有效率的破解到 x x x。当然3也可以换成别的,但是3是第一个发现可以的指数。
  • 淘宝得到了 y y y,淘宝就可以很有效率的破解到 x x x,因为淘宝知道 N = p q N=pq N=pq,那淘宝怎么破解呢?淘宝首先取 k = 2 ϕ ( N ) + 1 3 k=\frac{2\phi(N)+1}{3} k=32ϕ(N)+1​,这是个整数,因为 ϕ ( N ) = ( p − 1 ) ( q − 1 ) ≡ 2 mod 3 \phi(N)=(p-1)(q-1)\equiv2 \text{ mod 3} ϕ(N)=(p−1)(q−1)≡2 mod 3;然后淘宝计算 y k mod  N = x 3 k mod  N = x 2 ϕ ( N ) + 1 mod  N = x y^k\text{ mod }N=x^{3k}\text{ mod }N=x^{2\phi(N)+1}\text{ mod }N=x yk mod N=x3k mod N=x2ϕ(N)+1 mod N=x,这一步由前面的Euler’s identity公式可得

    注意
  • 破解RSA是否一定要分解质数,这还是个待解答的问题,但是能分解质数肯定就能破解是毋庸置疑的

3 Shor算法概要

3.1 History

Shor’s algorithm,这个其实和前面的Simon有点关系,这个故事和投稿被拒有关系(相信广大硕博士生们深有同感),Simon想了个新算法想投个会议,结果被拒了,因为人家觉得量子计算机还没谱你搞这些算法,用查询复杂度搞这些东西没啥用(这种否定最痛苦了!)。

但是,有个会议委员叫Peter Shor还挺喜欢这个文章的,于是Shor好心的建议Simon让他把论文改改,改成一个能解决Period finding(周期寻找)的算法;然后,Shor又发现,非常的“Obviously”,这个周期寻找算法可以解决质数分解问题,所以第二年Shor就发明了Shor算法,当然,Shor认为的显然,估计跟北大韦神认为的很简单差不多。。。

3.2 Procedures

  1. 第一步,把质数分解问题,转化为周期寻找问题,这一步Shor认为是显然的,当然我们不会这么认为。。。
  2. 第二步,通过量子傅里叶变换QFT,以 O ( 1 ) O(1) O(1)查询复杂度解决周期寻找问题
  3. 第三步,建立QFT的量子电路,用 n O ( 1 ) = log ⁡ n O ( 1 ) n^{O(1)}=\log n^{O(1)} nO(1)=lognO(1)个量子门
  4. 第四步,把冰箱门关上,用Continued Fraction Algorithm把QFT的输出变成质数分解的结果,然后大象就装冰箱里了

3.3 Notes

  • Shor算法并没有证明一定实现superpolynomial加速,因为质数分解的复杂度也没得到证明
  • Shor算法可以证明实现了周期寻找的superpolynomial加速,而周期寻找问题相当于解决质数分解的一个黑箱,但不一定是唯一黑箱

量子计算 18 量子算法3 (RSA Shor)相关推荐

  1. 量子计算 19 量子算法4 (Shor Part I)

    量子计算 19 量子算法4 Shor Part I 1 从质数分解到周期寻找 定义modular exponential function即模幂函数: f ( r ) = x r mod  N f(r ...

  2. 量子计算 21 量子算法 6 (Shor Part III: QFT+PF)

    量子计算 21 量子算法 6 Shor Part III: QFT+PF 1 周期寻找量子态 2 QFT矩阵 3 QFT解决周期寻找问题 假如Q是s的整数倍 假如Q不是s的整数倍 上回书介绍了QFT的 ...

  3. 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

    原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...

  4. 量子计算与量子信息之Grover算法的量子电路实现

    量子计算与量子信息之Grover算法的量子电路实现 文章目录 量子计算与量子信息之Grover算法的量子电路实现 一.简介 二.电路的逻辑示意图 即使你并没有完全掌握量子计算的基本内容,仍然可以看懂这 ...

  5. 量子计算与量子软件(一)

    量子计算与量子软件 摩尔定律 量子计算的起源 量子计算的公理 Qubit 最小的酉变化--量子门 量子测量 量子缠绕 不可克隆理论 量子算法 量子的线性性 量子计算的成就 本文的内容来自清华大学魏教授 ...

  6. 量子计算与量子信息读书笔记——第1章简介与概述(上)

    简介与概述 研究对象:使用量子力学系统能够完成的信息处理任务 基本概念涉及领域:量子力学.计算机科学.信息论和密码体系 历史背景 物理学 危机:经典物理学做出荒谬的预言 解决:量子力学理论创立 量子力 ...

  7. 学习实践量子计算与量子

    本文转自 Learn Quantum Computing with the Quantum Katas - Q# Blog 本文章为机器翻译. 该文章的最新版本已迁移至个人博客[比特飞],单击链接 h ...

  8. 量子计算与量子信息_量子计算会破坏安全性吗?

    量子计算与量子信息 在过去的几年中,一种新型的计算机问世了:量子计算机. 可以说这是第六种计算机: 人类:在出现人造计算机之前,人们经常使用. 从事这项工作的人被称为"计算机". ...

  9. 研究量子计算机学什么,量子计算,量子信息技术,要学什么专业?

    量子计算,量子信息技术,要学量子计算机专业. 量子计算机(quantum computer)是一类遵循量子力学规律进行高速数学和逻辑运算.存储及处理量子信息的物理装置.当某个装置处理和计算的是量子信息 ...

最新文章

  1. C++职工信息管理系统
  2. pytorch dataset dataloader_PyTorch(五)——数据的加载和预处理
  3. 基于 Angular 的企业级 Web 应用服务器端渲染的推荐建构
  4. Linux 基本操作--文件查看 (day3)
  5. ubuntu16.04安装docker(阿里云镜像)
  6. 云计算发展备受瞩目的五大方向
  7. html5总结2000字,建筑识图实训总结2000字6篇范文
  8. TextCNN pytorch实现
  9. pdf2Image Pdf文件存为jpg NodeJs实现
  10. c语言输出行末无空格_三个简单的C语言程序
  11. 微服务拆分策略和原则
  12. 每周分享第 10 期
  13. vue中使用echarts实现中国地图加城市定位功能
  14. java游戏教程--音频添加
  15. Xmate pro3机械臂PC连接不上的问题
  16. 第一章SayHello程序
  17. 数学专业英语--函数部分
  18. python微信使用教程全图_微信跳一跳python怎么刷分_微信跳一跳python使用教程_飞翔教程...
  19. 一小时会议录音,30秒整理成文本,录音转文字这个方法很简单
  20. Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!

热门文章

  1. k8s集成kube-prometheus
  2. 维基解密:攻击 Mac/Linux 的CIA三款工具
  3. TMS和WMTS大概对比
  4. Linux安装Nginx以及配置前端项目
  5. 软件测试网上课程设计,软件测试 软件测试 《软件测试》课程设计.docx
  6. 矩阵特征值和特征向量求解——特征值分解
  7. VMware16安装MacOS【详细教程】
  8. 关于端口号Port与TCP/UDP协议
  9. C#笔记进阶篇03 抽象函数与抽象类
  10. unturned服务器重置,服务器配置文件Config.json说明