Practical Secure Aggregation for Privacy-Preserving Machine Learning
以下所有内容均为随问题的逐渐深入作为发展主线🤠 参见大佬此文
我的参考文件全部在这里
一、为什么是Federating Learning?
旧有的CHML方法直接传递用户隐私数据,这样远不如FL只传递训练后的模型梯度向量好
二、Secure Aggregation方案 (依赖 两个Mask)
(一)、Antiparticles(Public Mask)
简单来讲就是,两两client交换一个随机数,最后在server端正负相加抵消随机数
缺点:
- 通信复杂度较高
- 用户掉线不可行
- 无认证
1、DH+PRNG Expansion(随机数是标量,如何解决梯度向量维数大的问题?)
系统参数:g(生成元)p(模数 大素数)
用户参数:各用户保有一个秘密数,在这里对应 a、b 、c。用户分别计算:
使用时,用户将其发布到server端,由server分发到各个用户
这样两两用户之间就有了他们唯一的会话密钥。配合PRNG Expansion可以轻松的实现随机数的秘密交换。
这样做的好处是:
- 随机数生成器十分高效
- 更少的秘密因素-更简洁的秘密恢复
- 手机这样的移动端一般不支持端到端通信
2、k-out-of-n Threshold Secret Sharing(用户突然掉线怎么办?)
k-n门限秘密共享可通过多种方式实现,好处是可以从理论上保证安全。 任意少于k个用户的秘密份额都无法恢复出秘密S。
在这里每一个用户都运行一个k-n门限秘密共享,将自己的g^a作为秘密进行秘密共享,每个用户都得到了一份其他用户的秘密份额。
这样如图中所示,Bob突然掉线后,Alice和Carol可以通过自己手中Bob的秘密份额对Bob的g^b进行恢复,这样通过,server就可以求出public mask。
(二)、Individual Mask
但要是有用户迟了怎么办?server知道了Antiparticles,那么就可以恢复Bob的秘密,Bob信息就不再安全了。
每个用户还生成一个Individual Mask :Ia Ib Ic,对其进行秘密共享,每个用户都拿到了这样的一个秘密份额。当server发现无法进行安全聚合时,会向在线用户征集Public Mask Individual Mask的秘密份额。
通过秘密重构算法,我们可以恢复出public mask,individual mask值各为多少,这样我们就解决了用户迟到后所带来的隐私泄露风险。
三、算法具体实现
(一)、算法的核心部分包括
- DH密钥交换协议
- 基于多项式或中国剩余定理的k-n门限秘密共享算法
- hash算法(用作随机数生成)
- Mac算法(用作数字签名)
(二)、算法核心步骤
- 系统参数协商
- 密钥共享
- 梯度向量信息加密上传
- 梯度信息安全聚合解密
(三)、论文中具体步骤
1、Setup
- 所有参与训练的client,server都会收到安全参数
,各个client诚实的用来生成DH的相关参数
- 参数
和
,,如
就是模型梯度向量.
- 规定秘密分享协议中的数值
和阈值
。
- 每个客户端和服务器有一个经过身份验证的通道。
- 所有客户端
从可信第三方针获得一个签名私钥
和一个验证密钥
用来绑定个人身份
PS:这里的安全参数应该就是安全素数,是生成元,
应该就是DH密钥交换协议中的
之类
2、AdvertiseKeys
-client
- 生成两对公私钥
,并且对这两个公钥进行签名
- 将生成的两个公钥,连同签名结果即
,通过经过验证的通道发送给服务器。
-server
- 收集至少
条信息,并将这些clients集合称为
,否则,中断.
- 广播
和签名信息
PS:时刻检查client数量是否小于.使用CA认证和签名算法是为了防止伪造信息.
3、ShareKeys
-client
- 收到
列表信息,对列表长度进行检验,小于
或者签名算法验证不通过则中断,即
and
.
- 使用随机数发生器,用
作为随机数种子,生成随机数
。
- 通过秘密共享算法生成
和
的分享内容(shares):
-server
- 收集至少
个用户的加密文本信息,并将参加此次过程的用户集合称为
- 将加密文本列表加密传送给
PS:这里的应该就是public mask,
就是individual mask
4、MaskInputCollection
-client
- 用户从服务器接收(并存储)密文列表
(并推断集合
)。如果列表大小小于t,则中止。
- 对于其他用户
,计算
并使用
将该值扩展为随机向量
,其中当
时
,当
时
(注意
)。另外,定义
。
- 计算用户自己的私有掩码向量
。然后,计算屏蔽输入向量
- 如果上述任何操作(密钥协商,
)失败,则中止。否则,将
发送到服务器并移动到下一轮。
-server
从至少
个用户收集
(用
表示这组用户)。向
中的每个用户发送列表
。
5、ConsistentCheck
-client
从服务器接收至少由
个用户(包括其自身)组成的列表
。如果
小于
,则中止。
- 发送
到服务器。z’d
-server
从至少个用户处收集
(用
表示这组用户)。向
中的每个用户发送集合
。
6、Unmasking
-client
- 从服务器接收一个列表
。验证
,
和信号版本
表示所有
(否则中止)。
- 对于
中的每个其他用户
,解密密文
,并断言
。
- 如果任何解密操作失败(尤其是密文未正确验证),则中止。
- 向服务器发送共享列表,其中包括用户
的
和用户
的
。
-server
- 收集至少
个用户的响应(用
表示这组用户)。
- 对于
中的每个用户,重构
并使用它(连同在AdvertiseKeys中接收的公钥)使用
重新计算所有
的
。
- 对于每个用户
,重构
,然后使用
重新计算
。
- 计算并输出
为
。