第三讲 基于安全多方计算的隐私保护机器学习框架

1、MPCpuhuiti与PPML的背景

现有的大模型问答模式会有泄露用户隐私的风险,可以将模型开源本地部署,但部署要求较高,增加成本

image-20250512221312015

不同角色想要达到的目标:

  • 对现有代码的改动越少越好
  • 算法的设计优化,提高效率

三个关注点:

  • 怎么保护隐私(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
    • image-20250512222655429
  • Secret Sharing(SS)
    • image-20250512222705302
1.2 PPML背景

Privacy-Preserving Machine Learning(PPML)隐私保护机器学习

三种模式:

  • 数据和计算分离
  • 数据和计算结合
  • 混合模式
  • image-20250512223015663

MPC in PPML

ASS(Addtive Secret Sharing) + Beaver Triple(乘法三元组)

ABY3协议

  • Secret Sharing:每人拥有两个份额的秘密,三者之间任意两方合作就可以重现这个秘密
  • Replicated Secret Sharing:每份子秘密复制给多个参与者
    • c = a*b,分享a和b,
    • 本地乘积计算得到其中四个乘积项,总共是9个乘积项
    • 重新共享每个乘积项:image-20250512225742280
    • 对乘积项进行求和,得到rss的子份额
    • 最后两方的子份额进行拼接
    • image-20250512225946717

PPML目前挑战

  • 处理非线性运算:密态上可能比较复杂,代价高
  • 数据表示方法和精度:MPC协议大多用定点小数而非浮点数表示
  • 可扩展性和效率:兼容性问题,如何平衡可拓展性,用户体验和性能这三个方面

2、通用MPC框架结构概览

image-20250512230148562

前端代码 ----> 编译器(转换、分解、优化)----> 后端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专用的优化

image-20250512232217745
  • PPHLO
    • 静态单变量赋值 static single assignment(SSA)
    • tensors类型<Shape,Data Type,Visibilty>
    • MPC专用优化
      • int和定点小数做乘法的优化:定点小数在结构上与整数相同,可以忽略数据类型差别
      • image-20250512232724198
      • 计算两个public数和一个secret数,把secret放最后计算,先将两个public相乘
      • image-20250512232941257
    • 对两个secret的定点小数做乘法的流程
      • image-20250512233049862
  • SPU后端
    • 提供细粒度接口,对外暴露api,管理运行时的状态(随机数、数学、网络、协议相关),与节点进行交互
    • image-20250512233319028

4、讨论

MP SPDZ耦合度比较高,对新手不友好,SPU内部设计是可插拔的设计,针对各个阶段进行优化

MPC的使用

  • 逻辑回归
  • 联合建模
  • 快速计算
  • 快速生成

MPC编译器的优化

  • 合并同一层中的相同操作
  • 重排序,简化计算流程,提高性能

明文上不适用,但是MPC上好用的优化方法

密态下运算时间比例不同带来的优化:

image-20250512234231314
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐