【隐私计算】安全三方计算(3PC)的加法和乘法计算协议

ABY3中采用replicated secret sharing(复制秘密分享)机制,即2-out-of-3秘密分享,三个参与方的每一方都拥有share中的两份。下面来看一下这样做有什么好处。

2-out-of-3秘密分享

x , y x, y x,y两个操作数,先进行秘密分享:

  • P 1 P_1 P1拥有 ( x 1 , x 2 ) , ( y 1 , y 2 ) (x_1, x_2), (y_1, y_2) (x1,x2),(y1,y2)
  • P 2 P_2 P2拥有 ( x 2 , x 3 ) , ( y 2 , y 3 ) (x_2, x_3), (y_2, y_3) (x2,x3),(y2,y3)
  • P 3 P_3 P3拥有 ( x 3 , x 1 ) , ( y 3 , y 1 ) (x_3, x_1), (y_3, y_1) (x3,x1),(y3,y1)

常见的计算

1 加法

⟨ x + y ⟩ = ( x 1 + y 1 , x 2 + y 2 , x 3 + y 3 ) \langle x+y\rangle=(x_1+y_1, x_2+y_2, x_3+y_3) x+y=(x1+y1,x2+y2,x3+y3)

2 加常数

⟨ x ⟩ + c = ( x 1 + c , x 2 , x 3 ) \langle x\rangle+c=(x_1+c, x_2, x_3) x+c=(x1+c,x2,x3),注意只需要加一次 c c c

3 数乘

⟨ c x ⟩ = ( c x 1 , c x 2 , c x 3 ) \langle cx\rangle=(cx_1, cx_2, cx_3) cx=(cx1,cx2,cx3)

4 乘法

⟨ x y ⟩ = ( x 1 + x 2 + x 3 ) ( y 1 + y 2 + y 3 ) = ( x 1 y 1 + x 1 y 2 + x 1 y 3 ) + ( x 2 y 1 + x 2 y 2 + x 2 y 3 ) + ( x 3 y 1 + x 3 y 2 + x 3 y 3 ) 调整一下顺序 = ( x 1 y 1 + x 1 y 2 + x 2 y 1 ) + α 1 [ P 1 → z 1 ] + ( x 3 y 2 + x 2 y 2 + x 2 y 3 ) + α 2 [ P 2 → z 2 ] + ( x 3 y 1 + x 1 y 3 + x 3 y 3 ) + α 3 [ P 3 → z 3 ] \langle xy\rangle=(x_1+x_2+x_3)(y_1+y_2+y_3)\\=(x_1y_1+x_1y_2+x_1y_3)\\+(x_2y_1 + x_2y_2 + x_2y_3)\\+(x_3y_1 + x_3y_2 + x_3y_3)\\调整一下顺序\\=(x_1y_1+x_1y_2+x_2y_1)+\alpha_1 [P_1\rightarrow z_1]\\+(x_3y_2 + x_2y_2 + x_2y_3)+\alpha_2 [P_2\rightarrow z_2]\\+(x_3y_1 + x_1y_3 + x_3y_3)+\alpha_3 [P_3\rightarrow z_3] xy=(x1+x2+x3)(y1+y2+y3)=(x1y1+x1y2+x1y3)+(x2y1+x2y2+x2y3)+(x3y1+x3y2+x3y3)调整一下顺序=(x1y1+x1y2+x2y1)+α1[P1z1]+(x3y2+x2y2+x2y3)+α2[P2z2]+(x3y1+x1y3+x3y3)+α3[P3z3]
暂不管 α \alpha α,可以看到,三个参与方可以分别在本地计算出 z 1 , z 2 , z 3 z_1, z_2, z_3 z1,z2,z3,也就是交叉项的结果。
然而,我们要求各方都持有三份share中的两份,所以需要re-sharing操作,也就是 P i P_i Pi z i z_i zi发给 P i − 1 P_{i-1} Pi1
现在来看 α \alpha α的作用, α \alpha α用于随机化 z z z,我们需要让 α \alpha α满足: α 1 + α 2 + α 3 = 0 \alpha_1+\alpha_2+\alpha_3=0 α1+α2+α3=0。每一方都完全知道这三个值中的一个,这样的三元组 ( α 1 , α 2 , α 3 ) (\alpha_1, \alpha_2, \alpha_3) (α1,α2,α3)被称为zero-sharing(零共享),在one-time setup后的计算无需任何交互。
那么如何生成三元组?基于伪随机函数(PRF)生成,这部分本文不展开。

由此可见,3PC和2PC都在本地计算加法,他们最大的不同就是乘法:在2PC乘法中,交叉项需要借助OT或HE计算,带来巨大的通信或计算开销;而基于复制秘密分享的3PC乘法完全在本地计算交叉项,无需通信,在re-sharing时需要少量的通信。

5 截断

方法1: Π T r u n c 1 \Pi_{Trunc1} ΠTrunc1
核心想法是在一方不参与的情况下,运行两方协议。
令各方有 ⟨ x ′ ⟩ = ⟨ y ⟩ ⟨ z ⟩ \langle x^\prime\rangle=\langle y\rangle \langle z\rangle x=yz的2-out-of-3的share(上面乘法后的结果),现在的目的是计算截断 ⟨ x ⟩ = ⟨ x ′ ⟩ / 2 d \langle x\rangle=\langle x^\prime \rangle/2^d x=x/2d
定义 P 1 , P 2 P_1, P_2 P1,P2之间的2-out-of-2 share为 ( x 1 ′ , x 2 ′ + x 3 ′ ) (x_1^\prime, x_2^\prime+x_3^\prime) (x1,x2+x3),然后双方在本地截断 ( x 1 ′ / 2 d , ( x 2 ′ + x 3 ′ ) / 2 d ) (x_1^\prime/2^d, (x_2^\prime+x_3^\prime)/2^d) (x1/2d,(x2+x3)/2d),最后的结果为 ⟨ x ⟩ : = ( x 1 , x 2 , x 3 ) = ( x 1 ′ / 2 d , ( x 2 ′ + x 3 ′ ) / 2 d − r , r ) \langle x\rangle:=(x_1, x_2, x_3)=(x_1^\prime/2^d, (x_2^\prime+x_3^\prime)/2^d-r, r) x:=(x1,x2,x3)=(x1/2d,(x2+x3)/2dr,r),其中, r ∈ Z 2 k r\in\mathbb Z^k_2 rZ2k是一个 P 2 , P 3 P_2, P_3 P2,P3知道的随机数。最后,为了让三方拥有两份share,需要再做一次re-sharing操作。
这个方法的局限性是两轮计算需要乘法和截断。

在这里插入图片描述

方法2: Π T r u n c 2 \Pi_{Trunc2} ΠTrunc2

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

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

相关文章

列表插槽使用

{label: 是否展示,prop: isShow,solt: true, }<!--自定义列 展示 1 不展示 0 --><template slot-scope"scope" slot"display"><div style"color: red;cursor: pointer"><el-switch v-model"scope.row.display" :…

在gitlab中使用gitlab-sshd替换ssh服务

参考&#xff1a;https://docs.gitlab.com/ee/administration/operations/gitlab_sshd.html 说明 gitlab-sshd 是 OpenSSH 的轻量级替代品&#xff0c;用于提供 SSH 操作。虽然 OpenSSH 使用受限的 shell 方法&#xff0c;但 gitlab-sshd 的行为更像是一个现代的多线程服务器应…

ssm的网上奶茶店系统(有报告)。Javaee项目。

演示视频&#xff1a; ssm的网上奶茶店系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybat…

智能优化算法应用:基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于动物迁徙算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.动物迁徙算法4.实验参数设定5.算法结果6.参考…

全面解析修复msvcr120.dll缺失问题的方法,msvcr120.dll丢失的原因

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“msvcr120.dll丢失”。这个错误通常会导致某些程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何修复呢&#xff1f;本文…

【6】PyQt信号和槽

1. 信号和槽简介 信号和槽机制是 QT 的核心机制&#xff0c;应用于对象之间的通信 信号和槽是用来在对象间传递数据的方法当一个特定事件发生的时候&#xff0c;signal会被emit出来&#xff0c;slot调用是用来响应相应的signal的Qt中对象已经包含了许多预定义的 signal&#…

JAVA 线程池,及7大参数,4大拒绝策略详解

为什么要使用线程池 线程的生命周期&#xff1a;运行、就绪、运行、阻塞、死亡 下面是一个简单的创建多线程的方法。注意&#xff1a;工作中不可取。 创建线程的时候&#xff0c;我们避不开线程的生命周期。上面的方法虽然可以创建多线程&#xff0c;但是创建完成后&#xff0c…

Ubuntu 环境安装 Kafka、配置运行测试 Kafka 流程笔记

Kafka 介绍 Kafka 是一个由 Apache 软件基金会开发的开源流式处理平台。它被设计用于处理大规模数据流&#xff0c;提供高可靠性、高吞吐量和低延迟的消息传递系统。Kafka 可以用于构建实时数据管道和流式应用程序&#xff0c;让不同应用、系统或者数据源之间能够高效地进行数…

老师怎样避免精神内耗?

在老师的职业生涯中&#xff0c;遇到的挑战和压力可能会导致精神内耗&#xff0c;这会影响到心理和身体健康&#xff0c;更进一步影响到工作成果和个人生活。为了避免精神内耗&#xff0c;老师可以尝试以下方法&#xff1a; 1. 建立正面的心态&#xff1a;老师需要学会积极思考…

卡码网语言基础课 | 19. 洗盘子

目录 一、 栈的基本概念 二、 栈的操作 2.1 引入头文件 2.2 创建栈 2.3 栈的基本认识 三、 解答 通过本次练习&#xff0c;将学习到以下 C知识点&#xff1a; 栈的基本概念&#xff08;空栈、栈顶、栈底&#xff09;和特点&#xff08;先入后出&#xff09;入栈、出栈、获取…

PostGIS学习教程十:空间索引

PostGIS学习教程十&#xff1a;空间索引 回想一下&#xff0c;空间索引是空间数据库的三个关键特性之一。空间索引使得使用空间数据库存储大型数据集成为可能。在没有空间索引的情况下&#xff0c;对要素的任何搜索都需要对数据库中的每条记录进行"顺序扫描"。索引通…

设计模式——七大设计原则

设计模式——七大设计原则 1、单一职责原则&#xff08;SRP&#xff09;2、开放封闭原则&#xff08;OCP&#xff09;3、依赖倒转原则&#xff08;DIP&#xff09;4、里氏替换原则 (LSP)5、接口隔离原则 (ISP)6、合成/聚合复用原则 (CARP)7、迪米特法则 (LoD) 了解 设计模式 的…

如何使用llm 制作多模态

首先将任何非字符的序列信息使用特殊n个token 编码。 具体编码方法以图像为例子说明&#xff1a; 将固定尺寸图像如256256 的图像分割为1616 的子图像块。 将已知的所有图像数据都分割后进行str将其看做是一个长的字符&#xff0c;而后去重后方式一个词表。 使用特殊1024 个tok…

解决方案:Mac 安装 pip

python3 --version 通过以下命令来下载pip&#xff1a; curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl命令允许您指定一个直接下载链接。使用-o选项来设置下载文件的名称。 通过运行以下命令安装下载的包&#xff1a; python3 get-pip.py

【开源】基于JAVA的医院门诊预约挂号系统

项目编号&#xff1a; S 033 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S033&#xff0c;文末获取源码。} 项目编号&#xff1a;S033&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

Day02 Liunx高级程序设计2-文件IO

系统调用 概念 是操作系统提供给用户使其可以操作内核提供服务的一组函数接口 用户态和内核态 其中 ring 0 权限最高&#xff0c;可以使用所有 CPU 指令&#xff0c; ring 3 权限最低&#xff0c;仅能使用 常规 CPU 指令&#xff0c;这个级别的权限不能使用访问硬件资…

深度学习在图像识别中的应用

深度学习在图像识别中的应用 摘要&#xff1a;本文介绍了深度学习在图像识别领域的应用&#xff0c;包括卷积神经网络&#xff08;CNN&#xff09;的基本原理、常见模型以及在图像识别中的优势。并通过实验展示了深度学习在图像识别中的实际应用和效果。 一、引言 随着数字化…

写给初学者的 HarmonyOS 教程 -- 状态管理(@State/@Prop/@Link 装饰器)

State 装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI 会发生对应的渲染改变&#xff08;类似 Compose 的 mutablestateof &#xff09;。 Prop 装饰的变量可以和父组件建立单…

深度学习在计算机视觉中的应用

深度学习在计算机视觉中的应用 摘要&#xff1a;本文介绍了深度学习在计算机视觉领域的应用&#xff0c;包括目标检测、图像分类、人脸识别等。通过分析深度学习在计算机视觉中的实际应用案例&#xff0c;阐述了深度学习在计算机视觉中的优势和未来发展趋势。 一、引言 计算…

使用rust slint开发桌面应用

安装QT5&#xff0c;过程省略 安装rust&#xff0c;过程省略 创建工程 cargo new slint_demo 在cargo.toml添加依赖 [dependencies] slint "1.1.1" [build-dependencies] slint-build "1.1.1" 创建build.rs fn main() {slint_build::compile(&quo…