当前位置: 首页 > news >正文

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

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

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

起源

安全多方计算问题及解首先由姚期智(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)钥对(分别记为pa,pb,sa,sbpa, pb, sa, sbpa,pb,sa,sb),加密和解密的操作记为:Ek(⋅)E_k(·)Ek()/Dk(⋅)D_k(·)Dk(),其中k∈{pa,pb,sa,sb}k \in \{pa, pb, sa, sb\}k{pa,pb,sa,sb}。具体步骤为:

  1. Bob搞一个随机数rrr(用于封装箱子),计算m=Esb(r)−ym = E_{sb}(r)-ym=Esb(r)y,把mmm发给Alice;
  2. Alice拿到mmm,因为不知道rrr是多少,所以猜不出yyy(一次性密码本的性质)。但是因为1<=x,y<10,所以Alice可以枚举y,于是他得到了[m+1,...,m+9][m+1,...,m+9][m+1,...,m+9],进而得到Boxes=[Dpb(m+1),Dpb(m+2),...,Dpb(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拿一个素数pppppp的数量级比rrr小。对BoxesBoxesBoxes里的9个箱子(9个数)模ppp,得到Boxesp=[Dpb(m+1)modp,Dpb(m+2)modp,...,Dpb(m+9)modp]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] 保留BoxespBoxes_pBoxesp的前xxx项,对其他项+1(放入水果、撕掉标签)。得到
    Boxespf=[Dpb(m+1)modp+0,Dpb(m+2)modp+0,...,Dpb(m+9)modp+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把BoxespfBoxes_{pf}Boxespf按照序号发给Bob。此时,Bob会检查第yyy个数,看它是不是等于rmodpr \mod prmodp(打开箱子看放的什么水果)。

为什么模ppp?

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

安全多方计算的框架模型

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

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

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

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

在这里插入图片描述

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

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

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

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

http://www.lryc.cn/news/6936.html

相关文章:

  • 16- 梯度提升分类树GBDT (梯度下降优化) (算法)
  • SpringCloud+Nacos+Gateway
  • 高通开发系列 - linux kernel内核升级msm-3.18升至msm-4.9(2)
  • Spring依赖注入与反转控制到底是个啥?
  • Linux Shell脚本讲解
  • Linux:用户空间非法指针coredump简析
  • 带你玩转Jetson之Deepstream简明教程(四)DeepstreamApp如何使用以及用于工程验证。
  • 快速搭建个人在线书库,随时随地畅享阅读!
  • 电子纸墨水屏的现实应用场景
  • 常量const、引用、指针的大杂烩
  • 宝塔搭建实战php开源likeadmin通用管理移动端uniapp源码(四)
  • Hive的分区表与分桶表内部表外部表
  • 和数集团打造《神念无界:源起山海》,诠释链游领域创新与责任
  • 小白入门模拟IC设计,如何快速学习?
  • 51单片机——中断系统之外部中断实验,小白讲解,相互学习
  • 如何设计一个秒杀系统
  • 厄瓜多尔公司注册方案
  • 安全渗透环境准备(工具下载)
  • 118.(leaflet篇)leaflet空间判断-点与geojson面图层的空间关系(turf实现)
  • 目标检测与目标跟踪算法技术汇总
  • Linux 系统启动过程
  • 【每日一题Day118】LC1124表现良好的最长时间段 | 前缀和+单调栈/哈希表
  • vue使用nprogress(进度条)
  • @NotNull 、@NotBlank、@NotEmpty区别和使用
  • Nacos——Nacos简介以及Nacos Server安装
  • Presto 文档和笔记
  • 大尺度衰落与小尺度衰落
  • 完美解决:重新安装VMware Tools灰色。以及共享文件夹的创建(centos8)
  • 达梦数据库作业管理
  • 数据结构-考研难点代码突破(C++实现树型查找-二叉搜索树(二叉排序树))