安全多方计算系列笔记1——前世今生

news2025/4/3 14:21:56

这一系列笔记参考了绿盟科技研究通讯的安全多方计算文章,及其他。

首先看定义:在不泄露参与方原始输入数据的前提下,允许分布式参与方合作计算任意函数,输出准确的计算结果。

起源

安全多方计算问题及解首先由姚期智(1982)提出。

问题可以解释为:两个争强好胜的富翁Alice和Bob,各自有x和y百万(单位:刀)的财富,其中1<=x,y<10。如何在不露富的前提下比较谁更是富哥?
谁v我50谁就富

通俗的解

假定x=4,y=6。于是Alice有4M,Bob有6M。可以用如下的步骤进行财富的比较:

  1. Alice准备9个箱子,分别给表面贴上1-9。
    [1]	[2]	[3]	[4]	[5]	[6]	[7]	[8]	[9]
    
  2. Alice在箱子里放入苹果(P)和香蕉(X)。规则是:如果箱子序号小于x,放苹果,否则放入香蕉。
    [1P]	[2P]	[3P]	[4X]	[5X]	[6X]	[7X]	[8X]	[9X]
    
  3. 把箱子封装后按照顺序交给Bob。此时Bob知道箱子序号(贴在外边),但是不知道里面放了什么果子。
  4. Bob挑选序号数字和y相等的箱子[6X],把序号撕掉[X]。
  5. 在Alice和Bob的共同见证下,他们打开了箱子。看看里面放的究竟是个什么玩意。

正经的解

其实知道了这个大概流程,怎么用数学来描述解、用什么样的密码学工具(模、一次性密码本、不对称密钥etc)来实现就有很多方法了。

仍然假设x=4,y=6。Alice(a)和Bob(b)都有自己的公§、私(s)钥对(分别记为 p a , p b , s a , s b pa, pb, sa, sb pa,pb,sa,sb),加密和解密的操作记为: E k ( ⋅ ) E_k(·) Ek()/ D k ( ⋅ ) D_k(·) Dk(),其中 k ∈ { p a , p b , s a , s b } k \in \{pa, pb, sa, sb\} k{pa,pb,sa,sb}。具体步骤为:

  1. Bob搞一个随机数 r r r(用于封装箱子),计算 m = E s b ( r ) − y m = E_{sb}(r)-y m=Esb(r)y,把 m m m发给Alice;
  2. Alice拿到 m m m,因为不知道 r r r是多少,所以猜不出 y y y(一次性密码本的性质)。但是因为1<=x,y<10,所以Alice可以枚举y,于是他得到了 [ m + 1 , . . . , m + 9 ] [m+1,...,m+9] [m+1,...,m+9],进而得到 B o x e s = [ D p b ( m + 1 ) , D p b ( m + 2 ) , . . . , D p b ( m + 9 ) ] Boxes = [ D_{pb}(m+1), D_{pb}(m+2), ..., D_{pb}(m+9) ] Boxes=[Dpb(m+1),Dpb(m+2),...,Dpb(m+9)](生成9个箱子)。
  3. Alice拿一个素数 p p p p p p的数量级比 r r r小。对 B o x e s Boxes Boxes里的9个箱子(9个数)模 p p p,得到 B o x e s p = [ D p b ( m + 1 ) m o d    p , D p b ( m + 2 ) m o d    p , . . . , D p b ( m + 9 ) m o d    p ] Boxes_p = [ D_{pb}(m+1) \mod p, D_{pb}(m+2) \mod p, ..., D_{pb}(m+9) \mod p ] Boxesp=[Dpb(m+1)modp,Dpb(m+2)modp,...,Dpb(m+9)modp] 保留 B o x e s p Boxes_p Boxesp的前 x x x项,对其他项+1(放入水果、撕掉标签)。得到
    B o x e s p f = [ D p b ( m + 1 ) m o d    p + 0 , D p b ( m + 2 ) m o d    p + 0 , . . . , D p b ( m + 9 ) m o d    p + 1 ] Boxes_{pf} = [ D_{pb}(m+1) \mod p + 0, D_{pb}(m+2) \mod p+0, ..., D_{pb}(m+9) \mod p+1 ] Boxespf=[Dpb(m+1)modp+0,Dpb(m+2)modp+0,...,Dpb(m+9)modp+1]
  4. Alice把 B o x e s p f Boxes_{pf} Boxespf按照序号发给Bob。此时,Bob会检查第 y y y个数,看它是不是等于 r m o d    p r \mod p rmodp(打开箱子看放的什么水果)。

为什么模 p p p?

读者不妨手写一下整个过程中Alice和Bob掌握的信息。如果不模个 p p p,直接对 B o x e s Boxes Boxes中的项+0/+1的话,Bob在拿到 B o x e s Boxes Boxes之后就可以通过加密 B o x e s Boxes Boxes中的项并且和 m + 1 , . . . , m + 9 m+1,...,m+9 m+1,...,m+9进行比对,得到Alice的秘密 x x x

安全多方计算的框架模型

n n n个计算参与方分别持有各自的秘密数据
x 1 , x 2 , … , x n , x_1,x_2,…,x_n, x1,x2,,xn,
协议的目的是利用各方的秘密数据计算一个预先达成的共识函数
( y 1 , y 2 , . . . , y n ) = f ( y 1 , y 2 , … , y n ) , (y_1,y_2,...,y_n)=f(y_1,y_2,…,y_n), (y1,y2,...,yn)=f(y1,y2,,yn),
此时任意一方 i i i可以得到对应的结果 y i y_i yi,但无法获得其他任何信息,包括其他的 x x x y y y

在传统分布式计算模型下,传统的分布式计算由中心节点协调各用户的计算进程,收集各参与方的明文输入信息,各参与方的原始数据对第三方来说毫无秘密可言,很容易造成数据泄露。

在MPC计算模式下,不需要可信第三方收集所有参与节点的原始明文数据,只需要各参与节点之间相互交换数据即可,而且交换的是处理后(如同态加密、秘密共享等处理方法)的数据,保证其他参与节点拿到数据后,也无法反推原始明文数据,确保了各参与方数据的私密性。

安全多方计算的技术体系架构

在这里插入图片描述

根据支持的计算任务,可以把安全多方计算分为两类:专用场景和通用场景。

  • 通用型MPC:一般由混淆电路(GC)实现,具有完备性,理论上可支持任何计算任务。具体做法是将计算逻辑编译成电路,然后混淆执行,但对于复杂计算逻辑,混淆电路的效率会有不同程度的降低,与专用算法相比效率会有很大的差距。

  • 专用型MPC:为解决特定问题所构造出的特殊MPC协议,由于是针对性构造并进行优化,专用算法的效率会比基于混淆电路的通用框架高很多,当前MPC专用算法包含四则运算,比较运算,矩阵运算,隐私集合求交集,隐私数据查询等。

虽然专用型MPC与通用型MPC相比效率更高,但同样存在一些缺点,如只能支持单一计算逻辑,场景无法通用;另外专用算法设计需要领域专家针对特定问题精心设计,设计成本高。

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

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

相关文章

用大白话给你科普,到底什么是 API(应用程序编程接口)?

何为API&#xff1f;如果你在百度百科上搜索&#xff0c;你会得到如下结果&#xff1a;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组…

Linux 安装Python3

python3 下载地址 python3 下载地址 https://www.python.org/downloads/ 选择自己需要的版本、 此文中选择3.10.9 下载源码压缩包 可下载到本地后上传至Linux服务器也可以复制下载地址 wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgzpython3 安装 yum…

python练习——简化路径

项目场景&#xff1a; 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 /开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表示当前目录本…

新库上线 | CnOpenData中国地方政府债券信息数据

中国地方政府债券信息数据 一、数据简介 地方政府债券 指某一国家中有财政收入的地方政府地方公共机构发行的债券。地方政府债券一般用于交通、通讯、住宅、教育、医院和污水处理系统等地方性公共设施的建设。地方政府债券一般也是以当地政府的税收能力作为还本付息的担保。地…

【电源专题】案例:用电子负载模拟电池测试充电芯片

最近在做有关充电芯片的选型,所以需要测试充电芯片中的很多参数。如涓流充电电流、快速充电电流、截止电流等等。 如下所示为某充电IC充电过程中的电流电压变化曲线。可以看出其中存在多个电流如Ishort/Iterm/Iprechg/Ichgerg等等。电压点也有Vshortz/Vbatlow/Vbatreg等。这些…

VTK- vtkStripper

前言&#xff1a;本博文主要研究接口vtkStripper的实现原理及主要的应用场景&#xff0c;希望对各位小伙伴有所帮助。 描述&#xff1a;vtkStripper是一个过滤器&#xff0c;用于从输入多边形、三角形带和线中生成三角形带和/或折线。输入多边形仅当它们是三角形时才被组装成三…

【Linux】-- 进程信号(处理、内核)

上篇&#xff1a;【Linux】-- 进程信号&#xff08;认识、应用&#xff09;_川入的博客-CSDN博客 目录 信号其他相关常见概念 pending handler block 信号处理的过程 sigset_t sigset_t使用 系统接口 sigpending sigprocmask 捕捉方法 sigaction struct sigactio …

小白入门模拟IC设计,如何快速学习?

众所周知&#xff0c;模拟电路很难学。以最普遍的晶体管来说&#xff0c;我们分析它的时候必须首先分析直流偏置&#xff0c;其次在分析交流输出电压。可以说&#xff0c;确定工作点就是一项相当麻烦的工作&#xff08;实际中来说&#xff09;&#xff0c;晶体管的参数多、参数…

JavaScript 计时事件

JavaScript 计时事件 通过使用 JavaScript&#xff0c;我们有能力做到在一个设定的时间间隔之后来执行代码&#xff0c;而不是在函数被调用后立即执行。我们称之为计时事件。 在 JavaScript 中使用计时事件是很容易的&#xff0c;两个关键方法是: setInterval() - 间隔指定的…

【CNN记录】tensorflow中depth_to_space

功能把depth维的数据移到space上&#xff0c;与spacetodepth刚好是相反的操作&#xff0c;depth对应channel&#xff0c;space对应height和width&#xff0c;而该操作是把depth上的数据分给height和width上&#xff0c;所以对应有一个参数block_size&#xff0c;要求原tensor的…

CSDN竞赛28期参赛体验

1、小Q的鲜榨柠檬汁 1、题目名称&#xff1a;小Q的鲜榨柠檬汁 团建活动是大家所想要的。 小Q给大家准备了鲜橙汁。 现在有n个朋友买回了k瓶饮料&#xff0c;每瓶有l毫升的饮料&#xff0c;同时还买回 了c个柠檬&#xff0c; 每个柠檬可以切成d片&#xff0c;p克盐。 已知每个朋…

Python基础学习笔记 —— 数据结构与算法

数据结构与算法1 数据结构基础1.1 数组1.2 链表1.3 队列1.4 栈1.5 二叉树2 排序算法2.1 冒泡排序2.2 快速排序2.3 &#xff08;简单&#xff09;选择排序2.4 堆排序2.5 &#xff08;直接&#xff09;插入排序3 查找3.1 二分查找1 数据结构基础 本章所需相关基础知识&#xff1a…

第七届蓝桥杯省赛——1有奖猜谜

题目&#xff1a; 小明很喜欢猜谜语。 最近&#xff0c;他被邀请参加了X星球的猜谜活动。 每位选手开始的时候都被发给777个电子币。 规则是&#xff1a;猜对了&#xff0c;手里的电子币数目翻倍&#xff0c; 猜错了&#xff0c;扣除555个电子币, 扣完为止。 小明一共猜了15…

入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

入门深度学习——基于全连接神经网络的手写数字识别案例&#xff08;python代码实现&#xff09; 一、网络构建 1.1 问题导入 如图所示&#xff0c;数字五的图片作为输入&#xff0c;layer01层为输入层&#xff0c;layer02层为隐藏层&#xff0c;找出每列最大值对应索引为输…

云原生周刊 | 开源领导者应该如何应对碎片化挑战?

Linux Fundation 发布了一份关于开源开发中的碎片化问题的报告《实现全球协作&#xff1a;开源领导者如何应对碎片化挑战》&#xff0c;该报告由华为在美国的研发部门 Futurewei 赞助。报告指出&#xff0c;虽然开源社区越来越国际化&#xff0c;但美国对开源共享和开发进行了过…

源码项目中常见设计模式及实现

原文https://mp.weixin.qq.com/s/K8yesHkTCerRhS0HfB0LeA 单例模式 单例模式是指一个类在一个进程中只有一个实例对象&#xff08;但也不一定&#xff0c;比如Spring中的Bean的单例是指在一个容器中是单例的&#xff09; 单例模式创建分为饿汉式和懒汉式&#xff0c;总共大概…

Linux内核驱动开发(一)

Linux内核初探 linux操作系统历史 开发模式 git 分布式管理git clone 获取git push 提交git pull 更新 邮件组 mailing list patch 内核代码组成 Makfile arch 体系系统架构相关 block 块设备 crypto 加密算法 drivers 驱动&#xff08;85%&#xff09; atm 通信bluet…

MAC文件误删怎么办?mac数据恢复,亲测很好用的方法

电脑文件误删&#xff0c;应该很多人都经历过。之前分享了很多关于Windows电脑文件误删如何恢复的方法&#xff0c;那么MAC电脑文件误删该怎么办&#xff1f;有什么好方法可以使得mac数据恢复回来吗&#xff1f;下面就给大家分享一些亲测好用的方法&#xff01; 一、MAC电脑的文…

使用Proxifier+burp抓包总结

一、微信小程序&网页抓包 1. Proxifier简介 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。 2. 使用Proxifier代理抓包 原理&#xff1a;让微信相关流量先走127.0.0.1:80到burp。具体…

Final Cut Pro 10.6.5

软件介绍Final Cut Pro 10.6.5 已通过小编安装运行测试 100%可以使用。Final Cut Pro 10.6.5 破解版启用了全新的矩形图标&#xff0c;与最新的macOS Ventura设计风格统一&#xff0c;支持最新的macOS 13 文图拉系统&#xff0c;支持Apple M1/M2芯片。经过完整而彻底的重新设计…