【问题标题】:Quantum Computing and Encryption Breaking量子计算和加密破解
【发布时间】:2011-02-15 15:55:24
【问题描述】:

不久前我读到,量子计算机可以在很短的时间内(我相信只有几分钟)破解当今使用的大多数类型的散列和加密。这怎么可能?我试过阅读有关它的文章,但我在a quantum bit can be 1, 0, or something else 上迷路了。有人可以解释这与在没有所有花哨数学的情况下用简单的英语破解此类算法有何关系吗?

【问题讨论】:

  • 离题?呵呵。你认为这属于哪里?量子溢出?
  • 你去!现在你已经观察到了——该网站已经消失了。
  • @Martin Beckett:哈哈。 :-D 实际上是我读过的第一个量子笑话。
  • @Paja:这真的是你的第一个量子笑话吗?试试这个:一个警察把海森堡拦下来,然后开始说:“你知道你开得有多快吗?”。海森堡回答说:“不,但我确切地知道我在哪里!”

标签: encryption cryptography quantum-computing


【解决方案1】:

序言:量子计算机是奇怪的野兽,我们还没有真正驯服到有用的地步。支撑它们的理论是抽象的和数学的,因此任何关于它们如何比经典计算机更高效的讨论都将不可避免地冗长而复杂。你至少需要对线性代数和量子力学有本科的理解才能理解细节,但我会尽量表达我有限的理解!


量子计算的基本前提是quantum superposition。这个想法是,一个量子系统(例如一个量子位,或qubit,一个普通位的量子模拟)可以,如你所说,不仅存在于01状态(称为系统的计算基础状态),但也可以是两者的任意组合(因此每个状态都有一个与之相关的振幅)。当系统被某人观察到时,量子比特的状态collapses变成了它的一种基本状态(你可能听说过与此相关的Schrödinger's cat思想实验)。

因此,n 量子位的 寄存器 具有自己的 2^n 基本状态(这些是您可以观察到的寄存器所处的状态;想象一个经典的 n 位整数)。由于寄存器可以同时存在于所有这些状态的叠加中,因此可以将计算应用于所有2^n 寄存器状态,而不仅仅是其中一个状态。这称为量子并行性

由于量子计算机的这一特性,它们看起来像是灵丹妙药,可以比经典计算机以指数速度更快地解决任何问题。但这并不是那么简单:问题在于,一旦你观察到你的计算结果,它就会崩溃(正如我上面提到的)只是其中一个计算的结果——你会失去所有其他的。

量子计算/算法领域就是试图通过操纵量子现象以比经典计算机更少的操作来提取信息来解决这个问题。事实证明,要设计出比任何可能的经典对应物都更快的“量子算法”是非常困难的。

你问的例子是量子密码分析。人们认为,量子计算机可能能够“破解”某些加密算法:特别是 RSA 算法,它依赖于找到非常大整数的质因数的难度。允许这样做的算法称为Shor's algorithm,它可以分解具有多项式时间复杂度的整数。相比之下,问题的best classical algorithm 具有(几乎)指数时间复杂度,因此该问题被认为是“intractable”。

如果您想对此有更深入的了解,请阅读几本关于线性代数和量子力学的书籍,然后再熟悉一下。如果您想澄清一下,我会看看我能做什么!


旁白:为了更好地理解量子叠加的概念,从概率的角度来思考。想象一下,你掷硬币,用手接住它,盖上盖子看不到它。 作为一个非常微弱的类比,硬币可以被认为是正面和反面“状态”的叠加:每个状态都有 0.5 的概率(当然,因为有两种状态,这些概率加起来为 1)。当你拿开手直接观察硬币时,它会塌陷为正面或反面状态,因此这种状态的概率变为 1,而另一个变为 0。我想这是一种思考方式,是一组在观察之前保持平衡的尺度,此时它会随着我们对系统的了解增加而向一侧倾斜,并且一个状态变为“真实”状态。

当然,我们并不认为硬币是一个量子系统:出于所有实际目的,硬币具有确定的状态,即使我们看不到它。然而,对于真正的量子系统(例如individual particle trapped in a box),我们不能这样想。在量子力学conventional interpretation下,粒子根本上没有确定的位置,而是同时存在于所有可能的位置。只有在观察时,它的位置才会在空间中受到限制(尽管程度有限;参见uncertainty principle),甚至这也是纯粹随机的,仅由概率决定。

顺便说一下,量子系统并不局限于只有两个可观察状态(那些被称为two-level systems)。有些有一个很大但有限的数,有些有一个可数的无限数(例如"particle in a box"harmonic oscillator),有些甚至有一个不可数的无限数(例如free particle 的位置,它是' t 受限于空间中的单个点)。

【讨论】:

  • +1 不错,虽然 薛定谔的猫 实际上是一个思想实验,旨在展示对量子力学的解释是多么荒谬粒子在被观察到之前是没有状态的(“哥本哈根解释”)......
  • @BlueRaja:你是对的。不过,这仍然是叠加的结果,这就是我想说的:)
  • @Earlz:我认为理论物理学博士学位可能更有用:)
  • @BlueRaja:同样,没错,但哥本哈根的解释是对 QM 的普遍理解,也是最容易解释的!
  • @Will:据我了解,除了柏拉图式的意义(这只是任性的废话),你不能真正将测量与知识分离。请注意,我在哲学上倾向于接受薛定谔的思想实验是合理的,并且当进行观察时,从我的的角度来看,你只是与那一点量子纠缠在一起状态。 (净效应是相同的。)退相干只是量子态在太多粒子上的扩散,以至于无法弄清楚它是什么(特别是考虑到那里也有许多其他现有状态)。
【解决方案2】:

目前这是高度理论化的。 Quantum Bits 可能会提供破解加密的能力,但显然还没有达到这一点。

在量子层面,支配行为的规律与宏观层面不同。

要回答您的问题,您首先需要了解加密的工作原理。

在基本层面上,加密是两个极大素数相乘的结果。这个超大的结果可以被 1、它本身和这两个素数整除。

破解加密的一种方法是通过素数分解来暴力猜测两个素数。

这种攻击速度很慢,并且会通过选择越来越大的素数来阻止。您听说过 40 位、56 位、128 位以及现在 256,512 位及以上的密钥大小。这些大小对应于数字的大小。

蛮力算法(简而言之)可能看起来像

for(int i = 3; i < int64.max; i++)
{
  if( key / i is integral)
  {
    //we have a prime factor
  }
}

所以你想暴力尝试素数;好吧,这将需要一段时间才能使用一台计算机。因此,您可以尝试将一堆计算机组合在一起进行分而治之。这可行,但对于非常大的键大小仍然很慢。

量子位如何解决这个问题,即它们同时为 0 和 1。所以说你有 3 个量子比特(你可不是小事)。

使用 3 个 qbits,您的程序可以同时具有 0-7 的值

(000,001,010,011 等)

,其中同时包含素数 3,5,7。

所以使用上面的简单算法,而不是每次将i加1,你可以只除一次,然后检查

0,1,2,3,4,5,6,7

同时进行。

当然,量子比特还没有到那个地步;该领域还有很多工作要做;但这应该让您了解如果我们可以使用量子编程,我们将如何破解加密。

【讨论】:

  • 这个答案的许多部分都具有误导性。并非所有加密都取决于分解两个素数的乘积。 RSA 依赖于因式分解,但其他算法(例如 AES)不依赖于此。 RSA 密钥不是 40、64 或 128 位。这些天,它们从 1024 开始。您不会通过蛮力搜索来考虑。迄今为止最好的技术是“General Number Field Sieve”。它比暴力破解要快得多(因此 1024 位 RSA 提供与 80 位对称加密相同的安全性)。对 RSA 的量子攻击使用快速傅里叶变换,而不是蛮力。绝不会同时检查 0,1,2,3,4,5,6,7。
  • 最初的问题是“有人可以解释这与在没有所有花哨的数学的情况下用简单的英语破解此类算法有何关系吗?”所以向那些不太了解 GNFS 和 FFT 的“叠加”的人解释一下使用简化的术语。蛮力是描述攻击的最简单方法;没有我在哪里说过这是选择的攻击。你是对的,并不是所有的加密类型都基于素数分解;但就本次讨论(即量子计算如何破解加密)而言,这些类型的加密才是最重要的。
  • @WilliamWhyte:傅里叶变换如何用于加密目的?注意:我了解连续傅里叶变换,但不太了解 DFT。
  • 傅里叶变换在此设置中不用于加密目的;它用于破坏 RSA。 scottaaronson.com/blog/?p=208 有很好的解释。可能有一些关于它如何用于加密的例子——例如,在我贡献的签名算法 PASS 中,公钥可以被认为是私钥傅里叶变换的一部分——但我在上面的参考是在 Shor 算法中的使用,该算法用于密码分析而不是直接用于加密。
【解决方案3】:

Wikipedia article 很好地解释了这一点。

简而言之,如果你有 N 个比特,你的量子计算机可以同时处于 2^N 个状态。在概念上类似于使用传统位进行 2^N CPU 的处理(尽管不完全相同)。

【讨论】:

  • 我同意这个总结,但请注意这是一种简化。从这张简单的图片中,人们很容易得出这样的想法:量子计算机可以解决大多数指数级扩展的计算机问题,例如优化问题。 他们不能。更多细节可以使用量子计算机解决什么问题,什么不能解决,请参阅:medium.com/twodigits/…
【解决方案4】:

量子计算机可以实现Shor's algorithm,它可以快速执行素数分解。加密系统是建立在这样的假设之上的:在经典计算机上,大素数不能在合理的时间内被分解。

【讨论】:

  • 这是一个非常适合量子计算的算法示例,尽管还有很多其他示例。
  • 一些加密系统基于该假设,通常用于公钥系统。
【解决方案5】:

几乎我们所有的公钥加密(例如 RSA)都完全基于数学,取决于factorizationdiscrete-logarithms 的难度。使用quantum computers 可以有效地解决这两个问题(尽管即使获得了计算机科学和数学学士学位,并且上过几门量子力学课程,我仍然不了解算法)。

但是,散列算法(例如 SHA2)和对称密钥加密(例如 AES),主要基于 diffusion and confusion仍然是安全的。

【讨论】:

  • 如果量子计算机得到发展,对称密码的有效密钥长度将减半。因此,256 位 AES 密钥将提供与当今 128 位 AES 密钥相同的安全性。它仍然是安全的,但必须更改仅使用 128 位 AES 的系统。
  • @William:有趣,我不知道。对于那些感兴趣的人,可以找到有关该算法的信息here
【解决方案6】:

在最基本的术语中,普通的非量子计算机通过使用布尔逻辑对位(开或关的状态)进行操作来工作。您可以非常快速地处理大量比特,并且可以解决一类可计算问题中的任何问题。

然而,它们是“速度限制”,即所谓的计算复杂度。通俗地说,这意味着对于给定的算法,您知道运行算法所需的时间(以及运行算法所需的内存空间)已经一个最小界限。例如,O(n^2) 的算法意味着对于 n 的数据大小,它将需要 n^2 时间来运行。

但是,当您对可能具有“中间”值的 qbits 进行操作时,当我们有 qbits(量子位)时,这种类型就消失了。具有非常高计算复杂度的算法(例如分解大量数字,破解许多加密算法的关键)可以以低得多的计算复杂度完成。这就是量子计算能够比普通计算机更快地破解加密流数量级的原因。

【讨论】:

    【解决方案7】:

    首先,量子计算还刚刚走出理论阶段。正在进行大量的研究和一些实验性的量子电池和电路,但“量子计算机”还不存在。

    其次,阅读维基百科文章:http://en.wikipedia.org/wiki/Quantum_computer

    特别是,“通常,具有 n 个量子位的量子计算机可以同时处于多达 2^n 个不同状态的任意叠加(这与只能处于这 2^n 个状态之一的普通计算机相比)任何一次)。”

    使密码学安全的原因是使用了非常长的数字加密密钥,需要非常非常长的时间才能将其分解成素数,并且密钥足够长,可以蛮力尝试尝试所有可能的方法关键值也需要很长时间才能完成。

    由于量子计算(理论上)可以在少量量子比特单元中表示许多状态,并同时对所有这些状态进行操作,因此似乎有可能使用量子计算来执行蛮力 try-all -在很短的时间内可能的键值。

    如果这样的事情是可能的,它可能是我们所知道的密码学的终结。

    【讨论】:

    【解决方案8】:

    量子计算机等都是谎言。我不相信这些科幻杂志。 事实上 rsa 系统是基于两个素数和它们的乘法。 p1,p2 是巨大的素数 p1xp2=N 模数。 rsa系统是 像那样 选择一个素数..也许它的 E 公钥很小 (p1-1)*(p2-1)=R 找到使 E*D=1 mod(R) 的 D 数 我们正在公开共享(E,N)数据作为公钥 我们将 (D,N) 安全地保存为私有。

    要解决这个 Rsa 系统破解者需要找到 N 的素数。 *宇宙的质量接近 10^53 kg* 电子质量为 9.10938291 × 10^-31 千克 如果我们将宇宙划分为电子,我们可以创造 10^84 个电子。 电子的速度比光慢。它的移动频率可以是10^26 如果有人从所有宇宙质量中产生电子大小的平行 rsa 素因子发现器。 所有宇宙都可以处理 (10^84)*(10^26)= 10^110 个数字/每秒。

    rsa 有无限位的替代素数。可能是 4096 位 4096 位 rsa 有 10^600 个可能的素数来蛮力。 所以你的宇宙质量量子求解器需要在 10^500 年内进行测试。

    rsa vs 宇宙质量量子计算机 1 - 0

    也许量子计算机可以破解 64/128 位密码。因为 128 位密码有 10^39 个可能的暴力破解节点。

    【讨论】:

    • 我同意通过蛮力尝试所有可能的因素进行分解需要太长时间。但这并不意味着不可能有更聪明的算法(即使不考虑量子计算机也是如此)。例如,考虑找出给定数 N 是否是素数的问题。如果 N 是,比如说,一个 1000 位的数字,那么一个人也可能认为这是一项不可能完成的任务,但实际上这可以在普通计算机上完成,参见 en.wikipedia.org/wiki/Primality_test 测试只是比尝试所有可能的除数更复杂。
    【解决方案9】:

    此电路是了解量子位并行性如何工作的良好开端。 2-qubits-input 在左侧。顶部量子位是 x,底部量子位是 y。 y 量子位在输入处为 0,就像一个普通位一样。另一方面,x 量子比特在输入端处于叠加态。 y (+) f(x) 在这里表示模2加法,只表示1+1=0, 0+1=1+0=1。但有趣的是,由于 x-qubit 处于叠加状态,f(x) 同时为 f(0) 和 f(1),我们可以同时对所有状态的 f 函数进行评估,而无需使用任何(耗时)循环。拥有足够多的 quibits,我们可以将其分支为无限复杂的 curcuits。

    【讨论】:

      【解决方案10】:

      更离奇的imo。是格罗弗算法。作为输入,我们在这里得到一个未排序的整数数组,arraylength = n。找到这个数组的最小值的算法的预期运行时间是多少?经典地,我们至少要检查数组的每个 1..n 元素,从而得到预期的 n 运行时间。对于量子计算机而言并非如此,在量子计算机上,我们可以在最大根(n)的预期运行时间中解决这个问题,这意味着我们甚至不必检查每个元素来找到有保证的解决方案......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 2016-06-01
        • 2010-10-09
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多