论文地址:https://xueshu.baidu.com/usercenter/paper/show?paperid=1b7e04e0r41x0ax0976q0gy0m5242465
摘要
提出了一种新颖的两方纵向联邦逻辑回归协议,并在半诚实安全模型下证明了该协议的安全性, 包括模型训练流程和模型推理流程的安全性,且无需对非线性函数使用多项式近似计算,从而保证了联邦逻辑回归协议模型无损。
论文知识要点
1、同态加密:一类满足在密文空间上进行运算的密码学方法。可分为半同态、部分同态、全同态。本文用到的是加法半同态。例如Paillier加密算法。在初始化阶段,Paillier加密算法生成秘钥对 < p k , s k > <pk, sk> <pk,sk>。其中,公钥 p k pk pk用于加密,并且可以公开。私钥 s k sk sk用于解密,不可公开。
- 加密: E n c ( x , p k ) → ⟦ x ⟧ Enc(x, pk) \to \llbracket x \rrbracket Enc(x,pk)→[[x]]
- 解密: D e c ( ⟦ x ⟧ , s k ) → x Dec(\llbracket x \rrbracket , sk) \to x Dec([[x]],sk)→x
- 同态加法: H A d d ( ⟦ x ⟧ , ⟦ y ⟧ ) → ⟦ z ⟧ HAdd(\llbracket x \rrbracket, \llbracket y \rrbracket) \to \llbracket z \rrbracket HAdd([[x]],[[y]])→[[z]],其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x + y Dec(\llbracket z \rrbracket, sk) = x+y Dec([[z]],sk)=x+y
- 标量加法: S A d d ( ⟦ x ⟧ , y ) → ⟦ z ⟧ SAdd(\llbracket x \rrbracket, y)\to \llbracket z \rrbracket SAdd([[x]],y)→[[z]]其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x + y Dec(\llbracket z \rrbracket, sk) = x+y Dec([[z]],sk)=x+y
- 标量乘法: S M u l ( x , ⟦ y ⟧ ) → ⟦ z ⟧ SMul(x, \llbracket y \rrbracket) \to \llbracket z \rrbracket SMul(x,[[y]])→[[z]]其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x × y Dec(\llbracket z \rrbracket, sk) = x\times y Dec([[z]],sk)=x×y
以上这些同态加密运算同样适用矩阵运算。
2、秘密分享:将一 个数值拆分为多个秘密,并将每份秘密分发至不同的 参与方,使得所有参与方都无法得知真正的数值。例如:数值
x
x
x可被秘密分享为
<
x
A
,
x
B
>
<x_A, x_B>
<xA,xB>,满足
x
A
+
x
B
=
x
x_A+x_B=x
xA+xB=x。并且,秘密分享一般在群空间执行计算,例如整数加法群。
但是本文使用的秘密分享其实是引入了一个噪声,如下文中的
ϵ
、
U
\epsilon、U
ϵ、U。
LR算法与联邦安全分析
逻辑回归模型:
y
=
s
i
g
m
o
i
d
(
Z
)
,其中
Z
=
W
X
+
b
,
s
i
g
m
o
i
d
(
⋅
)
=
1
1
+
e
−
Z
y=sigmoid(Z),其中Z=WX+b, sigmoid(·)=\frac{1}{1+e^{-Z}}
y=sigmoid(Z),其中Z=WX+b,sigmoid(⋅)=1+e−Z1
对于联邦逻辑回归模型,如两方:参与方A和参与B,其
Z
=
W
A
X
A
+
W
B
X
B
Z=W_AX_A+W_BX_B
Z=WAXA+WBXB。
逻辑回归的训练目标是寻找最小化损失函数值的模型参数
W
A
∗
,
W
B
∗
=
arg min
W
A
,
W
B
L
(
y
^
,
y
)
,
L
(
y
^
,
y
)
=
∑
i
=
1
N
(
y
i
l
o
g
y
^
i
+
(
1
−
y
i
)
l
o
g
(
1
−
y
^
i
)
)
W_A^*,W_B^*=\displaystyle\argmin_{W_A,W_B}L(\hat y, y),\quad L(\hat y, y)=\displaystyle\sum_{i=1}^N(y_ilog\hat y_i+(1-y_i)log(1-\hat y_i))
WA∗,WB∗=WA,WBargminL(y^,y),L(y^,y)=i=1∑N(yilogy^i+(1−yi)log(1−y^i))小批量随机梯度下降算法
∇
W
P
(
b
)
=
∂
L
(
y
^
(
b
)
,
y
(
b
)
)
∂
W
P
=
1
B
S
X
P
T
(
b
)
∇
Z
(
b
)
,
其中
∇
Z
(
b
)
=
∂
L
(
y
^
(
b
)
,
y
(
b
)
)
∂
Z
=
y
^
(
b
)
−
y
(
b
)
\nabla W_P^{(b)}=\frac{\partial L(\hat y^{(b)}, y^{(b)})}{\partial W_P}=\frac{1}{BS}X_P^{T(b)}\nabla Z^{(b)},\quad 其中\nabla Z^{(b)}=\frac{\partial L(\hat y^{(b)}, y^{(b)})}{\partial Z}=\hat y^{(b)}-y^{(b)}
∇WP(b)=∂WP∂L(y^(b),y(b))=BS1XPT(b)∇Z(b),其中∇Z(b)=∂Z∂L(y^(b),y(b))=y^(b)−y(b)
B
S
BS
BS表示一个批次
(
b
)
(b)
(b)中的样本数,P方的模型更新为:
W
P
=
W
P
−
η
∇
W
P
(
b
)
W_P=W_P-\eta\nabla W_P^{(b)}
WP=WP−η∇WP(b)
在上述过程中涉及到的一些中间变量:
W
A
,
W
B
,
W
A
X
A
,
W
B
X
B
,
Z
,
y
^
,
∇
Z
,
∇
W
A
,
∇
W
B
W_A,W_B,W_AX_A,W_BX_B,Z,\hat y,\nabla Z, \nabla W_A,\nabla W_B
WA,WB,WAXA,WBXB,Z,y^,∇Z,∇WA,∇WB。在联邦逻辑回归过程中这些变量都是需要保护的变量。由于在前向计算过程中
y
^
=
s
i
g
m
o
i
d
(
Z
)
\hat y=sigmoid(Z)
y^=sigmoid(Z),所以
Z
Z
Z和
y
^
\hat y
y^的安全性是等价的,保护了
Z
Z
Z,
y
^
\hat y
y^就是安全的。假设标签信息属于参与方B,则参与方A不能有任何分析标签信息的可能性,因此在前向计算的过程中参与方不能知道有关计算
y
^
\hat y
y^的所有变量:
W
A
X
A
,
W
B
X
B
,
Z
W_AX_A,W_BX_B,Z
WAXA,WBXB,Z。如下图是参与方A在获取
W
A
X
A
W_AX_A
WAXA的情况下分析参与方B的标签信息。
对于参与方B,也不能知道
W
A
X
A
,
W
B
X
B
W_AX_A,W_BX_B
WAXA,WBXB,因为
Z
Z
Z是参与方B必然知道的数据,如果同时也知道
W
B
X
B
W_BX_B
WBXB,那么通过
Z
−
W
B
X
B
Z-W_BX_B
Z−WBXB就可以推导出
W
A
X
A
W_AX_A
WAXA。
反向计算的过程中,由于
∇
Z
=
y
^
−
y
\nabla Z = \hat y - y
∇Z=y^−y它的符号与标签信息y有直接关系,所以为了保护参与方B的标签信息,参与方A不能知道
∇
Z
\nabla Z
∇Z。由于模型梯度中每个坐标的相对数值大小可以分析每个特征的重要性,从而对参与方B的标签信息进行推断。综上所述,参与方A、B不应获取的变量如下:
参与方A不应获得 | 参与方B不应获得 | |
---|---|---|
模型参数 | W A W_A WA、 W B W_B WB | W A W_A WA、 W B W_B WB |
前向计算 | W A X A W_AX_A WAXA、 W B X B W_BX_B WBXB、 Z Z Z | W A X A W_AX_A WAXA、 W B X B W_BX_B WBXB |
反向计算 | ∇ W A \nabla W_A ∇WA、 ∇ W B \nabla W_B ∇WB、 ∇ Z \nabla Z ∇Z | ∇ W A \nabla W_A ∇WA |
本文算法联邦逻辑回归算法
1、模型参数初始化
- 参与方A生成大整数 σ a \sigma_a σa,且 σ a > I N A ( A 方特征维度 ) \sigma_a > IN_A(A方特征维度) σa>INA(A方特征维度),最后发送给参与方B
- 参与方B生成大整数 σ b \sigma_b σb,且 σ b > I N B ( B 方特征维度 ) \sigma_b > IN_B(B方特征维度) σb>INB(B方特征维度),最后发送给参与方A
- 参与方A生成 V B ′ V_B' VB′,并用自己的秘钥加密成 ⟦ V B ′ ⟧ A \llbracket V_B' \rrbracket_A [[VB′]]A,然后发送给参与方B。
- 参与方B生成 V A ′ V_A' VA′,并用自己的秘钥加密成 ⟦ V A ′ ⟧ B \llbracket V_A' \rrbracket_B [[VA′]]B,然后发送给参与方A。
- 参与方A从 ⟦ V A ′ ⟧ B \llbracket V_A' \rrbracket_B [[VA′]]B选择 I N A IN_A INA个密文作为 ⟦ V A ⟧ B \llbracket V_A \rrbracket_B [[VA]]B,同时参与方B从 ⟦ V B ′ ⟧ A \llbracket V_B' \rrbracket_A [[VB′]]A选择 I N B IN_B INB个密文作为 ⟦ V B ⟧ A \llbracket V_B \rrbracket_A [[VB]]A。如此参与双方都不知道对方的特征维度。
- 参与方A生成
U
A
U_A
UA,将其和
⟦
V
A
⟧
B
\llbracket V_A \rrbracket_B
[[VA]]B进行求和得到
⟦
W
A
⟧
B
\llbracket W_A \rrbracket_B
[[WA]]B。同时参与方B生成
U
B
U_B
UB,得到二元组
<
U
B
,
⟦
V
B
⟧
A
>
<U_B, \llbracket V_B \rrbracket_A>
<UB,[[VB]]A>
如下图为整个模型初始化过程:
2、模型的前向计算
假设每个小批量的训练数据记为
X
A
、
X
B
X_A、X_B
XA、XB
- 参与方A计算 X A ⟦ W A ⟧ B = ⟦ X A W A ⟧ B X_A\llbracket W_A \rrbracket_B = \llbracket X_AW_A \rrbracket_B XA[[WA]]B=[[XAWA]]B,然后生成一个随机数 ϵ A \epsilon_A ϵA, ⟦ X A W A ⟧ B \llbracket X_AW_A \rrbracket_B [[XAWA]]B引入噪声得到 ⟦ X A W A ⟧ B − ϵ \llbracket X_AW_A \rrbracket_B-\epsilon [[XAWA]]B−ϵ,并将其发送给参与方B,B对其进行解密得到$ X_AW_A -\epsilon$。
- 参与方B计算 X B ⟦ V B ⟧ A = ⟦ X B V B ⟧ A X_B\llbracket V_B \rrbracket_A = \llbracket X_BV_B \rrbracket_A XB[[VB]]A=[[XBVB]]A,然后生成一个随机数 ϵ B \epsilon_B ϵB, ⟦ X B V B ⟧ A \llbracket X_BV_B \rrbracket_A [[XBVB]]A引入噪声得到 ⟦ X B V B ⟧ A − ϵ B \llbracket X_BV_B \rrbracket_A-\epsilon_B [[XBVB]]A−ϵB,并将其发送给参与方A,A对其进行解密得到 X B V B − ϵ B X_BV_B-\epsilon_B XBVB−ϵB。
- 参与方A计算 Z A ′ = ( X B V B − ϵ B ) + ϵ A Z_A'=(X_BV_B-\epsilon_B)+\epsilon_A ZA′=(XBVB−ϵB)+ϵA;参与方B计算 Z B ′ = ( X A W B − ϵ A ) + X B U B + ϵ B Z_B'=(X_AW_B-\epsilon_A)+X_BU_B+\epsilon_B ZB′=(XAWB−ϵA)+XBUB+ϵB。
- 参与方A将
Z
A
′
Z_A'
ZA′发送给参与方B,参与方B计算得到
Z
=
Z
A
′
+
Z
B
′
=
(
(
X
B
V
B
−
ϵ
B
)
+
ϵ
A
)
+
(
(
X
A
W
B
−
ϵ
A
)
+
X
B
U
B
+
ϵ
B
)
=
X
A
W
A
+
X
B
W
B
Z=Z_A'+Z_B'=((X_BV_B-\epsilon_B)+\epsilon_A)+((X_AW_B-\epsilon_A)+X_BU_B+\epsilon_B)=X_AW_A+X_BW_B
Z=ZA′+ZB′=((XBVB−ϵB)+ϵA)+((XAWB−ϵA)+XBUB+ϵB)=XAWA+XBWB,以及计算明文预测值
y
^
=
s
i
g
m
o
i
d
(
Z
)
\hat y=sigmoid(Z)
y^=sigmoid(Z)
如下图为前向计算过程
3、模型的反向计算 - 参与方B计算明文偏导 ∇ Z = y ^ − y \nabla Z=\hat y - y ∇Z=y^−y,并加密 − ∇ Z = ⟦ − ∇ Z ⟧ B -\nabla Z=\llbracket -\nabla Z\rrbracket_B −∇Z=[[−∇Z]]B,然后将密文发送给参与方A
- 参与方A根据密文偏导 ⟦ − ∇ Z ⟧ B \llbracket -\nabla Z\rrbracket_B [[−∇Z]]B计算模型密文梯度 ⟦ − ∇ W A ⟧ B = X A T ⟦ − ∇ Z ⟧ B \llbracket -\nabla W_A\rrbracket_B=X_A^T\llbracket -\nabla Z\rrbracket_B [[−∇WA]]B=XAT[[−∇Z]]B。参与方B直接计算明文梯度 ∇ W B = X B T ∇ Z \nabla W_B=X_B^T\nabla Z ∇WB=XBT∇Z
- 计算完成之后参与双方则更新梯度,参与方A进行密文状态下的更新
⟦
W
A
⟧
B
=
⟦
W
A
⟧
B
+
η
⟦
−
∇
W
A
⟧
B
\llbracket W_A \rrbracket_B=\llbracket W_A \rrbracket_B + \eta\llbracket -\nabla W_A \rrbracket_B
[[WA]]B=[[WA]]B+η[[−∇WA]]B
。参与方B则只更新模型二元组中的
U B = U B − η ∇ W B U_B=U_B-\eta\nabla W_B UB=UB−η∇WB`即可(原因见下图红字)。
如下图为后向计算过程
总结
本文提出的联邦逻辑回归算法实现,主要研究的两方的联邦,但在安全性分析中说明在多方场景中,只要不超过一方不诚实的情况也是安全。
本文的实现逻辑并不复杂,主要贡献在提出了本文的这种实现逻辑,并论证该逻辑在指定场景下保护了多方的数据安全性。