[drsa_agg]联邦学习中的安全聚合方案设计及实现
此 ISSUE 为 隐语开源共建计划(SecretFlow Open Source Contribution Plan,简称 SF OSCP)第二期 https://github.com/secretflow/secretflow/issues/879 特别任务的子任务。
也欢迎开发者点击这里,选择你感兴趣的任务参与隐语社区共建,热烈欢迎社区开发者参与共建~
设计思路
本方案设计思路如下:
首先采用常用的量化方法,以特定的精度将模型更新编码到有限域上,参与方在本地相互独立地采样一个相同阶的随机多项式,通过多项式生成随机掩码,通过加法掩码的方式加密模型更新之后,将密文发送给聚合服务器;
参与方在本地采样点作为秘密多项式的额外信息,这部分信息不会泄露关于秘密多项式的任何信息,用于辅助聚合服务器重构得到参与方的聚合多项式,参与方将这部分数据发送给聚合服务器;
为了使得聚合服务器能够得到聚合多项式而不泄露单个参与方的秘密多项式,参与方和聚合服务器一起参与一个安全聚合子协议(本方案采用基于阈值Paillier同态加密的2轮可容错聚合协议),对秘密多项式的额外少部分信息进行安全聚合,参与方将子协议的输出发送给聚合服务器;
服务器使用接收到的数据和聚合子协议的输出恢复和多项式,基于多项式的加法同态计算得到随机掩码的和,最后从密文中减去掩码和得到原始模型更新的和,然后解码输出。
将算法封装进隐语框架中,置于隐语 experiment 目录下 secretflow/secretflow/security/aggregation/experiment/secure_aggregator_DRSA.py
任务介绍
- 任务名称:【特别任务】联邦学习中的安全聚合方案设计以及实现
- 技术方向:Federated Learning
- 任务难度:挑战🌟🌟🌟
- 说明:本任务不参与🌟累计哈~
详细要求
安全聚合是解决联邦学习中梯度泄露问题的有效手段。然而,现有安全聚合方案仍可能存在“参与方掉线不容忍”、“聚合行为不可控”、“共谋推断不可抗”和“系统效能不实际”等问题。希望同学们能够在这个开放问题下,设计出安全,可行,巧妙的算法来解决联邦学习聚合中遇到的安全问题,效率问题,掉线问题等等。解决方法不限,可以使用 TEE,同态,多方安全计算等各种技术作为辅助。
- 安全性: 尽量少 reveal,设计出的聚合算法没有算法层面的安全问题
- 功能性:可以将实现落到 SecretFlow 的 aggregator 中,可以无缝替换其他的聚合方法。
- 收敛性:聚合结果需要保证正确性
- 代码规范:Python 代码需要使用 black+isort 进行格式化(流水线包含代码规范检查卡点)
- 提交要求:关联该 issue 并提交代码,代码提交细节请与蚂蚁导师进行沟通!!
能力要求
- 网空项目——安全聚合项目参与同学
操作说明
VincentHwuang Give it to me