【隐私计算】安全三方计算(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.rhkb.cn/news/210640.html

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

相关文章

①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 排序[算法、代码模板、面试题] ①归并排序、快…

波奇学C++:类型转换和IO流

隐式类型转换 int i0; double pi; 强制类型转换 int* pnullptr; int a(int)p; 单参数构造函数支持隐式类型转换 class A { public:A(string a):_a(a){} private:string _a; }; A a("xxxx"); //"xxx" const char* 隐式转换为string 多参数也可以通过{…

【6】PyQt信号和槽

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

Android进阶之路 - TextView文本渐变

那天做需求的时候,遇到一个小功能,建立在前人栽树,后人乘凉的情况下,仅用片刻就写完了;说来惭愧,我以前并未写过文本渐变的需求,脑中也仅有一个shape渐变带来的大概思路,回头来看想着…

Web网页安全策略的研究及其实现方案

摘 要 越来越多的人使用电脑来接触互联网,事实上,使用Web技术的实现基于网络的不断完善和发展的交流网站,人们可以利用计算机网络技术,方便得到想要的任何信息。计算机网络的发展,也促进了相关产业的发展,…

【vue-router】useRoute 和 useRouter 的区别

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

5个超实用GPT技巧,包括绩效总结、头脑风暴、营销策略等(内附提示词)

今天和大家分享5个用于工作上的GPT技巧,例如进行绩效总结、自我评估、头脑风暴,还是制作PPT方案等等,最大化提升你工作效率,本期内容对于大家来说都非常受用,记得收藏起来哦! 那么接下来就直接进入正题吧&a…

postgresql pg_hba.conf 配置详解

配置文件之pg_hba.conf介绍 该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段的IP连接到本服务器,以及指定连接时使用的身份验证模…

Leetcode—205.同构字符串【简单】

2023每日刷题&#xff08;五十&#xff09; Leetcode—205.同构字符串 算法思想 参考自k神思路 实现代码 class Solution { public:unordered_map<char, char> s2t, t2s;bool isIsomorphic(string s, string t) {int n s.size();for(int i 0; i < n; i) {char …

梦回吹角连营(2)(快速幂快乘)

Description 给定f(n)(a1)*n^a(a2)*n^(a1)...b*n^(b-1) 求f(n)%10000000033 Input 输入一个正整数T(T<10),表示有T组数据&#xff0c;每组数据包括三个整数a,b,n (0<n<10^9,1<a < b-1<10^20) Output 输出 f(n)%10000000033 的结果 Sample Input 1 1 2…

抽奖.html(网上收集8)

<!doctype html> <html> <head><meta charset"utf-8"><title>在线抽奖 随机选取 自动挑选</title><script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script><style>body {backg…

基于Springboot的秒杀系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的秒杀系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xf…

【Linux】ln命令使用

ln命令 ln是linux中又一个非常重要命令&#xff0c;请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接&#xff0c;这个命令最常用的参数是-s&#xff0c;具体用法是&#xff1a;ln –s 源文件 目标文件。 当我们需要在不同的目录&#xff0c;用到相…

【4】PyQt输入框

1. 单行文本输入框 QLineEdit控件可以输入单行文本 from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout from PyQt5.QtCore import * from PyQt5.QtGui import QIcon import sysdef init_widget(w: QWidget):# 修改窗口标题w.setWindowTitle(单行输…

【Spark入门】基础入门

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍Spark的定义、发展、扩展阅读&#xff1a;Spark VS Hadoop、四大特点、框架模块、运行模式、架构角色。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤&#xff0c;Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前&#xff0c;请确保完成以下配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

持续集成交付CICD:CentOS 7 安装 Sonarqube9.6

目录 一、实验 1.CentOS 7 安装 Sonarqube9.6 二、问题 1.安装postgresql13服务端报错 2.postgresql13创建用户报错 3.bash: sonar-scanner: 未找到命令 一、实验 1.CentOS 7 安装 Sonarqube9.6 &#xff08;1&#xff09;下载软件及依赖包 ①Sonarqube9.6下载地址 h…

C/C++,图算法——求强联通的Tarjan算法之源程序

1 文本格式 #include <bits/stdc.h> using namespace std; const int maxn 1e4 5; const int maxk 5005; int n, k; int id[maxn][5]; char s[maxn][5][5], ans[maxk]; bool vis[maxn]; struct Edge { int v, nxt; } e[maxn * 100]; int head[maxn], tot 1; vo…

Vellum —— 相关特点

目录 Cloth Breaking and tearing Paneling and draping Cloth simulation Calculating mass and thickness Working with low res and high res cloth Quick moving cloth Softbody Vellum softbodies Plasticity with softbodies Constraints Stitch and slid…

Centos7 制作Openssh9.5 RPM包

Centos7 制作Openssh9.5 RPM包 最近都在升级Openssh版本到9.3.在博客里也放了openssh 9.5的rpm包. 详见:https://blog.csdn.net/qq_29974229/article/details/133878576 但还是有小伙伴不停追问这个rpm包是怎么做的,怕下载别人的rpm包里被加了盐. 于是做了个关于怎么用官方的o…