Practical Secure Aggregation for Privacy-Preserving Machine Learning

以下所有内容均为随问题的逐渐深入作为发展主线🤠 参见大佬此文

我的参考文件全部在这里

点击查看【bilibili】

一、为什么是Federating Learning?

联邦学习 SMPC - 图1

旧有的CHML方法直接传递用户隐私数据,这样远不如FL只传递训练后的模型梯度向量好

二、Secure Aggregation方案 (依赖 两个Mask)

(一)、Antiparticles(Public Mask)

联邦学习 SMPC - 图2

简单来讲就是,两两client交换一个随机数,最后在server端正负相加抵消随机数

缺点:

  1. 通信复杂度较高
  2. 用户掉线不可行
  3. 无认证

1、DH+PRNG Expansion(随机数是标量,如何解决梯度向量维数大的问题?)

系统参数:g(生成元)p(模数 大素数)

用户参数:各用户保有一个秘密数,在这里对应 a、b 、c。用户分别计算:

联邦学习 SMPC - 图3

使用时,用户将其发布到server端,由server分发到各个用户

联邦学习 SMPC - 图4

这样两两用户之间就有了他们唯一的会话密钥。配合PRNG Expansion可以轻松的实现随机数的秘密交换。

这样做的好处是:

  1. 随机数生成器十分高效
  2. 更少的秘密因素-更简洁的秘密恢复
  3. 手机这样的移动端一般不支持端到端通信

2、k-out-of-n Threshold Secret Sharing(用户突然掉线怎么办?)

k-n门限秘密共享可通过多种方式实现,好处是可以从理论上保证安全。 任意少于k个用户的秘密份额都无法恢复出秘密S。

在这里每一个用户都运行一个k-n门限秘密共享,将自己的g^a作为秘密进行秘密共享,每个用户都得到了一份其他用户的秘密份额。

联邦学习 SMPC - 图5

联邦学习 SMPC - 图6

这样如图中所示,Bob突然掉线后,Alice和Carol可以通过自己手中Bob的秘密份额对Bob的g^b进行恢复,这样通过联邦学习 SMPC - 图7,server就可以求出public mask。

(二)、Individual Mask

但要是有用户迟了怎么办?server知道了Antiparticles,那么就可以恢复Bob的秘密,Bob信息就不再安全了。

联邦学习 SMPC - 图8

每个用户还生成一个Individual Mask :Ia Ib Ic,对其进行秘密共享,每个用户都拿到了这样的一个秘密份额。当server发现无法进行安全聚合时,会向在线用户征集Public Mask Individual Mask的秘密份额。

联邦学习 SMPC - 图9

联邦学习 SMPC - 图10

通过秘密重构算法,我们可以恢复出public mask,individual mask值各为多少,这样我们就解决了用户迟到后所带来的隐私泄露风险。

三、算法具体实现

(一)、算法的核心部分包括

  1. DH密钥交换协议
  2. 基于多项式或中国剩余定理的k-n门限秘密共享算法
  3. hash算法(用作随机数生成)
  4. Mac算法(用作数字签名)

(二)、算法核心步骤

  1. 系统参数协商
  2. 密钥共享
  3. 梯度向量信息加密上传
  4. 梯度信息安全聚合解密

(三)、论文中具体步骤


联邦学习 SMPC - 图11

1、Setup

  • 所有参与训练的client,server都会收到安全参数联邦学习 SMPC - 图12,各个client诚实的用来生成DH的相关参数联邦学习 SMPC - 图13
  • 参数联邦学习 SMPC - 图14联邦学习 SMPC - 图15,,如联邦学习 SMPC - 图16就是模型梯度向量.
  • 规定秘密分享协议中的数值联邦学习 SMPC - 图17和阈值联邦学习 SMPC - 图18
  • 每个客户端和服务器有一个经过身份验证的通道。
  • 所有客户端联邦学习 SMPC - 图19从可信第三方针获得一个签名私钥联邦学习 SMPC - 图20和一个验证密钥联邦学习 SMPC - 图21用来绑定个人身份

PS:这里的安全参数联邦学习 SMPC - 图22应该就是安全素数,是生成元,联邦学习 SMPC - 图23应该就是DH密钥交换协议中的联邦学习 SMPC - 图24之类

2、AdvertiseKeys

-client

  • 生成两对公私钥联邦学习 SMPC - 图25,并且对这两个公钥进行签名联邦学习 SMPC - 图26
  • 将生成的两个公钥,连同签名结果即联邦学习 SMPC - 图27,通过经过验证的通道发送给服务器。

-server

  • 收集至少联邦学习 SMPC - 图28条信息,并将这些clients集合称为联邦学习 SMPC - 图29,否则,中断.
  • 广播联邦学习 SMPC - 图30和签名信息联邦学习 SMPC - 图31

PS:时刻检查client数量是否小于联邦学习 SMPC - 图32.使用CA认证和签名算法是为了防止伪造信息.

3、ShareKeys

-client

  • 收到联邦学习 SMPC - 图33列表信息,对列表长度进行检验,小于联邦学习 SMPC - 图34或者签名算法验证不通过则中断,即联邦学习 SMPC - 图35 and 联邦学习 SMPC - 图36.
  • 使用随机数发生器,用联邦学习 SMPC - 图37作为随机数种子,生成随机数联邦学习 SMPC - 图38
  • 通过秘密共享算法生成联邦学习 SMPC - 图39联邦学习 SMPC - 图40的分享内容(shares):

联邦学习 SMPC - 图41
联邦学习 SMPC - 图42
-server

  • 收集至少联邦学习 SMPC - 图43个用户的加密文本信息,并将参加此次过程的用户集合称为联邦学习 SMPC - 图44
  • 将加密文本列表加密传送给

PS:这里的联邦学习 SMPC - 图45应该就是public mask,联邦学习 SMPC - 图46就是individual mask

4、MaskInputCollection

-client

  • 用户从服务器接收(并存储)密文列表联邦学习 SMPC - 图47(并推断集合联邦学习 SMPC - 图48)。如果列表大小小于t,则中止。
  • 对于其他用户联邦学习 SMPC - 图49,计算联邦学习 SMPC - 图50并使用联邦学习 SMPC - 图51将该值扩展为随机向量联邦学习 SMPC - 图52,其中当联邦学习 SMPC - 图53联邦学习 SMPC - 图54,当联邦学习 SMPC - 图55联邦学习 SMPC - 图56(注意联邦学习 SMPC - 图57)。另外,定义联邦学习 SMPC - 图58
  • 计算用户自己的私有掩码向量联邦学习 SMPC - 图59。然后,计算屏蔽输入向量联邦学习 SMPC - 图60
  • 如果上述任何操作(密钥协商,联邦学习 SMPC - 图61)失败,则中止。否则,将联邦学习 SMPC - 图62发送到服务器并移动到下一轮。

-server

  • 从至少联邦学习 SMPC - 图63个用户收集联邦学习 SMPC - 图64(用联邦学习 SMPC - 图65表示这组用户)。向联邦学习 SMPC - 图66中的每个用户发送列表联邦学习 SMPC - 图67

    5、ConsistentCheck

    -client

  • 从服务器接收至少由联邦学习 SMPC - 图68个用户(包括其自身)组成的列表联邦学习 SMPC - 图69。如果联邦学习 SMPC - 图70小于联邦学习 SMPC - 图71,则中止。

  • 发送联邦学习 SMPC - 图72到服务器。z’d

-server
从至少联邦学习 SMPC - 图73个用户处收集联邦学习 SMPC - 图74(用联邦学习 SMPC - 图75表示这组用户)。向联邦学习 SMPC - 图76中的每个用户发送集合联邦学习 SMPC - 图77

6、Unmasking

-client

  • 从服务器接收一个列表联邦学习 SMPC - 图78。验证联邦学习 SMPC - 图79联邦学习 SMPC - 图80和信号版本联邦学习 SMPC - 图81表示所有联邦学习 SMPC - 图82(否则中止)。
  • 对于联邦学习 SMPC - 图83中的每个其他用户联邦学习 SMPC - 图84,解密密文联邦学习 SMPC - 图85,并断言联邦学习 SMPC - 图86
  • 如果任何解密操作失败(尤其是密文未正确验证),则中止。
  • 向服务器发送共享列表,其中包括用户联邦学习 SMPC - 图87联邦学习 SMPC - 图88和用户联邦学习 SMPC - 图89联邦学习 SMPC - 图90

-server

  • 收集至少联邦学习 SMPC - 图91个用户的响应(用联邦学习 SMPC - 图92表示这组用户)。
  • 对于联邦学习 SMPC - 图93中的每个用户,重构联邦学习 SMPC - 图94并使用它(连同在AdvertiseKeys中接收的公钥)使用联邦学习 SMPC - 图95重新计算所有联邦学习 SMPC - 图96联邦学习 SMPC - 图97
  • 对于每个用户联邦学习 SMPC - 图98,重构联邦学习 SMPC - 图99,然后使用联邦学习 SMPC - 图100重新计算联邦学习 SMPC - 图101
  • 计算并输出联邦学习 SMPC - 图102联邦学习 SMPC - 图103