隐语2025实训营第三讲 基于MPC的隐私保护机器学习框架
现有的大模型问答模式会有泄露用户隐私的风险,可以将模型开源本地部署,但部署要求较高,增加成本互不信任且不信任任何可信第三方,除了各自的私有输入以及函数输出之外,不能获知任何额外信息MPC安全模型分类Privacy-Preserving Machine Learning(PPML)隐私保护机器学习ASS(Addtive Secret Sharing) + Beaver Triple(乘法三元组)AB
第三讲 基于安全多方计算的隐私保护机器学习框架
1、MPCpuhuiti与PPML的背景
现有的大模型问答模式会有泄露用户隐私的风险,可以将模型开源本地部署,但部署要求较高,增加成本
不同角色想要达到的目标:
- 对现有代码的改动越少越好
- 算法的设计优化,提高效率
三个关注点:
- 怎么保护隐私(MPC技术)
- 如何更简单的使用(MPC编译器)
- 效率问题(高效系统设计)
1.1 MPC背景
Secure Multi-Party Computation
互不信任且不信任任何可信第三方,除了各自的私有输入以及函数输出之外,不能获知任何额外信息
MPC安全模型分类
- 按恶意参与方的数量t
- 诚实大多数 一般是多于半数(满足t<n/2),完美安全性(满足t<n/3)
- 不诚实大多数(满足t>=n/2)
- 按照敌手能力
- 半诚实敌手(诚实但好奇)
- 恶意敌手
MPC协议的安全性保证
- 正确性:如果有输出,输出一定是正确的
- 隐私性:除了私有输入和输出、可推导的信息之外,别的信息不能泄露
- 输出保证:诚实参与方需要得到输出
- 带终止的安全:遇到隐私泄露等情况可以提前终止协议
- 公平性:诚实参与方得到比不诚实参与方更多的信息
- 交付保证:无论如何诚实参与方都必须得到信息
MPC技术
- 混淆电路Garbled Circuit Protocols
- Secret Sharing(SS)
1.2 PPML背景
Privacy-Preserving Machine Learning(PPML)隐私保护机器学习
三种模式:
- 数据和计算分离
- 数据和计算结合
- 混合模式

MPC in PPML
ASS(Addtive Secret Sharing) + Beaver Triple(乘法三元组)
ABY3协议
- Secret Sharing:每人拥有两个份额的秘密,三者之间任意两方合作就可以重现这个秘密
- Replicated Secret Sharing:每份子秘密复制给多个参与者
- c = a*b,分享a和b,
- 本地乘积计算得到其中四个乘积项,总共是9个乘积项
- 重新共享每个乘积项:

- 对乘积项进行求和,得到rss的子份额
- 最后两方的子份额进行拼接

PPML目前挑战
- 处理非线性运算:密态上可能比较复杂,代价高
- 数据表示方法和精度:MPC协议大多用定点小数而非浮点数表示
- 可扩展性和效率:兼容性问题,如何平衡可拓展性,用户体验和性能这三个方面
2、通用MPC框架结构概览
前端代码 ----> 编译器(转换、分解、优化)----> 后端MPC计算节点运行
两个开源框架:SPU、MP-SPDZ
良好的MPC框架
-
用户良好前端:以最小的修改代价和学习代价,提升代码到达隐私保护级别,前端必须提供充分的可见性,后端才能进行优化(计算图)
-
MPC专用编译系统:传统优化+MPC专用优化
-
高效的后端:powerhouse,密态计算实际发生的地方,作为解释器运行,
-
提供必要的MPC原语:
- 基本运算、类型转换
- 管理随机数发生器,通信模块,MAC密钥等有状态的属性
- 针对不同威胁模型设计对应协议
-
提供硬件和软件加速:GPU,TPU,线程级别并发,单指令多数据等
-
3、调研:SPU与MP-SPDZ
Multi-Protocol SPDZ
是一种类似于Python的语言,提供必要的数据类型
Ahead-of-Time编译方式:在编译阶段只是得到信息,然后转换成字节码,提供关于任务的语义描述
编译过程就是将程序流走一遍,明文部分的计算会直接完成,密文部分则将任务的程序流构造成CFG,进行优化和寄存器分配优化等等
编译器:将高级源码转换成字节码,直接执行高级语言,生成字节码和其他信息
后端:支持多种协议,涉及各种威胁模型、计算数学结构、支持任意party数量,作为虚拟机解释执行各种指令
SPU
直接对齐python语言,AI开发者只需要关注IO操作以及对数据是否密态进行标记,遵循MPC编程规则
编译器:编译高级语言到低级的MPC原语,在PPHLO(Privacy Preserving High-Level Operations)上施加MPC专用的优化
- PPHLO
- 静态单变量赋值 static single assignment(SSA)
- tensors类型<Shape,Data Type,Visibilty>
- MPC专用优化
- int和定点小数做乘法的优化:定点小数在结构上与整数相同,可以忽略数据类型差别

- 计算两个public数和一个secret数,把secret放最后计算,先将两个public相乘

- 对两个secret的定点小数做乘法的流程
- SPU后端
- 提供细粒度接口,对外暴露api,管理运行时的状态(随机数、数学、网络、协议相关),与节点进行交互

4、讨论
MP SPDZ耦合度比较高,对新手不友好,SPU内部设计是可插拔的设计,针对各个阶段进行优化
MPC的使用
- 逻辑回归
- 联合建模
- 快速计算
- 快速生成
MPC编译器的优化
- 合并同一层中的相同操作
- 重排序,简化计算流程,提高性能
明文上不适用,但是MPC上好用的优化方法
密态下运算时间比例不同带来的优化:

更多推荐





所有评论(0)