Anonymous and Efficient Authentication Scheme for Privacy-Preserving Distributed Learning
可译为“一种保护隐私的分布式学习匿名高效认证方案”
最近又看了一篇TISF2022上的文章,这篇文章思想比较简单,但是整体内容挺全的。主要是提出了在分布式学习(也可以看作是联邦学习)中,实现一种保护隐私的匿名高校验证方案。没有用到复杂的密码技术(如同态加密、安全多方计算)、差分隐私等。下面是自己提炼的一些笔记,作为后续回顾用,可能有错误。建议看原文,因为花不了一天就可以读完读懂。
文章目录预览
一、背景介绍
摘要:在分布式学习(Distributed Learning,DL)中,敌手能够通过分析中间参数(传输的模型)来推断出原始数据。目前的解决方案,主要依赖于差分隐私、加密技术(同态加密、安全多方计算)。但差分隐私会降低数据效用,而加密技术的操作是有限的,以及计算和通信成本很高。
本文提出了一种不降低数据效用的前提下,解决隐私问题和匿名认证问题。而且可以结合数据投毒攻击和搭便车攻击的检测方法,更适用于分布式场景。因此,设计了一个基于配对的无证书签名方案,进一步提出了支持动态批量验证的匿名高效认证协议。
1.1 存在问题
- 1)一旦原始数据被恢复,参与者的个人信息就会被公开。因此,有必要保护模型参数不受不可信云服务器的影响。在云服务器端,在不暴露原始参数的情况下实现安全的参与聚合是分布式学习中的挑战。
- 2)采用同态加密、安全多方计算、秘密共享等加密技术设计安全的数据交换/聚合协议,这些方法不适用分布式学习中的所有ML算法,因为它可能只支持有限数的加法和乘法操作。此外,消耗了过多的通信和计算资源。
- 3)差分隐私通过向原始数据或模型参数引入随机噪声来模糊信息。这种随机性降低了数据效用,给ML 模型带来了不必要的精度下降和更长的模型收敛延迟。
主要思想:若DL系统中参与者是匿名的,那么尽管恢复了原始数据,但敌手无法将数据链接到相应的真实身份,从而实现了隐私保护。
主要贡献:
- 1)可以不降低数据效用的情况下,利用匿名身份验证来解决DL中隐私问题,并可以检测数据中毒攻击和搭便车攻击。
- 2)基于配对的密码学基础设计了一个新的无证书签名方案(PCLS)。基于这个签名方案,提出了一种支持批量验证的匿名高效认证协议( AAPBV)。
- 3)设计了一种动态批量验证算法(DBV),可以在批验证过程中动态调整批大小。
- 4)对所提的协议所实现的安全特性提供了形式化的证明和分析。
- 5)进行了大量的模拟以评估协议的计算效率,批量验证耗时减少70%以上。
1.2 系统概况
本文中的参与者和云端服务器与联邦学习中类似,执行相同的功能。只是多了一个完全可信的TA,负责初始化、参与者注册、密钥生成和身份管理。当潜在的恶意参与者上传虚假数据破坏全局模型,TA能识别出参与者真实身份。
1.2.1 安全模型
- 1)云服务器是半城实的:它按照聚合协议进行聚合,但对参与者的私有数据好奇。
- 2)参与者可能是恶意的:合法参与者可以上传错误的模型参数,使遭受数据投毒攻击和搭便车攻击;非法参与者可以伪造签名签署虚假消息,从而使虚假消息通过云认证;参与者对云和另一个参与者之间的传输好奇。
- 3)中间人攻击:攻击者停留云和参与者之间,可以改变云与参与者之间的 通信,使双方认为是直接通信。
- 4)TA是完全可信的:在系统初始化、参与者注册和密钥生成过程中,始终提供可靠的服务。
1.2.2 设计目标
- 1)机密性:保护攻击者不泄露参与者的敏感信息。
- 2)匿名性:包括云在内的任何实体(除了TA)都无法推导出系统参与者的真实身份。
- 3)相互认证:云和参与者之间可以相互验证对方的消息来源。
- 4)不可链接性:任何两个消息传输都不应该链接相同的参与者。意味着攻击者无法验证两个消息是否来自同一参与者。(就是消息和身份之间找不到关联
- 5)不可伪造性:系统中攻击者无法伪造有效地签名来签名消息。
- 6)前向安全:若某个参与者私钥泄露,则该参与者与云之间先前的会话密钥仍是安全的。
- 7)后向安全:若某个参与者私钥泄露,则该参与者与云未来的会话密钥无法泄露。
- 8)不可否认性:当参与者向云更新模型参数时,一旦请求通过身份验证,参与者不能否认它对全局模型做出的贡献。
计算效率:认证协议必须具有计算效率。特别是当一个大规模的DL系统涉及大量参与者时,云可以很高的时间效率对参与者认证。
二、主要内容
本方案的基础是先设计了一个新的无证书签名方案(PCLS),然后再次基础上提出了支持批量验证的匿名高效认证协议(AAPBV),最后设计了动态批量验证算法(DBV)。
2.1 无证书签名方案(PCLS)
相较于典型的无证书签名方案,做了两处修改:1)没有将签名者的真实身份设置为部分公钥,而是使用真实身份的哈希作为部分公钥;2)对签名生成和消息验证进行了修改,以支持批量验证。
- (1)Setup:TA随机选择整数 X T A ∈ Z p ∗ X_{TA}\in\mathbb{Z}^*_p XTA∈Zp∗作为私钥,计算公钥 Y T A = X T A P Y_{TA}=X_{TA}P YTA=XTAP,公开系统信息 ( l , p , P , e , G 1 , G 2 , H 1 , H 2 , Y T A ) (l,p,P,e,\mathbb{G}_1,\mathbb{G}_2,H_1,H_2,Y_{TA}) (l,p,P,e,G1,G2,H1,H2,YTA)。
- (2)Key-Extract:签名者随机选择整数 X ′ ∈ Z p ∗ X'\in\mathbb{Z}^*_p X′∈Zp∗作为部分私钥,则部分公钥为 Y ′ = X ′ P Y'=X'P Y′=X′P。签名者计算 Y ′ ′ = H 1 ( I D ) Y''=H_1(ID) Y′′=H1(ID),并发送给TA,其中ID为真实身份。然后,TA计算 X ′ ′ = X T A Y ′ ′ X''=X_{TA}Y'' X′′=XTAY′′,并发给签名者。最终,签名者的完整私钥为 ( X ′ , X ′ ′ ) (X',X'') (X′,X′′),完整公钥为 ( Y ′ , Y ′ ′ ) (Y',Y'') (Y′,Y′′)。
- (3)Sign:发送消息
m
m
m前,签名者随机选择
r
∈
Z
p
∗
r\in\mathbb{Z}^*_p
r∈Zp∗,并签名消息
k = H 2 ( m ∣ ∣ Y ′ ∣ ∣ Y ′ ′ ∣ Y T A , r P ) . U = X ′ Y T A − X ′ ′ k . k=H_2(m||Y'||Y''|Y_{TA},rP).\\ U=X'Y_{TA}-X''k. k=H2(m∣∣Y′∣∣Y′′∣YTA,rP).U=X′YTA−X′′k.
则签名为 σ = ( k , U ) \sigma=(k,U) σ=(k,U)。 - (4)Verify:自从接收到消息
m
m
m和签名
σ
\sigma
σ,验证
e ( Y ′ , Y T A ) = ? e ( U , P ) e ( Y ′ ′ , Y T A ) k . e(Y',Y_{TA})\overset{\text{?}}{=}e(U,P)e(Y'',Y_{TA})^k. e(Y′,YTA)=?e(U,P)e(Y′′,YTA)k.
若验证通过,则该消息被接收。
2.2 批量验证的匿名高效认证协议(AAPBV)
AAPBV主要包括初始化、注册、认证和批验证四个阶段。如下所示:
- (1)初始化:初始一些双线性配对的信息,与签名方案的Setup一样, X T A X_{TA} XTA作为TA的私钥,公钥为 Y T A = X T A P Y_{TA}=X_{TA}P YTA=XTAP。公开系统参数 ( l , p , P , e , G 1 , G 2 , H 1 , H 2 , H 3 , Y T A ) (l,p,P,e,\mathbb{G}_1,\mathbb{G}_2,H_1,H_2,H_3,Y_{TA}) (l,p,P,e,G1,G2,H1,H2,H3,YTA)。
- (2)注册:参与者和云需要向TA提供真实身份注册。
- 对于云,首先随机选择 X c ′ ∈ Z p ∗ X'_c\in\mathbb{Z}^*_p Xc′∈Zp∗作为私钥,计算公钥 Y c ′ = X c ′ P Y'_c=X'_cP Yc′=Xc′P,然后它通过安全通道发送身份 I D c ID_c IDc给TA,TA计算 Y c ′ ′ = H 1 ( I D c ) , X c ′ ′ = X T A Y c ′ ′ Y''_c=H_1(ID_c), X''_c=X_{TA}Y''_c Yc′′=H1(IDc),Xc′′=XTAYc′′,并返回密钥对 ( X c ′ ′ , Y c ′ ′ ) (X''_c,Y''_c) (Xc′′,Yc′′)给云。最后,云的公钥为 ( Y c ′ , Y c ′ ′ ) (Y'_c,Y''_c) (Yc′,Yc′′),私钥为 ( X c ′ , X c ′ ′ ) (X'_c,X''_c) (Xc′,Xc′′)。
- 类似地,每个参与者 U n U_n Un的公钥为$ ( Y n ′ , Y n ′ ′ ) (Y'_n,Y''_n) (Yn′,Yn′′),私钥为 ( X n ′ , X n ′ ′ ) (X'_n,X''_n) (Xn′,Xn′′)。
- (3)认证:每个参与者
U
n
U_n
Un在更新模型参数
W
n
W_n
Wn到云之前,它先生成
W
n
W_n
Wn的签名
σ
n
\sigma_n
σn。然后,
- 随机选择 r , v ∈ Z p ∗ r,v\in\mathbb{Z}^*_p r,v∈Zp∗;
- 计算 D n = H 2 ( W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ′ ) D_n=H_2(W_n||Y'_n||Y''_n||Y'_c) Dn=H2(Wn∣∣Yn′∣∣Yn′′∣∣Yc′);
- 计算 k n = H 2 ( W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ′ , r P ) k_n=H_2(W_n||Y'_n||Y''_n||Y'_c,rP) kn=H2(Wn∣∣Yn′∣∣Yn′′∣∣Yc′,rP);
- 计算 U n = X n ′ Y T A − X n ′ ′ k n U_n=X'_nY_{TA}-X''_nk_n Un=Xn′YTA−Xn′′kn;
- 签名为 σ = ( k n , U n ) \sigma=(k_n,U_n) σ=(kn,Un);
- 计算 Z n = v P , Z n ′ = v Y c ′ Z_n=vP,Z'_n=vY'_c Zn=vP,Zn′=vYc′;
- 计算 W n ∗ = E n c s ( W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ′ , Z n ) W_n^*=Enc_s(W_n||Y'_n||Y''_n||Y'_c,Z_n) Wn∗=Encs(Wn∣∣Yn′∣∣Yn′′∣∣Yc′,Zn);(后面好像没交代用了什么对称加密)
- 发送更新请求消息
r
e
q
n
=
(
W
n
∗
,
σ
n
,
k
n
,
U
n
,
D
n
,
Z
n
′
)
req_n=(W^*_n,\sigma_n,k_n,U_n,D_n,Z'_n)
reqn=(Wn∗,σn,kn,Un,Dn,Zn′)给云。
当云收到请求 r e q n req_n reqn后,验证消息: - 恢复 Z N = X c ′ − 1 Z n ′ Z_N=X'^{-1}_cZ'_n ZN=Xc′−1Zn′;
- 计算 W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ′ = D e c s ( W n ∗ , Z n ) W_n||Y'_n||Y''_n||Y'_c=Dec_s(W^*_n,Z_n) Wn∣∣Yn′∣∣Yn′′∣∣Yc′=Decs(Wn∗,Zn);
- 检查 D n = ? H 2 ( W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ′ ) D_n\overset{\text{?}}{=}H_2(W_n||Y'_n||Y''_n||Y'_c) Dn=?H2(Wn∣∣Yn′∣∣Yn′′∣∣Yc′)。若等式成立,继续下一步,否则停止;
- 根据PCLS中Verify步骤检查签名 σ n \sigma_n σn的有效性。若有效继续下一步,否则拒绝;
- 云为下一步建立会话密钥 S n 1 = H 3 ( D n ∣ ∣ W n ∣ ∣ Z n ) S^1_n=H_3(D_n||W_n||Z_n) Sn1=H3(Dn∣∣Wn∣∣Zn),后续会话密钥计算为 S n j + 1 = H 3 ( S n j ∣ ∣ Z n ) , ∀ j ≥ 1 S^{j+1}_n=H_3(S^j_n||Z_n),\forall j\geq1 Snj+1=H3(Snj∣∣Zn),∀j≥1。
注意,云可以结合现有的检查方案,检查出投毒攻击和搭便车攻击。
- (4)批量验证:对于请求列表
R
=
{
r
e
q
n
=
(
W
n
∗
,
σ
n
,
k
n
,
U
n
,
D
n
,
Z
n
′
)
}
n
=
1
N
\mathcal{R}=\{req_n=(W^*_n,\sigma_n,k_n,U_n,D_n,Z'_n)\}^N_{n=1}
R={reqn=(Wn∗,σn,kn,Un,Dn,Zn′)}n=1N,批量验证根据以下公式判断:
e ( ∑ n = 1 N Y n ′ , Y T A ) = ? e ( ∑ n = 1 N U n , P ) e ( ∑ n = 1 N k n Y n ′ ′ , Y T A ) . e(\sum^N_{n=1}Y'_n,Y_{TA})\overset{\text{?}}{=}e(\sum^N_{n=1}U_n,P)e(\sum^N_{n=1}k_nY''_n,Y_{TA}). e(n=1∑NYn′,YTA)=?e(n=1∑NUn,P)e(n=1∑NknYn′′,YTA).
若上式成立,签名列表都有效。否则,云启动DBV算法去查找合适的批处理大小并重新进行批处理验证。如下算法所示:
算法的主要思想是:
- 1)云选择一个验证率 ϵ ∈ ( 0 , 1 ) \epsilon\in(0,1) ϵ∈(0,1),并从 R \mathcal{R} R中随机选择 M = ϵ N M=\epsilon N M=ϵN个请求。这 M M M个请求再通过上式批量验证;
- 2)若还未通过,云则重复上述步骤,但最多不超过 η \eta η次。
- 3)若所有 η \eta η次都失败了,云继续调小批量验证的大小 M = ϵ M M=\epsilon M M=ϵM,并重复算法1中的3-15行步骤,直到批量验证大小 M < λ N , λ ∈ ( 0 , 1 ) M<\lambda N,\lambda \in(0,1) M<λN,λ∈(0,1),其中 λ \lambda λ为批处理大小的阈值系数。
(其中 ϵ \epsilon ϵ就是查找假消息的“步长”)
三、安全分析和性能评估
正确性主要根据双线性映射的性质来证明。
3.1 安全分析
- 1)不可伪造性:在CDHP假设下,所提出的PCLS对选择的消息是不可伪造性的;
- 2)保密性:在DDHP假设下,提出的AAPBV对所选密文攻击是保密的。云可以揭示参与者的公钥 ( Y n ′ , Y n ′ ′ ) (Y'_n,Y''_n) (Yn′,Yn′′),并检查 D n = ? H 2 ( W n ∣ ∣ Y n ′ ∣ ∣ Y n ′ ′ ∣ ∣ Y c ) D_n\overset{\text{?}}{=}H_2(W_n||Y'_n||Y''_n||Y_c) Dn=?H2(Wn∣∣Yn′∣∣Yn′′∣∣Yc)来判断消息是否被修改。因此,AAPBV实现了保密性和完整性。
- 3)不可链接性:在DLP假设下,提出的AAPBV实现了不可链接性。系统中的恶意参与者无法将消息链接到特定的参与者。由于云可以恢复参与者的公钥,它可以基于其公钥将请求链接到参与者。然而,由于云的匿名性,它无法揭示自己的真实身份。因此,从恶意参与者的角度实现了不链接。
- 4)匿名性:整个过程中,参与者的真实身份不涉及认证和传输。虽然参与者的部分公钥 Y n ′ ′ Y''_n Yn′′是由真实身份生成,但由于哈希函数的单向性,云和其他参与者不能从 Y n ′ ′ Y''_n Yn′′中揭示真实身份。
- 5)相互认证:一方面,云能用它的私钥 X c ′ X'_c Xc′和参与者的公钥 ( Y n ′ , Y n ′ ′ ) (Y'_n,Y''_n) (Yn′,Yn′′)进行身份验证。特别的,云用 X c ′ X'_c Xc′揭示 Z n Z_n Zn,并从中获得 ( Y n ′ , Y n ′ ′ ) (Y'_n,Y''_n) (Yn′,Yn′′)。另一方面,参与者可以对云进行认证。由于为下一次传输建立了会话密钥,因此参与者只要能够使用会话密钥解密消息,就可以验证消息来自云。从而实现了相互认证。
- 6)防中间人攻击:若参与者向云发送 r e q n req_n reqn时,攻击者窃听并修改 r e q n req_n reqn中的 W n , v , r W_n,v,r Wn,v,r值,云可以验证该请求是否成功。然后,云根据修改后的 W n W_n Wn计算会话密钥,用会话密钥加密消息,并发送回攻击者。攻击者转发消息给参与者,它的会话密钥在解密消息时无效,则判断消息不是来自云。
- 7)前向安全:认证成功后,会话密钥建立为 S n j + 1 = H 3 ( S n j ∣ ∣ Z n ) S^{j+1}_n=H_3(S^j_n||Z_n) Snj+1=H3(Snj∣∣Zn)。即使参与者的私钥被泄露,当前的会话密钥被泄露,由于哈希函数的单向属性,之前的会话密钥也无法恢复。
- 8)后向安全:认证成功后,会话密钥建立为 S n j + 1 = H 3 ( S n j ∣ ∣ Z n ) S^{j+1}_n=H_3(S^j_n||Z_n) Snj+1=H3(Snj∣∣Zn)。由于会话密钥是基于当前会话密钥和 Z n Z_n Zn生成的,即使泄露了当前会话密钥 S n j S^j_n Snj,但由于 Z n Z_n Zn的保密性,未来的会话密钥不会被泄露。
- 9)不可抵赖性:参与者使用其签名对消息进行签名,且签名不可伪造。因此,一旦消息被验证,由于签名的不可伪造性,参与者不能否认它已经发送了消息。此外,当检测到合法参与者上传虚假数据时,云可以用它的公钥链接到参与者,并将公钥发送给TA。TA可以通过搜索不良行为参与者的记录来揭示其真实身份。从而达到了不可抵赖性的设计目标。
3.2 性能评估
使用安全级别为1024bit RSA,曲线 y 2 = x 3 + x y^2=x^3+x y2=x3+x,嵌入度 k = 2 k=2 k=2。实验平台为PBC和GMP加密库,采用Inter® Core™ I7-4770 3.4GHz, 16GB内存,Linux系统搭建。通过在BCD数据集上实现支持向量机来评估AAPBV中的DBV。
在AAPBV中,求幂、乘法和配对主导了计算开销,值评估计算效率的三种操作。其中
t
e
=
1.5
m
s
t_e=1.5 ms
te=1.5ms为
G
2
\mathbb{G}_2
G2中一次幂运算的时间消耗,
t
m
=
15.175
m
s
t_m=15.175ms
tm=15.175ms为
G
1
\mathbb{G}_1
G1一次乘法运算的时间消耗,
t
p
=
18.06
m
s
t_p=18.06ms
tp=18.06ms为一次配对运算的时间消耗。下图显示了AAPBV不同阶段的性能与其他方案的对比。
总结:AAPBV在单次验证不具有优势,是因为为支持批量验证和要保证更多的安全特性。但在批验证中具有最佳的时间效率。
为了评估DBV的性能,考虑原始批处理大小为100,假设5条无效消息。在我们的协议中,丢弃消息的数量显著减少。由于批验证中丢弃的消息较少,全局模型收敛,迭代次数较少,如下图。
安全特性的对比,本方案可以满足大部分安全属性。
此外,利用所实现的安全特性,所提出的AAPBV可以与现有的防御方案[7]-[9]集成,检测数据中毒攻击和搭便车攻击。具体来说,在接收到请求 r e q n req_n reqn并揭示 W n W_n Wn之后,云就可以部署检测算法,通过分析 W n W_n Wn的明文。
一旦检测到一个参与者上传了有毒的ML模型,TA可以根据其公钥揭示其真实身份。因此,该集成方案在使云检测数据中毒攻击和搭便车攻击的同时,保护参与者的隐私方面具有很好的前景。(没有详细说如何结合,介绍的有点少。这篇文章重点是做验证效率实验,对于分布式学习(或联邦学习)的精度和收敛效果较少,以及攻击规模没有做分析)