题解作者:Elliot
出题人、验题人、文案设计等:见 Hackergame 2022 幕后工作人员。
-
题目分类:math
-
题目分值:300
相传,伯恩斯坦曾到访过一个叫做「坎瑞亚」的古国。游历期间,他发明了一种基于量子计算的密码算法,这种算法可以利用量子计算机进行快速运算。然而,时光荏苒,时过境迁,这种算法竟遗失在了历史长河里。这天,旅行者(你)在游历提瓦特大陆时,收到了一封神秘的匿名邮件。据邮件所说,旅行者若是能够重新解密这一算法,便能获得一个名为 FLAG 的金色圣遗物。似乎 FLAG 正是隐藏在算法之中。
由于 Github 的 Markdown 部分公式渲染效果不佳,本 Writeup 提供 PDF 版本
本题旨在借助量子信息学中的经典算法,来向大家介绍量子信息学的基本知识。这两个算法分别是:BB84 协议1和 Bernstein-Vazirani 算法2。其中,BB84 协议是最早设计的量子密钥分发方案,由 Bennertt 和 Brassard 在 1984 年提出;Bernstein-Vazirani 算法则是最早被理论证明量子计算优越的算法之一,由伯恩斯坦和瓦济拉尼在 1992 年提出。
本题通过引入两个挑战,考察答题者的资料收集、线性代数和对量子信息学的基本掌握。
该部分对应了第一章-第一幕的内容,要求答题者和服务器协商出一个长度为 128 比特的随机密钥。
量子比特:量子信息学的基础单位是量子比特(Qubit),通常将其编码一个 2x1 的列向量,例如:
在物理上说,一个 Qubit 通常被编码在一个物理量上(对应的,经典比特通常被编码在电压上)。量子态可以被编码在光量子的偏振特性上,比如
量子测量: 因此,我们可以让一个光子通过一个偏振片,然后探测这个光子,以此实现对量子态的测量。例如,我们可以让一个光量子通过一个水平偏振片,然后探测这个光子。如果能够探测到,那么这个光子是
量子操作:但是,单个量子比特的表达能力比经典比特强。比如,将一个
此时,如果再次进行 Pauli-Z 基测量,得到的量子态是随机的,有
另一种测量是 Pauli-X 基测量,让光子通过一个
我们通常将
量子信息学将常见的量子操作形式化为 量子逻辑门 4,用一个矩阵来表示。如果用一个矩阵操作一个量子态,则新的量子态是矩阵和量子态向量的乘积结果。例如,一个常见的量子门是 Pauli-X 门(对应经典的逻辑非门),其矩阵表示是:
一个
和经典逻辑的 “与门“ 或 ”或门” 类似,量子逻辑门同样存在多比特量子逻辑门,一个最经典的是 CNOT,量子受控非门。该门有两个输入,一个控制比特
假设
即
人们将量子门组合起来,构建了量子门电路,并证明了量子门电路在表达量子算法方面的完备性。关于量子电路的介绍可以参考56。
BB84 协议1利用了量子测量的投影特性,构造了第一个”信息论“安全的密钥分发协议。密钥分发协议是这样一种场景:Alice 和 Bob 作为通信双方,需要使用某种加密算法对消息明文进行加密。但是任何加密算法均需要一个双方共享的密钥,该密钥需要满足如下需求:
- 该密钥应当是密码学安全的随机字符串序列
- 该密钥不能被除了 Alice 和 Bob 之外的其他实体得知(比如一个攻击者 Eva)
现代密码学通常基于某些数学难解问题构造密钥分发协议,比如 D-H 密钥交换协议或者基于椭圆曲线的 D-H 密钥交换(ECDH)协议等,但是通常存在如下两个问题:
- 产生的密钥长度受限。实际密钥将不得不进行派生。
- D-H 密钥交换和 ECDH 的安全假设在量子计算模型下被认为是不安全的。
BB84 协议的主要流程是:
- Alice 随机产生随机数 0 或者 1,并随机产生制备基 Pauli-X 或者 Pauli-Z。然后,将随机数编码到这个制备基上。(将
$\ket{0}$ 和$\ket{+}$ 编码为0,将$\ket{1}$ 和$\ket{-}$ 编码为 1)。将量子发送给 Bob。 - Bob 随机选择 Pauli-X 基或者 Pauli-Z 基对接收到的光子进行测量,得到结果 0 或者 1(将
$\ket{0}$ 和$\ket{+}$ 编码为 0,将$\ket{1}$ 和$\ket{-}$ 编码为 1)。 - Alice 公开选择的制备量子态的基 X 或者 Z,而 Bob 公开测量基。如果双方答案一致,则将测量结果保留作为密钥。
该流程满足了密钥交换的两个需求:
- 只要 Alice 和 Bob 的随机数是安全的,那么密钥结果是随机字符串。
- 中间人 Eva 将无法得知传输的量子态的准确信息。Eva 可以截取 Alice 发送的光子并测量。但是他不能保证选择的测量基和 Alice 的制备基一致,最终将无法准确恢复量子态并发送给 Bob。另一方面,Alice 和 Bob 可以通过对产生密钥进行校验的方式,证实链路上不存在窃听攻击。
根据题意,我们在 BB84 协议中充当 Alice 的角色。我们需要首先制备“随机”的基底和量子态。考虑到 Bob 有 1/2 的概率会选择错误的测量基,我们尽可能输入长度超过
我们接收到来自 Bob 的随机测量基底为:
+x+x++x+x+xxx++++xx++xxx+x++xxx+xx++x+++x+xx+xx++x+x++++xxxx++++++++xx++++xxxxxx+++x+xx++xxxxxx+x+++x+++xx+x++x++xx++xxx+x++x+xxxxxxxx+x+x++x++x+++xx+x+xx+++x+++xxx+x++x+xx+xxxx+++x+x+x+xxxxx+x+xxx++x++xxxxx++xxx+++xx++++x++xx+xx+xxx+xxxx++xxx+x+x+x+xx+x+++++xx++++xxx++x+x+x+x+++x+x++xx+xx+x+x+x+x++
我们发现其中有 148 个 '+',和我们的制备基底一致。对应的密钥保留,最终安全密钥是长度为 148 的 '0...' 字符串。
根据题干中的“伯恩斯坦”的描述,我们需要解题者自行搜索了解 Bernstein-Vazirani 算法。该部分对应了第二章-第一幕 的题目。
Bernstein-Vazirani 算法 2 是最早的被证明量子计算优越性(即量子计算模型比经典计算模型高效)的算法之一,这个网页 7 给出了关于这个算法的很好的描述。
该算法针对这样一个问题:假设存在一个黑盒函数
经典解法: 经典解法的计算复杂度为
量子算法:Bernstein-Vazirani 算法的计算复杂度为
我们首先构造一个量子电路版本的黑盒函
具体解法为:
-
将输入寄存器
$\ket{x}_{(0,n)}$ 的每一个 Qubit 置为$\ket{0}$ 。将输出寄存器$\ket{y}_{(n+1)}$ 置为$\ket{0}$ -
将输出寄存器通过一个 Pauli-X 操作
X = \begin{bmatrix} 0 && 1 \\ 1 && 0 \end{bmatrix}
转化为
$\ket{1}=[0, 1]^T$ ;再通过 Hadamard 门H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 && 1 \\ 1 && -1 \end{bmatrix}
转化为
$\ket{-} = \frac{1}{\sqrt{2}} [1, -1]^T$ -
将输入寄存器
$\ket{x}_{(0,n)}$ 的每一个 Qubit 经过 Hadamard 门 -
将输入寄存器
$\ket{x}_{(0,n)}$ 和输出寄存器$\ket{y}_{(n+1)}$ 通过黑盒函数$F$ ,得到$\ket{x}_{(0,n)}$ 和$\ket{y}_{(n+1)}=\ket{ s \cdot x \bmod 2}$ -
将输入寄存器
$\ket{x}_{(0,n)}$ 的每一个 Qubit 再次 Hadamard 门 -
使用 Pauli-Z 基测量输入寄存器
$\ket{x}_{(0,n)}$ ,其第 i 个 Qubit 的测量结果即为$\ket{x}_i = \ket{s_i}$
可以发现,该算法调用以此黑盒函数
其中,
本题,我们得到了整个算法的量子电路图,包括黑盒函数
首先,我们观察到了大量 CNOT 门电路(蓝色细连线),比如,第一个CNOT 门将
- 如果
$q_0=0$ (对应了$x_0 = 0$ ),那么$q_{128}$ 不变。对应了 y 不变 - 如果
$q_0=1$ (对应了$x_0 = 1$ ),那么$q_{128}$ 反转。对应了$y = y + 1 \pmod 2 = y + s_0 \cdot 1 \pmod 2 = y + s_0 \cdot x_0 \pmod 2$
也就是说,如果
但是,我们还进一步观察到了若干成对出现的
即,
Pauli-Z 门的矩阵表达是:
我们已知输入 Qubit 状态为
假设此时输出寄存器
系统联合状态为
经过
经过 CNOT 门后 状态为
最后,再次经过 Z 门后,状态为:
另一方面,我们考察不经过两次
也就是说:
总结,成对出现的
最终只需要找到包含 CNOT 门的量子比特
flag{f470a85b9b}
注意,
Footnotes
-
C. H. Bennett and G. Brassard. "Quantum cryptography: Public key distribution and coin tossing". In Proceedings of IEEE International Conference on Computers, Systems and Signal Processing, volume 175, page 8. New York, 1984. ↩ ↩2
-
Ethan Bernstein and Umesh Vazirani (1997). "Quantum Complexity Theory". SIAM Journal on Computing. 26 (5): 1411–1473. doi:10.1137/S0097539796300921 ↩ ↩2