《基于同态加密和秘密分享的纵向联邦LR协议研究》论文阅读

news2024/10/7 20:35:07

论文地址:https://xueshu.baidu.com/usercenter/paper/show?paperid=1b7e04e0r41x0ax0976q0gy0m5242465

摘要

提出了一种新颖的两方纵向联邦逻辑回归协议,并在半诚实安全模型下证明了该协议的安全性, 包括模型训练流程和模型推理流程的安全性,且无需对非线性函数使用多项式近似计算,从而保证了联邦逻辑回归协议模型无损。

论文知识要点

1、同态加密:一类满足在密文空间上进行运算的密码学方法。可分为半同态、部分同态、全同态。本文用到的是加法半同态。例如Paillier加密算法。在初始化阶段,Paillier加密算法生成秘钥对 < p k , s k > <pk, sk> <pk,sk>。其中,公钥 p k pk pk用于加密,并且可以公开。私钥 s k sk sk用于解密,不可公开。

  • 加密: E n c ( x , p k ) → ⟦ x ⟧ Enc(x, pk) \to \llbracket x \rrbracket Enc(x,pk)[[x]]
  • 解密: D e c ( ⟦ x ⟧ , s k ) → x Dec(\llbracket x \rrbracket , sk) \to x Dec([[x]],sk)x
  • 同态加法: H A d d ( ⟦ x ⟧ , ⟦ y ⟧ ) → ⟦ z ⟧ HAdd(\llbracket x \rrbracket, \llbracket y \rrbracket) \to \llbracket z \rrbracket HAdd([[x]],[[y]])[[z]],其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x + y Dec(\llbracket z \rrbracket, sk) = x+y Dec([[z]],sk)=x+y
  • 标量加法: S A d d ( ⟦ x ⟧ , y ) → ⟦ z ⟧ SAdd(\llbracket x \rrbracket, y)\to \llbracket z \rrbracket SAdd([[x]],y)[[z]]其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x + y Dec(\llbracket z \rrbracket, sk) = x+y Dec([[z]],sk)=x+y
  • 标量乘法: S M u l ( x , ⟦ y ⟧ ) → ⟦ z ⟧ SMul(x, \llbracket y \rrbracket) \to \llbracket z \rrbracket SMul(x,[[y]])[[z]]其中 ⟦ z ⟧ \llbracket z \rrbracket [[z]]满足 D e c ( ⟦ z ⟧ , s k ) = x × y Dec(\llbracket z \rrbracket, sk) = x\times y Dec([[z]],sk)=x×y

以上这些同态加密运算同样适用矩阵运算。
2、秘密分享:将一 个数值拆分为多个秘密,并将每份秘密分发至不同的 参与方,使得所有参与方都无法得知真正的数值。例如:数值 x x x可被秘密分享为 < x A , x B > <x_A, x_B> <xA,xB>,满足 x A + x B = x x_A+x_B=x xA+xB=x。并且,秘密分享一般在群空间执行计算,例如整数加法群。
但是本文使用的秘密分享其实是引入了一个噪声,如下文中的 ϵ 、 U \epsilon、U ϵU

LR算法与联邦安全分析

逻辑回归模型: y = s i g m o i d ( Z ) ,其中 Z = W X + b , s i g m o i d ( ⋅ ) = 1 1 + e − Z y=sigmoid(Z),其中Z=WX+b, sigmoid(·)=\frac{1}{1+e^{-Z}} y=sigmoid(Z),其中Z=WX+b,sigmoid()=1+eZ1
对于联邦逻辑回归模型,如两方:参与方A和参与B,其 Z = W A X A + W B X B Z=W_AX_A+W_BX_B Z=WAXA+WBXB
逻辑回归的训练目标是寻找最小化损失函数值的模型参数
W A ∗ , W B ∗ = arg min ⁡ W A , W B L ( y ^ , y ) , L ( y ^ , y ) = ∑ i = 1 N ( y i l o g y ^ i + ( 1 − y i ) l o g ( 1 − y ^ i ) ) W_A^*,W_B^*=\displaystyle\argmin_{W_A,W_B}L(\hat y, y),\quad L(\hat y, y)=\displaystyle\sum_{i=1}^N(y_ilog\hat y_i+(1-y_i)log(1-\hat y_i)) WA,WB=WA,WBargminL(y^,y),L(y^,y)=i=1N(yilogy^i+(1yi)log(1y^i))小批量随机梯度下降算法 ∇ W P ( b ) = ∂ L ( y ^ ( b ) , y ( b ) ) ∂ W P = 1 B S X P T ( b ) ∇ Z ( b ) , 其中 ∇ Z ( b ) = ∂ L ( y ^ ( b ) , y ( b ) ) ∂ Z = y ^ ( b ) − y ( b ) \nabla W_P^{(b)}=\frac{\partial L(\hat y^{(b)}, y^{(b)})}{\partial W_P}=\frac{1}{BS}X_P^{T(b)}\nabla Z^{(b)},\quad 其中\nabla Z^{(b)}=\frac{\partial L(\hat y^{(b)}, y^{(b)})}{\partial Z}=\hat y^{(b)}-y^{(b)} WP(b)=WPL(y^(b),y(b))=BS1XPT(b)Z(b),其中Z(b)=ZL(y^(b),y(b))=y^(b)y(b) B S BS BS表示一个批次 ( b ) (b) (b)中的样本数,P方的模型更新为: W P = W P − η ∇ W P ( b ) W_P=W_P-\eta\nabla W_P^{(b)} WP=WPηWP(b)
在上述过程中涉及到的一些中间变量: W A , W B , W A X A , W B X B , Z , y ^ , ∇ Z , ∇ W A , ∇ W B W_A,W_B,W_AX_A,W_BX_B,Z,\hat y,\nabla Z, \nabla W_A,\nabla W_B WAWBWAXAWBXBZy^ZWAWB。在联邦逻辑回归过程中这些变量都是需要保护的变量。由于在前向计算过程中 y ^ = s i g m o i d ( Z ) \hat y=sigmoid(Z) y^=sigmoid(Z),所以 Z Z Z y ^ \hat y y^的安全性是等价的,保护了 Z Z Z y ^ \hat y y^就是安全的。假设标签信息属于参与方B,则参与方A不能有任何分析标签信息的可能性,因此在前向计算的过程中参与方不能知道有关计算 y ^ \hat y y^的所有变量: W A X A , W B X B , Z W_AX_A,W_BX_B,Z WAXAWBXBZ。如下图是参与方A在获取 W A X A W_AX_A WAXA的情况下分析参与方B的标签信息。
对于参与方B,也不能知道 W A X A , W B X B W_AX_A,W_BX_B WAXAWBXB,因为 Z Z Z是参与方B必然知道的数据,如果同时也知道 W B X B W_BX_B WBXB,那么通过 Z − W B X B Z-W_BX_B ZWBXB就可以推导出 W A X A W_AX_A WAXA
反向计算的过程中,由于 ∇ Z = y ^ − y \nabla Z = \hat y - y Z=y^y它的符号与标签信息y有直接关系,所以为了保护参与方B的标签信息,参与方A不能知道 ∇ Z \nabla Z Z。由于模型梯度中每个坐标的相对数值大小可以分析每个特征的重要性,从而对参与方B的标签信息进行推断。综上所述,参与方A、B不应获取的变量如下:

参与方A不应获得参与方B不应获得
模型参数 W A W_A WA W B W_B WB W A W_A WA W B W_B WB
前向计算 W A X A W_AX_A WAXA W B X B W_BX_B WBXB Z Z Z W A X A W_AX_A WAXA W B X B W_BX_B WBXB
反向计算 ∇ W A \nabla W_A WA ∇ W B \nabla W_B WB ∇ Z \nabla Z Z ∇ W A \nabla W_A WA
本文算法联邦逻辑回归算法

1、模型参数初始化

  • 参与方A生成大整数 σ a \sigma_a σa,且 σ a > I N A ( A 方特征维度 ) \sigma_a > IN_A(A方特征维度) σa>INA(A方特征维度),最后发送给参与方B
  • 参与方B生成大整数 σ b \sigma_b σb,且 σ b > I N B ( B 方特征维度 ) \sigma_b > IN_B(B方特征维度) σb>INB(B方特征维度),最后发送给参与方A
  • 参与方A生成 V B ′ V_B' VB,并用自己的秘钥加密成 ⟦ V B ′ ⟧ A \llbracket V_B' \rrbracket_A [[VB]]A,然后发送给参与方B。
  • 参与方B生成 V A ′ V_A' VA,并用自己的秘钥加密成 ⟦ V A ′ ⟧ B \llbracket V_A' \rrbracket_B [[VA]]B,然后发送给参与方A。
  • 参与方A从 ⟦ V A ′ ⟧ B \llbracket V_A' \rrbracket_B [[VA]]B选择 I N A IN_A INA个密文作为 ⟦ V A ⟧ B \llbracket V_A \rrbracket_B [[VA]]B,同时参与方B从 ⟦ V B ′ ⟧ A \llbracket V_B' \rrbracket_A [[VB]]A选择 I N B IN_B INB个密文作为 ⟦ V B ⟧ A \llbracket V_B \rrbracket_A [[VB]]A。如此参与双方都不知道对方的特征维度
  • 参与方A生成 U A U_A UA,将其和 ⟦ V A ⟧ B \llbracket V_A \rrbracket_B [[VA]]B进行求和得到 ⟦ W A ⟧ B \llbracket W_A \rrbracket_B [[WA]]B。同时参与方B生成 U B U_B UB,得到二元组 < U B , ⟦ V B ⟧ A > <U_B, \llbracket V_B \rrbracket_A> <UB,[[VB]]A>
    如下图为整个模型初始化过程:

2、模型的前向计算
假设每个小批量的训练数据记为 X A 、 X B X_A、X_B XAXB

  • 参与方A计算 X A ⟦ W A ⟧ B = ⟦ X A W A ⟧ B X_A\llbracket W_A \rrbracket_B = \llbracket X_AW_A \rrbracket_B XA[[WA]]B=[[XAWA]]B,然后生成一个随机数 ϵ A \epsilon_A ϵA ⟦ X A W A ⟧ B \llbracket X_AW_A \rrbracket_B [[XAWA]]B引入噪声得到 ⟦ X A W A ⟧ B − ϵ \llbracket X_AW_A \rrbracket_B-\epsilon [[XAWA]]Bϵ,并将其发送给参与方B,B对其进行解密得到$ X_AW_A -\epsilon$。
  • 参与方B计算 X B ⟦ V B ⟧ A = ⟦ X B V B ⟧ A X_B\llbracket V_B \rrbracket_A = \llbracket X_BV_B \rrbracket_A XB[[VB]]A=[[XBVB]]A,然后生成一个随机数 ϵ B \epsilon_B ϵB ⟦ X B V B ⟧ A \llbracket X_BV_B \rrbracket_A [[XBVB]]A引入噪声得到 ⟦ X B V B ⟧ A − ϵ B \llbracket X_BV_B \rrbracket_A-\epsilon_B [[XBVB]]AϵB,并将其发送给参与方A,A对其进行解密得到 X B V B − ϵ B X_BV_B-\epsilon_B XBVBϵB
  • 参与方A计算 Z A ′ = ( X B V B − ϵ B ) + ϵ A Z_A'=(X_BV_B-\epsilon_B)+\epsilon_A ZA=(XBVBϵB)+ϵA;参与方B计算 Z B ′ = ( X A W B − ϵ A ) + X B U B + ϵ B Z_B'=(X_AW_B-\epsilon_A)+X_BU_B+\epsilon_B ZB=(XAWBϵA)+XBUB+ϵB
  • 参与方A将 Z A ′ Z_A' ZA发送给参与方B,参与方B计算得到 Z = Z A ′ + Z B ′ = ( ( X B V B − ϵ B ) + ϵ A ) + ( ( X A W B − ϵ A ) + X B U B + ϵ B ) = X A W A + X B W B Z=Z_A'+Z_B'=((X_BV_B-\epsilon_B)+\epsilon_A)+((X_AW_B-\epsilon_A)+X_BU_B+\epsilon_B)=X_AW_A+X_BW_B Z=ZA+ZB=((XBVBϵB)+ϵA)+((XAWBϵA)+XBUB+ϵB)=XAWA+XBWB,以及计算明文预测值 y ^ = s i g m o i d ( Z ) \hat y=sigmoid(Z) y^=sigmoid(Z)
    如下图为前向计算过程

    3、模型的反向计算
  • 参与方B计算明文偏导 ∇ Z = y ^ − y \nabla Z=\hat y - y Z=y^y,并加密 − ∇ Z = ⟦ − ∇ Z ⟧ B -\nabla Z=\llbracket -\nabla Z\rrbracket_B Z=[[Z]]B,然后将密文发送给参与方A
  • 参与方A根据密文偏导 ⟦ − ∇ Z ⟧ B \llbracket -\nabla Z\rrbracket_B [[Z]]B计算模型密文梯度 ⟦ − ∇ W A ⟧ B = X A T ⟦ − ∇ Z ⟧ B \llbracket -\nabla W_A\rrbracket_B=X_A^T\llbracket -\nabla Z\rrbracket_B [[WA]]B=XAT[[Z]]B。参与方B直接计算明文梯度 ∇ W B = X B T ∇ Z \nabla W_B=X_B^T\nabla Z WB=XBTZ
  • 计算完成之后参与双方则更新梯度,参与方A进行密文状态下的更新 ⟦ W A ⟧ B = ⟦ W A ⟧ B + η ⟦ − ∇ W A ⟧ B \llbracket W_A \rrbracket_B=\llbracket W_A \rrbracket_B + \eta\llbracket -\nabla W_A \rrbracket_B [[WA]]B=[[WA]]B+η[[WA]]B。参与方B则只更新模型二元组中的 U B = U B − η ∇ W B U_B=U_B-\eta\nabla W_B UB=UBηWB`即可(原因见下图红字)。
    如下图为后向计算过程
总结

本文提出的联邦逻辑回归算法实现,主要研究的两方的联邦,但在安全性分析中说明在多方场景中,只要不超过一方不诚实的情况也是安全。
本文的实现逻辑并不复杂,主要贡献在提出了本文的这种实现逻辑,并论证该逻辑在指定场景下保护了多方的数据安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++四种基本类型转换

C四种基本类型转换 1.static_cast2.const_cast3.reinterpret_cast4 .dynamic_cast 1.static_cast 用法: static_cast<type_name> (expression) 说明:该运算符把expression转换为typen_name类型&#xff0c;static_cast在编译时使用类型信息执行转换,在转换执行必要的检测…

spring事务源码详解-spring原码(一)

前面说过了aop源码&#xff0c;这里再稍微回顾一下 我们会用注解EnableAspectJautoProxy开启aop 当我们用了proxytargetClass会强制cglib动态代理 源码里有Import 里面会注册AnnotionAwareAspectJAutoProxyCreator 后面会在beanDefinationMap获取到所有定义的Objects循环 …

2020新基建决赛-crypto-onepiece

onepiece 一、概要 1、标题&#xff1a;onepiece 2、关键字&#xff1a;e2&#xff0c;rabin&#xff0c;凯撒 3、比赛&#xff1a;2020新基建决赛 4、工具&#xff1a;python&#xff0c;米斯特工具 二、开始 1、题目分析 题目给了一个pubkey.pem和onepiece.enc&#xff…

C++右值引用 移动语义 完美转发 引用叠加

右值引用 MyString浅拷贝与深拷贝浅赋值与深赋值 左值与右值左值概念左值右值与函数的结合移动构造函数移动赋值函数移动构造和移动赋值的应用 移动语义 有点问题完美转发引用叠加 MyString 浅拷贝与深拷贝 s1先在堆区申请了空间&#xff0c;然后将p指针指向的字符串复制到该…

设计模式之责任链模式笔记

设计模式之责任链模式笔记 说明Chain of Responsibility(责任链)目录责任链模式示例类图请假条类抽象处理者类小组长类部门经理类总经理类测试类 说明 记录下学习设计模式-责任链模式的写法。JDK使用版本为1.8版本。 Chain of Responsibility(责任链) 意图:使多个对象都有机…

Vue搜索组件,显示热门、近期搜索(结合element ui)

&#x1f680; 注重版权&#xff0c;转载请注明原作者和原文链接 &#x1f96d; 作者&#xff1a;全栈小袁 &#x1f34e; 原创个人开源博客项目(目前V3.0版本)&#xff1a;https://github.com/yuanprogrammer/xiaoyuanboke &#x1f349; 开源项目觉得还行的话点点star&#x…

【P4】Windows 下搭建 DVWA 及命令注入漏洞详解

文章目录 一、Windows 下搭建 DVWA1.1、DVWA 靶场搭建1.2、六步快速搭建 DVWA1.2.1、下载并安装 PHPstudy&#xff1a;http://public.xp.cn/upgrades/PhpStudy2018.zip1.2.2、将解压后的 DVWA 原代码放置 phpstudy 安装目录的 WWW文件夹1.2.3、进入 DVWA/config 目录&#xff0…

2022前端趋势报告(下)

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 一、前言 本文内容来自于《St…

springBoot学习——spring+springMVC 集成mybatis 拦截器

目录 引出入门案例&#xff1a;登陆和注册 & 用户信息分页 之 固定的步骤&#xff1a;&#xff08;1&#xff09;建普通项目配置pom.xml文件&#xff08;2&#xff09;写主启动类 application.yml文件【bug】pom.xml文件导了mybatis的包&#xff0c;但是application.yml文…

Drag Your GAN论文解读,基于点的交互式操作拖动到生成图像[DragGAN]

只需要鼠标的点击就可以自动修图的产品&#xff0c;火爆问世&#xff0c;可以说是超越PS&#xff0c;神一般的存在了&#xff0c;而且没有门槛&#xff0c;对于普通大众来说直接可以上手使用&#xff0c;这个是PS完全不具备的。更关键的是&#xff0c;这款产品跟PS明显区别在于…

如何系统地自学 Python?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言为什么选择Python作…

【Intel 黑客松大赛】基于YOLO的杂草-农作物检测分类系统

目录 一、赛题简介&#xff1a;计算机视觉挑战——检测并清除杂草二、基于YOLO的杂草-农作物检测分类2.1、YOLO简介2.2、基于YOLO的杂草-农作物检测分类解决方案 三、基于YOLO的杂草-农作物检测分类系统设计3.1、基于flask框架的demo应用程序后端3.2、基于Vue框架的demo应用程序…

Qt6.2教程——4.QT常用控件QPushButton

一&#xff0c;QPushButton简介 QPushButton是Qt框架中的一种基本控件&#xff0c;它是用户界面中最常见和最常用的控件之一。QPushButton提供了一个可点击的按钮&#xff0c;用户可以通过点击按钮来触发特定的应用程序操作。比如&#xff0c;你可能会在一个对话框中看到"…

Unity编辑器扩展-第七集-应用键/显示提示词

第六集链接&#xff1a;Unity编辑器扩展-第六集-创建窗口/批量填图_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.我们有时候需要多次使用编辑窗口&#xff0c;但是每次一点执行&#xff0c;就关掉了&#xff0c;就很烦&#xff0c;所以我们希望&#xff0c;点击按钮&…

Spring Bean的实例化过程

一、前言 对于写Java的程序员来说&#xff0c;Spring已经成为了目前最流行的第三方开源框架之一&#xff0c;在我们充分享受Spring IOC容器带来的红利的同时&#xff0c;我们也应该考虑一下Spring这个大工厂是如何将一个个的Bean生产出来的&#xff0c;本期我们就一起来讨论一…

2023年6月GESP能力等级认证Python一级真题

2023-06 GESP等级考Python一级真题 题数&#xff1a;27 分数&#xff1a;100 测试时长&#xff1a;90min 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 1. 以下不属于计算机输出设备的有&#xff08; A&#xff09;。&#xff08;2分&#xff09; A…

几个Arcpy代码应用案例

1 案例一 删除特定记录 使用 arcpy 从 ArcGIS 中的图层中删除特定记录。可以使用更新游标&#xff08;UpdateSursor&#xff09;和 SQL 查询来识别和删除所需的记录。以下是如何删除特定图层记录的示例 import arcpy selectedParcelsselectedParcels expres…

分子碰撞频率和自由程------从一个物理小问题解剖自己的数学思维

物理学12-8节中&#xff0c;关于分子平均碰撞的解说如下&#xff1a; &#xff08;一&#xff09;分子碰撞自由程公式 第一个公式中&#xff0c;lamda v / z中&#xff0c;v的单位是m/s, z的单位是A/s, 其中A是常数。那么lamda描述的结果是m/A, 这正是长度单位。 此公式lamda…

利用正弦定理证明两角和差公式

首先用正弦定理&#xff0c;证明sin(AB)sinAcosBcosAsinB。 另外&#xff0c;其它的两角和差公式&#xff0c;都可以用三角函数奇偶性、诱导公式等推导出来&#xff0c;无需再用正弦定理证明一遍。

耗时一个月!手撸博客系统,主打美观实用!

先附上博客链接RoCBlog 关于博客 关于博客 RoCBlog 完成耗时&#xff1a;20天 起初是想搭建自己的博客&#xff0c;看了网上许多开源框架&#xff0c;感觉没啥意思&#xff0c;于是决定自己写一套 纯手撸VueSpringboot 其实是个我一边学vue一边写出来的东西&#xff0c;前期…