众所周知,信息和信息处理的完全量子理论提供了诸多好处,其中包括一种基于基础物理的安全密码学,以及一种实现量子计算机的合理希望,这种计算机可以加速某些数学问题的解决。这些好处来自于独特的量子特性,如叠加、纠缠和非定域性,这些特性在经典力学中不存在。在过去的四十年里,许多重要的量子信息处理协议被提出,包括量子密钥分发(QKD)、量子隐形传态、量子因数分解算法和Grover搜索算法。量子密码学是量子信息处理中最成功的应用之一,因为物理定律保证了其固有的安全性。相反,经典密码学通常依赖于计算复杂性的假设。第一种量子密码系统是量子密钥分发,用于生成仅由两方共享的随机密钥。后来,量子密码学得到了广泛的研究,并提出了许多协议。同态加密(HE)方案允许在不事先解密的情况下处理加密数据。这个有用的功能已经存在了30多年。2009年,Craig Gentry引入了第一个可信且可实现的完全同态加密(FHE)方案,该方案支持在加密数据上处理任何函数。但该方案只能实现计算安全性。人们自然会问,量子力学的物理原理是否可以应用于构建HE方案,从而实现更好的安全性/性能。答案是肯定的,并且已经提出了各种量子同态加密(QHE)方案。综上所述,这些方案可分为两类。一种是有效的信息理论安全(ITS),只能评估所有可能函数的子集;另一种只能实现计算安全性。此外,已有研究表明,用ITS构建高效量子FHE是不可能的。最近,Dor Bitan等人利用一组特定的随机碱基,提出了一种量子同态加密方案。它可以加密和外包经典数据的存储,同时使用ITS对加密数据进行量子门计算。
秘密共享与量子同态加密数学基础
同态加密(HE)方案可以用密钥生成(Gen)、加密(Enc)、求值(Eval)和解密(Dec)四种算法的集合来描述。下面我们简要回顾一下同态随机基加密方案。
密钥生成:从[0,2π]×{π/2,−π/2}中输出一个一致随机对(θ,φ)的密钥。
加密:输出由|q> = K|b>获得的量子比特|q,输入消息b∈{0,1},密钥K = (θ, φ)。这里K是加密运算符的形式
解密:输出输入|q>的明文,密钥k = (θ, φ)。可以通过对|q>施加K†,并在计算基中输出K†|q>的测量值来实现。
它支持X门、CNOT门和D门(用于创建贝尔状态)的同态求值,其中控制量子位位于计算基中。在这里,我们重点讨论了本文中出现的X门和CNOT门。对于X门,我们可以令|ψ0> =K |0>, |ψ1> =K |1>,得到
X ∣ ψ 0 ⟩ = ± i ∣ ψ 1 ⟩ , X ∣ ψ 1 ⟩ = ∓ i ∣ ψ 0 ⟩ X|\psi_0\rangle=±i|\psi_1\rangle,X|\psi_1\rangle=∓i|\psi_0\rangle X∣ψ0⟩=±i∣ψ1⟩,X∣ψ1⟩=∓i∣ψ0⟩
对于计算基中有控制量子比特的CNOT门,我们可以验证这一点
C
N
O
T
∣
1
⟩
⊗
∣
ψ
0
⟩
=
±
i
∣
1
⟩
⊗
∣
ψ
1
⟩
,
C
N
O
T
∣
1
⟩
⊗
∣
ψ
1
⟩
=
∓
i
∣
1
⟩
⊗
∣
ψ
0
⟩
CNOT|1\rangle \otimes |\psi_0\rangle=±i|1\rangle\otimes|\psi_1\rangle, CNOT|1\rangle \otimes|\psi_1\rangle=∓i|1\rangle\otimes|\psi_0\rangle
CNOT∣1⟩⊗∣ψ0⟩=±i∣1⟩⊗∣ψ1⟩,CNOT∣1⟩⊗∣ψ1⟩=∓i∣1⟩⊗∣ψ0⟩
由于±i(∓i)是一个整体相,我们可以在测量量子态时去掉它。
秘密共享
在秘密共享(secret sharing)中,通常采用的是 ( t , n ) (t, n) (t,n) 阈值方案,将一个秘密信息分割成 n n n 个部分,分配给 n n n 个参与者,其中任意 t t t 个参与者联合起来可以重构出原始的秘密信息,但是任意 t − 1 t-1 t−1 个或更少的参与者无法获得有关秘密信息的任何信息。在 ( t , n ) (t, n) (t,n) 阈值方案中,参数 t t t 表示了最少需要多少个参与者才能重构出秘密信息,参数 n n n 表示了总共有多少个参与者。
在这样的方案中,通常采用多项式插值法(polynomial interpolation)将秘密信息拆分成 n n n 个部分,即将一个 t t t 次多项式 f ( x ) f(x) f(x) 拆分成 n n n 个点 ( i , f ( i ) ) (i, f(i)) (i,f(i)) 的形式,其中 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n。每个参与者都会获得一个点 ( i , f ( i ) ) (i, f(i)) (i,f(i)),可以根据任意 t t t 个点进行插值,重构出原始的秘密信息。
在插值过程中,参数
r
r
r 通常指的是用于插值的随机数,它满足
r
≠
j
r \neq j
r=j,其中
j
j
j 是用于插值的
t
t
t 个点中的一个。使用
r
r
r 可以避免插值过程中的一些问题,例如避免出现多个解的情况。同时,对于保密性和安全性,使用随机数可以增加攻击者的难度,降低秘密信息被破解的风险。
本节介绍了Shamir提出的阈值为(t, n)的秘密共享方案。在该方案中,它展示了如何将秘密s分成n个片段,使得任何t个片段都可以很容易地恢复s,但即使完全知道t - 1个片段,也不会泄露任何关于s的信息。该方案包括两个算法:
发起者D选择一个t - 1次的随机多项式f (x):
f
(
x
)
=
a
0
+
a
1
+
.
.
.
+
a
t
−
1
x
t
−
1
m
o
d
p
f(x)=a_0+a_1+...+a_{t-1}x^{t-1} mod p
f(x)=a0+a1+...+at−1xt−1modp,秘密
s
=
a
0
s=a_0
s=a0。
a
0
,
a
1
,
…
,
a_0, a_1,…,
a0,a1,…,在有限域F中,p是素数。然后D计算:
s
j
=
f
(
x
j
)
,
j
=
1
,
2
,
.
.
.
s_j = f (x_j),j=1,2,...
sj=f(xj),j=1,2,...,其中xj为当事人Pj的公开信息。最后,该算法输出一个包含n个共享(s1,s2,…,sn)的列表,并将每个共享sj安全地分配给Pj。
秘密重构取任意m (m≥t)个组成部分sj, j∈U = {i1,i2,…,im}, U规模{1,2,…, n}作为输入和输出秘密s,可以得出下式
s
=
∑
j
∈
U
c
j
=
∑
j
∈
U
f
(
x
j
)
∏
r
∈
U
,
r
≠
j
x
r
x
r
−
x
j
m
o
d
p
s=\sum_{j∈U}c_j=\sum_{j∈U}f(x_j)\prod_{r∈U,r≠j}\frac{x_r}{x_r-x_j}mod \space p
s=j∈U∑cj=j∈U∑f(xj)r∈U,r=j∏xr−xjxrmod p
在这个公式中, f ( x j ) f(x_j) f(xj) 是一个 t − 1 t-1 t−1 次多项式 f ( x ) f(x) f(x) 在参与者 j j j 所对应的点 x j x_j xj 的取值,它是秘密共享方案中参与者 j j j 所持有的信息值。这个值的作用是在拉格朗日插值公式中作为已知条件,用于计算多项式在另一个点 x x x 处的取值。具体来说, f ( x j ) f(x_j) f(xj) 是用于计算拉格朗日插值多项式的系数的,它表示多项式在参与者 j j j 的点上的取值。
而分式
∏
r
∈
U
,
r
≠
j
x
r
x
r
−
x
j
\prod_{r\in U, r\neq j} \frac{x_r}{x_r - x_j}
∏r∈U,r=jxr−xjxr 的作用是为拉格朗日插值公式提供了分母部分,用于消除插值过程中的多解问题。这个分式实际上是一个拉格朗日插值公式的分母,它是由参与者
j
j
j 所对应的点
x
j
x_j
xj 和其他
t
−
1
t-1
t−1 个参与者的点
x
r
x_r
xr 组成,其中
r
∈
U
r \in U
r∈U 且
r
≠
j
r \neq j
r=j。这个分式的作用是为拉格朗日插值公式提供了一种权重分配方式,用于计算多项式在其他点上的取值。这个分式的分母部分可以理解为每个参与者所对应的插值多项式的分母,它们的乘积可以消除插值过程中的多解问题,从而保证插值结果的唯一性和正确性。
拉格朗日插值是一种多项式插值方法,用于在一些已知点的基础上,通过一个多项式函数来拟合一个连续函数。它的基本思想是利用已知的数据点,构造一个多项式函数,使得该函数在这些数据点上与实际函数相等,从而在其他点上对实际函数进行逼近。在拉格朗日插值中,我们假设有一组
n
n
n 个数据点
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi),其中
x
i
x_i
xi 是已知的自变量,
y
i
y_i
yi 是相应的函数值。我们要求出一个
n
−
1
n-1
n−1 次多项式
f
(
x
)
f(x)
f(x),使得
f
(
x
)
f(x)
f(x) 在所有数据点上都与实际函数相等。这个多项式可以表示为:
f ( x ) = ∑ i = 0 n − 1 y i L i ( x ) f(x)=\sum_{i=0}^{n-1}y_iL_i(x) f(x)=i=0∑n−1yiLi(x)
其中,
L
i
(
x
)
L_i(x)
Li(x) 是拉格朗日基函数,它的形式为:
L
i
(
x
)
=
∏
j
≠
i
x
−
x
j
x
i
−
x
j
L_i(x)=\prod_{j≠i}\frac{x-x_j}{x_i-x_j}
Li(x)=j=i∏xi−xjx−xj
拉格朗日基函数是一种标准的插值基函数,它可以保证插值多项式在所有已知点上都等于实际函数,并且满足插值多项式的次数小于等于数据点个数减一。这个多项式可以用于近似实际函数在其他点上的取值,从而实现了函数的插值和逼近。拉格朗日插值具有简单、通用、稳定等特点,在计算机科学、数学、物理学等领域得到了广泛应用,例如在数据拟合、信号处理、图像处理、数值计算、差值和秘密共享等方面都有重要的应用。