量子计算与后量子密码学:原理、威胁与对策
1. 量子算法的加速类型
量子算法相较于经典算法具有显著的速度优势,主要分为二次加速和指数加速。
1.1 二次加速
在之前的例子中,量子算法的运行时间为 $O(\sqrt{n})$,而经典算法最快也只能达到 $O(n)$。由于时间复杂度的差异源于平方指数,我们称这种加速为二次加速。虽然这种加速可能会带来显著的变化,但还有更强大的加速类型。
1.2 指数加速与西蒙问题
指数加速是量子计算的“圣杯”。当一个在经典计算机上需要指数级时间(如 $O(2^n)$)才能完成的任务,在量子计算机上可以以多项式复杂度(即对于某个固定的数 $k$,复杂度为 $O(n^k)$)完成时,就会出现指数加速。这种加速可以将实际上不可能完成的任务变为可能。
西蒙问题是指数加速的典型例子。在这个计算问题中,函数 $f()$ 将 $n$ 位字符串转换为 $n$ 位字符串,除了存在一个值 $m$,使得任何满足 $f(x) = f(y)$ 的两个值 $x$ 和 $y$ 都有 $y = x \oplus m$ 之外,$f()$ 的输出看起来是随机的。解决这个问题的方法是找到 $m$。
使用经典算法解决西蒙问题最终归结为寻找碰撞,这大约需要对 $f()$ 进行 $2^{n/2}$ 次查询。然而,一个量子算法(如图 1 所示)可以在大约 $n$ 次查询内解决西蒙问题,时间复杂度为 $O(n)$,效率极高。
graph LR
classDef startend fill:#F5EBFF,stroke:#B