Encryption 量子计算与加密破解

Encryption 量子计算与加密破解,encryption,cryptography,quantum-computing,Encryption,Cryptography,Quantum Computing,我不久前读到,量子计算机可以在很短的时间内(我相信这仅仅是几分钟)破解当今使用的大多数类型的散列和加密。怎么可能呢?我试过阅读有关它的文章,但我在一个量子位可以是1、0或其他东西时迷失了方向。有人能解释一下这与用简单的英语破解这样的算法而不需要所有的数学运算有关吗 作者很好地解释了这一点 简而言之,如果你有N个比特,你的量子计算机可以同时处于2^N个状态。在概念上类似于2^N CPU对传统位的处理(尽管不完全相同)。量子计算机可以实现快速执行素数分解。加密系统是建立在这样一个假设之上的:在一台经

我不久前读到,量子计算机可以在很短的时间内(我相信这仅仅是几分钟)破解当今使用的大多数类型的散列和加密。怎么可能呢?我试过阅读有关它的文章,但我在
一个量子位可以是1、0或其他东西时迷失了方向。有人能解释一下这与用简单的英语破解这样的算法而不需要所有的数学运算有关吗

作者很好地解释了这一点


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

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

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


量子计算的基本前提是。正如你所说,量子系统(比如量子比特,或者量子比特,普通比特的量子模拟物)不仅可以存在于
0
1
状态(称为系统的计算基态)中,还可以存在于这两种状态的任意组合中(以便每种状态都有与其相关的振幅)。当有人观察到这个系统时,量子位元的状态转变为它的一个基态(你可能听说过与此相关的思维实验)

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

由于量子计算机的这一特性,它们似乎是一颗银弹,可以比经典计算机更快地解决任何问题。但这并不是那么简单:问题是一旦你观察到你的计算结果,它就会(正如我上面提到的)崩溃为一个计算的结果——而你失去了所有其他的计算结果

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

你问的例子是量子密码分析。人们认为量子计算机可能能够“破坏”某些加密算法:特别是RSA算法,它依赖于寻找非常大整数的素因子的难度。允许这样做的算法称为,它可以以多项式时间复杂度对整数进行因子化。相比之下,该问题的时间复杂度(几乎)是指数级的,因此该问题被认为是“”

如果你想更深入地理解这一点,就去读几本关于线性代数和量子力学的书吧。如果你想澄清,我会看看我能做些什么


放在一边:为了更好地理解量子叠加的概念,请从概率的角度考虑。想象一下,你抛了一枚硬币,用手接住它,盖上盖子,这样你就看不见了作为一个非常微妙的类比,硬币可以被认为是正面和反面“状态”的叠加:每个状态的概率为0.5(当然,由于有两种状态,这些概率加起来等于1)。当你把手移开,直接观察硬币时,它会塌陷为正面状态或反面状态,因此这种状态的概率变为1,而另一种状态的概率变为0。我想,思考这个问题的一种方式是,在观察之前,一组尺度是平衡的,在这一点上,随着我们对系统知识的增加,一种状态变成了“真实”状态,它会向一边倾斜

当然,我们并不认为硬币是一个量子系统:就所有实际用途而言,硬币有一个确定的状态,即使我们看不见它。然而,对于真正的量子系统(如量子系统),我们不能这样考虑。在量子力学的理论指导下,粒子基本上没有确定的位置,而是同时存在于所有可能的位置。只有通过观察,它的位置才会在空间中受到限制(尽管只有有限的程度;cf.),甚至这纯粹是随机的,并且仅由概率决定


顺便说一下,量子系统并不局限于只有两个可观测状态(那些可观测状态称为)。有些有一个大而有限的数字,有些有一个可数无限的数字(如a或a),有些甚至有一个不可数的无限数(如a的位置,它不受空间中单个点的限制)。

最基本的术语是,普通的无量子计算机通过操作位(开或关状态)来工作使用布尔逻辑。你可以很快地对很多很多比特进行运算,你可以解决一类可计算的问题中的任何问题

然而,它们是“速度限制”,即所谓的计算复杂性。这在俗人的术语中意味着,对于给定的算法,你可以
for(int i = 3; i < int64.max; i++)
{
  if( key / i is integral)
  {
    //we have a prime factor
  }
}