From 6a3d57bb3bc745ea8f95aa72ac804667c32fae5b Mon Sep 17 00:00:00 2001 From: wrk Date: Mon, 5 Sep 2022 09:56:16 +0800 Subject: [PATCH] add-proposal --- rfcs/PaddleDTX/paillier_opt.md | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 rfcs/PaddleDTX/paillier_opt.md diff --git a/rfcs/PaddleDTX/paillier_opt.md b/rfcs/PaddleDTX/paillier_opt.md new file mode 100644 index 000000000..d79d0984b --- /dev/null +++ b/rfcs/PaddleDTX/paillier_opt.md @@ -0,0 +1,37 @@ +# 标题 + +标题如:PaddleDTX/crypto 中 Paillier 算法优化方案 +| 项目 | 描述 | +|---|---| +|提交作者 | 王瑞凯 | +|提交时间 | 2022-09-05 | +|版本号 | V1.0 | +|依赖飞桨版本 | PaddleDTX master | +|文件名 | paillier_opt.md | + + +# 一、概述 + +## 1、意义 +PaddleDTX 当前实现了两类纵向联邦学习算法,均采用 Paillier 同态进行加密参数传输,在训练的迭代过程中需多次进行同态加解密运算,因此 Paiilier 算法的性能会大大影响分布式AI的整体性能。 + +# 二、飞桨现状 +PaddleDTX 基于 Go 语言本身的大数计算库 big 实现了 Paillier 密钥生成、加密、解密、密文加法等算法,大量依赖 big 库中的 Exp 和 Mod 操作,这些操作本身的计算时间比较长,存在一定的优化空间。 + +# 三、设计思路与实现方案 + +## 优化方案 + +1. 整体梳理算法实现使用的运算,对可以降低操作数数量级的操作进行修正,对可以进行预计算的操作进行预计算处理,删除不必要的计算。 +2. 尝试使用密码学常用优化手段,通过密码学分析实现 GCD、模乘、求幂等算法的加速。 +3. 尝试使用 uint64 数组实现计算,提高计算效率,同时减少对 big 库实现的依赖。 + +# 六、测试和验收的考量 +完成功能实现、单测、性能测试。 + +# 七、可行性分析和排期规划 +| 时间点 | key results | +| --- | --- | +| 2022-09-05 | 提案提交 | +| 2022-09-12 | 实现优化方案前两条 | +| 2022-09-18 | 实现优化方案最后一条并提交 PR |