随着对量子计算研究的迅速增长,亟需保护这些计算机免受各种物理攻击。不断增加的量子比特数量和提高量子计算机保真度为这些计算机运行带来了巨大的希望,尤其是处理高敏感知识产权的新算法。然而,在当今基于云的量子计算机环境中,用户缺乏对计算机的物理控制。物理攻击-如数据中心内恶意内部人员实施的攻击,可能被用来提取有关这些计算机上执行的电路的敏感信息。本文展示了在量子计算机中的基于功率的侧信道漏洞,可用于恢复有关发送到这些计算机的控制脉冲的信息。通过分析这些控制脉冲,攻击者可以逆向工程电路的等效门级描述,以及正在运行的算法或硬编码到电路中的数据。
0x01 简介
近年来,量子计算机受到越来越多的关注,特别是现在可以通过互联网轻松访问大量量子计算机。 IBM Quantum 、Amazon Bracket和 Microsoft Azure等基于云的供应商,提供了对各种类型的噪声中等规模量子计算 (NISQ,Noisy Intermediate-Scale Quantum) 设备的访问。 远程访问使不同的用户和公司可以轻松地在真正的量子计算机上运行算法,而无需购买或维护。 目前,大量公司和初创公司正在致力于开发在这些基于云的量子算法。 这些公司本身没有量子计算机,而是依赖于云提供商对真实机器的远程访问。 他们可以使用方便的按使用付费模型在真正的量子计算机上运行电路。 然而,鉴于量子电路中可能嵌入了重要的知识产权,因此有必要了解是否以及如何从量子计算机的操作行为中提取敏感信息。
这些用户、初创公司或公司无法控制量子计算机所在的物理空间。 虽然云提供商本身可能不是坏人,但数据中心或云计算设施内的恶意内部人员的威胁在传统安全领域是众所周知的。 在经典计算机中,不同类型的侧信道是众所周知的威胁。 侧信道有基于时序的和基于功率的信道,它们是已经研究的侧信道的主要类别。此外, 还有热、电磁 (EM,Electromagnetic)、声学和各种其他类别的信道。 时序侧信道更容易被利用,因为它们只需要对攻击目标进行时序测量。 功率侧信道功能更强大,但需要物理访问。 通过物理访问,恶意内部人员或其他攻击者可以获得有关目标计算机执行情况的详细信息。
在量子计算机中,由于不可克隆定理(no-cloning theorem),直接复制量子态是不可能的。 不可克隆定理指出,不可能创建任意未知量子态的独立且相同的副本。 然而,在量子计算机上执行的经典控制操作则没有这样的限制。 如 IBM、Rigetti或其他公司的超导量子位机,使用射频 (RF,radio frequency ) 脉冲对单量子位或双量子位配对“执行”门操作。 控制脉冲是完全经典的并且可以被监视。给定控制脉冲信息,可以对量子计算机上执行的量子门序列进行逆向工程。 从门的序列中,可以恢复所执行的算法。任何能够访问控制脉冲生成逻辑的功率测量的人都可以捕获和恢复控制信息。
本文重点关注用于提取有关用户电路(即量子程序)信息的潜在新侧信道。这并不是针对超导量子位本身(它们被隔离在低温冰箱中),而是专注于下图中间所示的控制器电子设备,假设经典的计算机组件(例如作业管理服务器)受到侧信道的保护。
以下是可以被恢复的不同类型敏感信息,也可以被视为攻击者的目标:
1)用户电路识别(UC, User Circuit Identification): 根据有关量子计算机上执行的可能电路集的知识,找到用户实际执行的电路。
2) 电路Oracle识别(CO, Circuit Oracle Identification):给定一个已知电路,例如 Bernstein-Vazirani,和一个未知的Oracle,找到该电路中使用的Oracle的配置。
3)电路 Ansatz 识别(CA,Circuit Ansatz Identification):给定一个已知电路,例如机器学习应用中使用的变分电路,但未知 ansatz,找到该电路中使用的 ansatz 的配置。
4)量子位映射识别(QM,Qubit Mapping Identification):给定已知电路,识别使用了哪些物理量子位的位置。
5)量子处理器识别(QP,Quantum Processor Identification):根据有关量子处理器和电路的脉冲的知识,找到执行该电路的量子处理器。
6)电路重建(CR,Circuit Reconstruction):根据有关量子计算机基础门脉冲的知识,从功率轨迹重建完整的未知电路。
考虑到攻击者对量子计算机的物理访问,本文发现的漏洞可用于恢复上述信息的各类攻击:
1)时序攻击(Timing Attack):虽然主要关注功率侧信道,但首先演示简单的时序侧信道,以帮助恢复用户电路 (UC)。 这种攻击的局限性也激发了其他电力侧信道攻击的研究。
2)总能量攻击(Total Energy Attack):总能量数据的测量也可用于恢复用户的电路,也可以应用于之前列出的其他攻击者的目标。
3)平均功率攻击(Mean Power Attack):平均功率测量也可用于恢复用户电路,也可以应用于之前列出的其他攻击者的目标。
4)总功率轨迹攻击(Total Power Single Trace Attack):更强大的攻击者可以测量所有通道总功率的轨迹,这样的攻击者可以恢复用户电路(UC)、电路Oracle(CO)、电路Ansatz(CA)、量子位映射(QM)、 以及具有一定精度的量子处理器(QP)。
5)逐通道功率轨迹攻击(Per-Channel Power Single Trace Attack):最强大的攻击者可以分别从各个通道收集功率轨迹。 每个单量子位门和多量子位门都有独特的驱动和控制通道,微波脉冲被发送到这些通道。能够收集这些通道的功率轨迹的攻击者可以执行电路重建(CR),从而恢复用户电路。
0x02 背景
A. 量子位和量子态
量子位,简称量子位,是量子计算最基本的构建块,在概念上类似于当前经典计算中的位。 量子位类似于位,有两个基本状态,用符号表示为 |0> 和 |1>。 然而,量子位可以是 |0> 和 |1> 与范数 1 的任意线性组合,但经典位只能是 0 或 1。通常,量子位更具体地表示为:
其中 a 和 b 是满足 |a|^2 + |b|^2 = 1 的复数。
一个量子位的基础状态可以表示为二维向量,例如 |0> = [1, 0]^T 和 |1> = [0, 1]^T ,其中 v^T 表示转置 v。 因此,上面的状态可以写成a|0> + b|1> = [a, b]^T 。 更一般地,2^n 基态形成 n 量子位态空间,范围从 |0...0> 到 |1...1>。 因此,n-量子位状态可以表示为:
其中:
B. 量子门
与经典计算类似,基本的量子操作是量子门。 量子门是修改输入量子位的单一操作,量子算法由一系列量子门组成,用于将输入量子位更改为所需状态。
量子门 U 必须是酉变换,即 UU' = U'U =I,其中 U' 是 U 的共轭转置,| 是单位矩阵。 在向量矩阵表示中,2^n × 2^n 矩阵可用于表示n-量子位量子门。 例如,Pauli-X门是一种单量子位门,可将 |0> 翻转到 |1> 和 |1> 翻转到 |0>,与经典计算中的 NOT 门相当。 另一个重要的例子是 CNOT 门,也称为 CX 门,它是一种二量子位门,如果控制量子位处于状态 |1>,则将向目标量子位应用 Pauli-X 门,并且 否则什么也不会发生。 RZ 门仅应用 |0> 和 |1> 之间的相位。 SX 门执行 Pauli-X 门的一半功能,并且在经典计算中没有直接对应的功能。
它们的矩阵表示以及其他一些量子门的矩阵如下所示。下面遵循 Qiskit 的量子位顺序,其中最左边的量子位是最重要的,最右边的量子位是最不重要的。 鉴于此,如果遵循不同的量子位顺序,CX 门在其他论文中可能具有不同的矩阵表示:
已经证明,仅使用少量量子门就可以在较小误差内近似任何单一量子门。 因此,目前可用的量子计算机通常具有几个基门,通过将基门分组,可以形成其他量子门。 它们没有必要也不可能支持所有量子门。 这些基础门,也称为本地门,是量子处理器的重要配置之一。 根据底层控制的不同,不同制造商甚至不同版本的量子处理器可能具有不同的本地门,这是错误率和效率等许多属性之间的权衡。
本文中的实验基于 IBM Quantum。 对于当前大多数 IBM Quantum 量子计算机,基础门包括 ID、RZ、SX、X 和 CX。 这些门的矩阵表示如上所示。 在实际的量子计算硬件上运行之前,其他量子门,例如广泛使用的哈达玛门,必须分解为这些基础门。
C. 控制脉冲
超导量子位通常由微波脉冲控制。为了在量子计算机上实际执行每个基础门,需要生成与每个门相对应的正确控制脉冲并将其发送到量子计算机。 下图显示了 SX、X 和 CX 门的控制脉冲示例。在 IBM Quantum 上,ID(身份)门不执行任何操作,只会增加延迟。 RZ门是一个虚拟门,没有任何真实的脉冲。
脉冲通常由包络、频率和相位定义。 作为超导量子位控制的一个实例,包络指定了由任意波形发生器(AWG,arbitrary waveform generator)(一种常见的实验室仪器)生成的信号的形状,频率和相位指定了将用于调制量子比特的周期信号。 包络信号。 这两个信号一起形成将发送到量子位的输出信号。
为了指定包络,通常将它们离散化为一系列时间步长,每个元素表示特时序间步长的幅度。 更经济的方法是使用由一些预定义形状指定的参数化脉冲,并且只需要存储几个参数。 这些参数通常包括指示脉冲长度的持续时间、指示脉冲相对强度的幅度以及指定脉冲形状的其他参数。
在 IBM Quantum 上,所有原生门的脉冲都是预定义的,而它们的参数则通过校准经常更新,以便它们能够随着时间的推移保持高保真度。 脉冲参数被自动测量和校准,并准备好用于生成量子电路的控制脉冲。
D. 脉冲电平电路
为了完整地描述量子程序,需要定义所有通道的所有脉冲,包括脉冲何时应相对于电路的起点开始、脉冲将应用于哪些量子位以及其他物理操作(例如频率或相位) 变化,需要明确。 该信息被称为脉冲信息,与其他有用信息一起形成所谓的脉冲级电路描述。
脉冲电平电路和脉冲信息对于向用户提供是重要且有价值的。 它们使用户能够验证量子电路并检查执行细节。 此外,脉冲级电路正在积极研究,例如用于优化或量子机器学习,并且需要有关脉冲的信息来提高量子计算机和这些算法的性能和实用性。
为了实际生成脉冲电平电路,需要许多步骤。 开发量子电路或程序的第一步是使用量子开发套件构建逻辑级电路,例如 Qiskit、Amazon Braket SDK、Q#、Cirq。 与经典计算类似,逻辑级量子电路通常包含高级描述。 需要进行一系列操作将其转化为低级的、特定于硬件的指令,这类似于经典计算程序的预处理、编译和汇编过程。
第二步是转译电路,这是 Qiskit 用来表示类似于预处理和编译的操作和转换的术语。 转译的过程涉及许多步骤,包括将非原生量子门分解为原生门组、对量子门进行分组和移除以减少门的数量、将原始电路中的逻辑量子位映射到指定量子计算机上的物理量子位 、在有限的拓扑下对电路进行布线、潜在地优化电路以降低误差等等。
第三步在 Qiskit 中称为调度,将门级电路转换为脉冲级电路。 调度进一步将量子电路映射到微波脉冲,这是用于调节和控制量子位的最终物理操作。 根据每个量子位或量子位对上每个基础门的先前校准数据,调度创建准备好用于量子程序的微波脉冲序列。 最终结果是仅由代表基门的控制脉冲组成的电路,可以在目标量子计算机上执行。
E. 循环和shot执行
在当今的量子计算云平台中,量子电路,即程序,通常会根据平台设置以特定的模式提交和执行。 由于大多数量子算法的结果都是概率性的,因此同一个量子电路通常需要运行多次才能得到概率性结果。 电路的一次执行通常也称为一次shot。
0x03 威胁模型
A. 威胁模型背景
(1)通道
脉冲用于驱动指定的量子位,应控制哪些量子位由通道指定。 通常,单量子位门有一个通道,多量子位门有多个通道。 通道主要分为 4 类:
1)驱动通道:将信号传输到执行门操作的量子位;
2)控制通道:为驱动通道提供对量子位的补充控制;
3)测量通道:传输测量刺激脉冲以进行读出;
4)采集通道:用于收集数据。
本文更感兴趣的是驱动通道和控制通道,因为它们指定了量子门。 一般来说,驱动通道对应于量子位,控制通道对应于量子位之间的连接。 量子设备的通道数量由其架构决定。 更具体地,驱动通道的数量通常等于量子位的数量,并且控制通道的数量通常等于两个量子位之间的连接的数量。
(2)基础脉冲
每个量子电路都需要转换为仅包含目标量子器件的基础门的量子电路。 将基础门被调度后的脉冲组称为其基础脉冲。 由于脉冲参数高度依赖于量子比特的物理特性,而量子门是一个抽象概念,不同通道上的同一类型的门具有不同的脉冲参数。 例如,量子位 0 上的 X 门与除 0 之外的量子位上的 X 门具有不同的脉冲参数。
(3)基础脉冲库
调度需要所有基门的基脉冲集合,将定义所有基础门的脉冲集称为基础脉冲库。 IBM Quantum 为其所有量子设备提供有关基础脉冲的信息。IBM Quantum 还支持所谓的自定义脉冲门,它允许用户执行使用任意脉冲校准的门,并且这些门在转译和调度过程中不会更改。 然而,对于大多数用例,不需要定制脉冲门。 因此,在本文中假设攻击目标电路不包含任何自定义脉冲门。
(4)功率轨迹
由于需要脉冲来控制超导量子位,因此这些操作会消耗能量。 将功率轨迹表示为控制量子位的操作所消耗的功率的时间序列。 总功率轨迹是指一段时间内所有通道上的功率总和的时间序列,而逐个通道功率轨迹是指某个特定通道上的功率轨迹。 量子门控制的功耗与其射频脉冲有关。 将通道内和跨通道分别称为,根据脉冲信息计算逐个通道功率轨迹的函数,以及根据脉冲信息计算总功率轨迹的函数。 通道内函数表示为 Powerc[pc(x)],其中 c 代表通道,pc(x) 代表该通道上的脉冲幅度时间序列,指定如何从脉冲振幅计算每个通道的功率轨迹。跨通道函数,表示为 Total[fc1(x)...fcn(x)],ci中i = {1...n} 表示一个量子处理器的所有通道,指定如何从所有逐个通道功率轨迹 fc(x) 中求和总功率轨迹。 基于这些定义,总功率轨迹 P(x) 可以根据逐个通道脉冲幅度时间序列 Pci(x) 计算: