摘要 |
---|
安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先,提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质,该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的交互。结果由一个半可信的第三方宣布。利用上述设计的值比较协议,提出了一种安全的多方凸包协议,可以安全地解决多个用户点集的公共凸包问题。然后进行了正确性和安全性分析,证明了该协议是安全可靠的。 |
背景
随着信息技术的发展,安全问题一直是学术界关注的热点问题。安全多方计算(SMC)旨在解决多个相互不信任的参与者共同计算某一类型任务的问题,同时保护他们的信息不被泄露。SMC起源于姚在1982年提出的百万富翁问题,两个百万富翁在不知道彼此财富的情况下比较财富。它涉及到经典计算中的各种问题,其中安全多方计算几何(SMCG)也是一个值得研究的方向。2001年,Atallah首次给出了数的安全计算几何问题的定义研究,包括点包含问题、交点问题和凸包问题,并对其中一些问题提出了解决方案。后续学者也对这些SMCG问题进行了研究,如点包含问题、几何相交问题、最近点或点对问题、求解凸包问题等。
然而,上述问题的解决方案受到计算复杂性的限制。由于量子算法的出现,如Shor算法和Grover算法,这些基于计算复杂度的安全算法将面临威胁。因此,有必要研究基于量子力学的安全多方计算几何。Shi等于2016年提出了一种基于相位编码量子私有查询的任意区域隐私保护点包含协议。2017年,Peng等也使用相位编码的量子隐私查询解决了双方距离解决问题。不久之后,Chen等人发表了一篇论文,指出了Peng方案在安全性上的不足,分析了原方案存在不足的原因,并提出了新的解决方案。2018年,Peng等人提出了一种使用基于QKD的量子私有查询进行安全的双方距离计算的量子协议。Liu等人在2019年发表的文章中提出了一种基于oracle和量子计数算法的协议来处理两方几何相交问题,但该方法仅限于两方的参与,不能很好地扩展到多方的情况下。
在本文中,作者率先使用量子同态加密来解决多方凸包问题。两个或多个用户有自己的点集。作者协议的目的是如何在不泄露用户自身信息的情况下找出所有用户点集的共同凸包,凸包点的信息是所有人都知道的。提出了一种基于量子同态加密的值比较协议,保证了数据值的安全性。然后将该协议应用于凸包计算协议中,最后得到了该协议的解。
基础知识
量子同态加密
QHE方案解决的问题是,当数据被加密后,经过同态求值,最终的解密结果与原始明文的相同计算结果相同,可以解决安全计算问题。QHE方案由四种算法组成(密钥生成,加密算法,评估算法,解密算法)。
- 密钥生成算法将随机生成一个加密密钥ek和一个解密密钥dk。根据给定的ek算法计算dk
- 加密算法ε对量子态σ进行加密并输出加密后的量子态 E ε ( e k , δ ) E_ε(ek,δ) Eε(ek,δ)
- 评估算法是对加密数据 ε ( e k , δ ) ε(ek, δ) ε(ek,δ)进行量子计算U,执行后得到最终的密文 E ε ( e k , δ ) E_ε(ek, δ) Eε(ek,δ)
- 解密算法D对
E
ε
′
(
e
k
,
δ
)
E'_ε(ek, δ)
Eε′(ek,δ)进行解密,输出明文
σ
′
=
D
(
d
k
,
E
e
′
(
e
k
,
σ
)
)
σ' = D(dk, E'_e(ek, σ))
σ′=D(dk,Ee′(ek,σ)),
σ
′
=
U
σ
U
†
σ' = UσU^†
σ′=UσU†
在本文中,我们使用X门和Z门对明文量子比特 σ σ σ进行加密,并被Boykin等人证明是完全安全的。
在密钥生成中,可以对原始密文进行量子门操作,而原始密钥ek根据密钥更新算法生成最终解密密钥dk。量子门的每次执行称为 G i ( i = 1 , 2 … k , k 是执行的总次数 ) G_i (i = 1,2…k, k是执行的总次数) Gi(i=1,2…k,k是执行的总次数),每个量子门是集合 S = S = S={ X , Y , Z , H , S , T , C N O T X, Y, Z, H, S, T,CNOT X,Y,Z,H,S,T,CNOT}的一个元素。密钥更新算法有以下几种情况:如果Gi = X或Y或Z,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值不变。如式(1)所示
如果Gi = H,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(2)。
如果Gi = S,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(3)
如果Gi = S,假设它作用于ek的第m位和第l位,则密钥更新算法第i步的密钥值遵循式(4)。
如果Gi = T,则由于执行T门进行求值而发生s错误。则有s错误为 T X x Z z ∣ ψ ⟩ = X x Z x S x T ∣ ψ ⟩ TX^xZ^z|\psi\rangle=X^xZ^xS^xT|\psi\rangle TXxZz∣ψ⟩=XxZxSxT∣ψ⟩。为了消除s误差,Gao等设计了一种基于Sx旋转贝尔测量的T门过程量子电路,如图1所示。执行此电路后,可以得到ra和rb,然后 T X x ⊕ z S x Z z ∣ ψ ⟩ = X x ⊕ r a Z x ⊕ z ⊕ r b T ∣ ψ ⟩ TX^{x\oplus z}S^xZ^z|\psi\rangle=X^{x\oplus r_a}Z^{x\oplus z\oplus r_b}T|\psi\rangle TXx⊕zSxZz∣ψ⟩=Xx⊕raZx⊕z⊕rbT∣ψ⟩。
假设Gi = T作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(5)。
量子逻辑门与量子减法电路
逻辑门电路是量子计算的基础。单量子比特门包括泡利操作X、Y、Z、Hadamard门H和相位门T、S。量子减法器的设计是为了从n两个二进制数a和b中获取减法信息。本文中我们使用Yuan设计的量子减法器,其具体思想是:首先从最低位开始减法,然后考虑是否需要从上面的位借用,然后减去第二个位直到最后一位。为了重用常数输入,使用复位操作将常数输入设置为0,可以显著减少常数输入的数量。量子位输入减法电路如图所示。
基于同态加密的值比较协议(VCP_QHE)
本节介绍了一个基于量子同态加密的私有比较协议,可以安全地保护双方之间的值比较。参与者包括Alice、Bob(两个信息所有者)和半信任的第三方。我们可以将半可信的第三方划分为计算中心和密钥分发中心,其中计算中心只负责消息的计算,而半可信的密钥中心负责密钥的分发。在我们的协议中,我们使用水平偏振和垂直偏振来表示点信息,水平偏振光子|1>表示二进制消息1,垂直偏振光子|0>表示二进制消息0。Alice和Bob分别将加密后的信息发送到计算中心的量子电路U进行计算。量子电路U包含多个逻辑门,它们属于集合S = {X, Y, Z, H, S, T, CNOT}。协议流程图如图4所示,具体步骤如下:
- 密钥中心随机生成一个长度为2n的密钥ek = (x0,z0),其中x0,z0属于{0,1}n。然后通过BB84量子密钥分发协议将ek发送给Alice和Bob。
- Alice和Bob分别对他们的信息进行编码,Alice和Bob分别用ek对其编码的光子序列 ∣ ψ A ⟩ = ∣ ψ A 1 ψ A 2 ψ A 3 ⋅ ⋅ ⋅ ψ A n ⟩ |\psi_A\rangle=|\psi_A^1\psi_A^2\psi_A^3···\psi_A^n\rangle ∣ψA⟩=∣ψA1ψA2ψA3⋅⋅⋅ψAn⟩, ∣ ψ B ⟩ = ∣ ψ B 1 ψ B 2 ψ B 3 ⋅ ⋅ ⋅ ψ B n ⟩ |\psi_B\rangle=|\psi_B^1\psi_B^2\psi_B^3···\psi_B^n\rangle ∣ψB⟩=∣ψB1ψB2ψB3⋅⋅⋅ψBn⟩进行加密,得到密文序列 ∣ ψ A ′ ⟩ = X x 1 Z z 1 ∣ ψ A 1 ⟩ ⊗ X x 2 Z z 2 ∣ ψ A 2 ⟩ ⋅ ⋅ ⋅ ⊗ X x n Z z n ∣ ψ A n ⟩ |\psi_A'\rangle=X^{x_1}Z^{z_1}|\psi_A^1\rangle \otimes X^{x_2}Z^{z_2}|\psi_A^2\rangle ···\otimes X^{x_n}Z^{z_n}|\psi_A^n\rangle ∣ψA′⟩=Xx1Zz1∣ψA1⟩⊗Xx2Zz2∣ψA2⟩⋅⋅⋅⊗XxnZzn∣ψAn⟩, ∣ ψ B ′ ⟩ = X x 1 Z z 1 ∣ ψ B 1 ⟩ ⊗ X x 2 Z z 2 ∣ ψ B 2 ⟩ ⋅ ⋅ ⋅ ⊗ X x n Z z n ∣ ψ B n ⟩ |\psi_B'\rangle=X^{x_1}Z^{z_1}|\psi_B^1\rangle \otimes X^{x_2}Z^{z_2}|\psi_B^2\rangle ···\otimes X^{x_n}Z^{z_n}|\psi_B^n\rangle ∣ψB′⟩=Xx1Zz1∣ψB1⟩⊗Xx2Zz2∣ψB2⟩⋅⋅⋅⊗XxnZzn∣ψBn⟩。这些密文序列是需要发到计算中心去执行而提前制备的。为了防止第三方窃听,Alice和Bob准备了一些诱饵光子,每个光子从 ∣ 10 ⟩ ∣ 11 ⟩ ∣ + ⟩ ∣ − ⟩ |10\rangle|11\rangle |+\rangle |-\rangle ∣10⟩∣11⟩∣+⟩∣−⟩中选择。这些诱饵光子将被随机插入。完成这个操作之后,新序列才会被发送到计算中心。
- 计算中心接收到Alice和Bob发送的加密序列后,Alice和Bob公布诱饵光子的插入位置和对应的测量基,若插入的诱饵为|0>或者|1>,则测量基为|0>或者|1>,[1}};若插入的诱饵为|+>或者|->,则测量基为|+>或者|->。计算中心根据所提供的信息进行排序。如果测量结果没有达到Alice和Bob设定的阈值,协议将终止。否则,计算中心丢弃诱饵光子,获得原始加密序列 ∣ ψ A ′ ⟩ |\psi'_A\rangle ∣ψA′⟩和 ∣ ψ B ′ ⟩ |\psi'_B\rangle ∣ψB′⟩。为了使输入计算的位长一致,计算中心在计算前在序列长度较短的加密序列前面加上I0 >,使两个序列的长度一致。
- 计算中心构建量子减法电路,取两个加密序列作为电路输入。同时,密钥中心根据计算中心执行的量子逻辑门对原密钥周进行更新。假设我们将电路中的量子逻辑门每次执行设置为Gi,总共执行K次,那么最终的密文结果可以表示为 G k ( G k − 1 ( ⋅ ⋅ ⋅ ( G 2 ( G 1 ( ∣ ψ A ′ ⟩ , ∣ ψ B ′ ⟩ ) ) ) ⋅ ⋅ ⋅ ) ) G_k(G_{k-1}(···(G2(G1(|\psi'_A\rangle,|\psi'_B\rangle)))···)) Gk(Gk−1(⋅⋅⋅(G2(G1(∣ψA′⟩,∣ψB′⟩)))⋅⋅⋅))。解密密钥为 d k = ( x k , z k ) dk = (xk, zk) dk=(xk,zk),稍后将解释密钥更新规则。最后,计算中心将计算结果发送到密钥中心。
- 密钥中心收到结果后,使用解密密钥dk对其进行解密和测量,最终得到Alice和Bob减去的信息(计算结果)。
- 密钥中心向Alice和Bob宣布最终结果,协议结束。
基于VCP_QHE的安全多方凸包协议
假设有多个用户Ui(i>1),每个用户都有自己的点集seti,想要求解点集的公共凸包Σseti。但是他们不希望对方知道自己的信息,只能知道凸包上的信息。目前经典各方提出的安全协议是基于计算复杂度的,这类协议的问题受到量子计算的威胁。为了更清晰地描述这一过程,本文描述了双方安全凸包协议,最后扩展为安全多方凸包协议。在两方协议中,假设我们的参与者是Alice和Bob,以及一个半可信的第三方。Alice有一个私有的点集合SA= (p1, p2, p3…, pm), Bob有一个私有点集SB = (q1, q2,q3 …qn)。Alice和Bob需要在不泄露他们自己的点集信息的情况下计算m + n个点的凸包。具体步骤如下:
步骤1 Alice和Bob分别计算y轴坐标中最小的点pA min∈SA和qB min∈SB(注意这里也可以选择y轴上的最大值或x轴上的最小最大值,只要所需点是当前集合中的极值点即可)。
步骤2 Alice和Bob用VCP_QHE比较他们的极值点pA min和qB min的值大小。
如果pA min >qB min,那么qB min是m + n集合的一个极值点和凸包上的一个点。通过qB min生成x轴方向的水平单位矢量→v0v1 (v0是矢量上的一个点,v1 = qB min)。
如果pA min <pbmin,那么pA min是m + n集合的一个极值点也是凸包上的一个点。通过pA min生成x轴方向的水平单位矢量→v0v1 (v0是矢量上的一个点,v1 = pA min)。
若pA min = qB min,则pA min和qB min都是m + n集合的极值点和凸包上的两个点。通过pA min和qB min生成向量→v0v1,v0 = pA min, v1 = qB min。
步骤3 Alice计算余弦值
c
o
s
l
(
l
=
1
,
2
,
…
,
m
)
cos_l(l = 1,2,…, m)
cosl(l=1,2,…,m)的
v
i
p
l
→
\overrightarrow {v_ip_l}
vipl和
v
i
−
1
v
i
→
\overrightarrow{v_{i-1}v_i}
vi−1vi(i表示第i个凸包点,l=1,2,3…m),并选择其最大余弦值cos A。同时,Bob计算余弦值cost(t =1,2,…), n)的
v
i
q
t
→
\overrightarrow {v_iq_t}
viqt和
v
i
−
1
v
i
→
\overrightarrow {v_{i-1}v_i}
vi−1vi,然后选择其最大余弦值cos B。
步骤4 Alice和Bob通过VCP_QHE比较了
c
o
s
A
(
c
o
s
<
v
i
p
m
a
x
→
,
v
i
−
1
v
i
→
>
)
cosA(cos<\overrightarrow {v_ip_{max}},\overrightarrow {v_{i-1}v_i}>)
cosA(cos<vipmax,vi−1vi>)和
c
o
s
B
(
c
o
s
<
v
i
p
m
a
x
→
,
v
i
−
1
v
i
→
>
)
cosB(cos<\overrightarrow {v_ip_{max}},\overrightarrow {v_{i-1}v_i}>)
cosB(cos<vipmax,vi−1vi>)的大小。p max和q max分别是Alice和Bob的点集中余弦值最大的点。比较结果将在三种情况下:
若cos A>cos B,则pmax为凸包点,设p max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。若cos A<cos B,则q max为凸包点,设q max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。如果cos A=cos B。
步骤5 Alice和Bob分别计算凸壳点vi到p max, q max的距离disA, disB,然后通过VCP_QHE比较这两个距离。如果没有的话。disB,则设置p max→vi+1,否则设置q max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。
由于协议解的整个过程是根据前一个凸壳点得到下一个凸壳点,我们可以知道两个凸壳点可以形成一个凸壳的边,所以每得到两个凸壳点就会形成一个凸壳边,所有边的集合就是一个完整的凸壳。由此得到的点集合代表了整个点集合的凸壳(即,根据所得到的点的顺序由直线形成的闭环是凸壳)。
根据上述安全的双方凸包协议,我们还可以将其扩展到安全的多方凸包计算。多用户Ui(i = 1,2,3…,n)协议的过程与双方凸包协议的过程大致相同。在步骤1中,Ui分别得到自己的极值点,然后使用VCP_QHE协议最终得到一个极值点Σ Si(所有点的集合); VCP_QHE还用于求解步骤3中的最大余弦值和步骤5中的最大距离。由于我们设计的VCP_QHE是由双方来解决的,所以我们需要对多个用户的输入进行两两判断。最后,经过循环判断,每个用户Ui都可以得到所有点的凸包。
精确度分析
在本节中,我们对VCP_QHE和安全多方凸包协议进行了用例分析。首先,我们分析VCP_QHE协议,假设Alice有数据IA= 58, Bob有数据IB= 30,并将它们分别编码为二进制,得到IA =(1,1,1,0,1,0)和IB=(1,1,1,1,0)。由于IA和IB的长度不一致,我们在较小的I前面加上|0>,得到两者的长度一致的I’B=(0,1,1,1,1,0)。通过计算中心(即IA−IB)的计算和密钥中心(即Ires = (1,1,1,0,0) > 0的解密,我们可以知道IA >IB。
通过VCP_QHE协议对cos A和cos B进行判断,得出cos A<cos B,因此新的凸包点为q3。然后以q3为基点,得到后续凸包点。流程为q1→q3→q2→p2→p1→q1,如上图所示。
对于安全多方凸包的正确性分析,我们假设Alice和Bob有点集SA= {(0,1), (1,6), (2,4)}, SB={(3,0),(4,8),(6,1)},如图所示。Alice和Bob计算了他们点集中的最小y轴坐标,分别标记为p1和q1。通过对p1和q1应用VCP_QHE协议可以看出,q1是整个集合中沿y轴方向的最小点,也是第一个凸包点。根据q1,分别得到Alice和Bob的最大余弦值如式6和式7所示。
在不失一般性的前提下,假设有n个用户U1 U2…,则每个用户包含各自的点信息。每个用户计算自己的点集Ei中的极值点,通过VCP_QHE协议比较Ei,得到第一个凸包点C1。Ui计算最小余弦值
c
o
s
<
C
1
,
C
1
P
k
>
i
cos<C_1,C_1P_k>_i
cos<C1,C1Pk>i由点C1的水平向量
C
1
P
k
C_1P_k
C1Pk组成。然后比较通过VCP_QHE得到最小余弦值
c
o
s
<
C
1
,
C
1
P
k
>
i
cos<C_1,C_1P_k>_i
cos<C1,C1Pk>i和在整个点集中的
c
o
s
<
C
1
,
C
1
P
k
>
i
cos<C_1,C_1P_k>_i
cos<C1,C1Pk>i。即可以得到第二凸包点C2。因此,每个用户首先找到自己的点与凸包边Ci−2Ci−1形成的最小余弦值,然后通过安全VCP_QHE协议比较余弦值。当获得下一个凸包点Ci值时,第一个凸包点的信息相同。然后解出所有凸包点,所有凸包点C1C2…Cm。整个解决过程是完全正确的,并且安全性也得益于同态加密的保证。
安全性分析
由于我们是第一个使用量子同态加密来解决凸包问题的,因此没有其他协议可以与我们比较。我们只能从以下几个角度来分析所提议协议的安全性。
数据与密钥安全
由于初始加密密钥ek是由密钥中心使用安全密钥生成算法QOTP随机生成的,因此可以保证生成的初始密钥的安全性。在密钥更新算法中,当密钥中心与计算中心交互时,计算中心只提供每一步执行的量子逻辑门,因此(x,z)中间密钥和最终dk在密钥更新过程中是安全的。在数据安全方面,由于初始密钥和解密密钥由密钥中心所有,因此密钥中心窃听数据的可能性很大。但是,在我们的协议中,这是不可行的,因为用户通过密钥中心分发的初始密钥ek对数据进行加密,然后通过安全的量子通道直接传输到计算中心,计算中心只有在数据输入通过门电路完成后才会将得到的数据发送到密钥中心进行解密。因此,密钥中心只能获得操作后的数据信息,而无法获得原始的明文信息。所以数据是安全的。
外部攻击
外部攻击者可以在密钥分发、密文传输和同态评估过程中进行攻击。在密钥分发过程中,使用BB84协议分发密钥,因此外部攻击者无法获取密钥。在密文传输过程中,外部攻击者可能会攻击量子信道以获取数据。但是,在数据传输之前,用户会在加密的光子序列中随机添加诱饵光子。因此,即使攻击者拦截了密文信息,也无法知道原始信息是什么。在同态评估过程中,计算与关键中心之间的通信是通过量子信道进行的,并且在信息中插入诱饵光子以防止被窃听,因此也是安全的。
内部攻击
在这种情况下,如果N个不诚实的参与者想要窃取其他人的信息,我们的协议也是完全安全的。由于半可信的密钥中心和计算中心必须忠实于实现过程,不能与其他参与者或第三方合作,因此它们只能从自己获得的信息中推断出其他人的信息。我们在上节中描述了用户数据的安全性。因此,密钥中心和计算中心无法获取其他用户的真实信息。另一方面,由于关键中心公布的最终结果没有公布具体的差异,用户无法通过差异数据获取其他各方的信息,也无法与其他参与者合作获取用户的真实数据。所以我们的协议可以抵抗参与者的攻击。