安全多方计算从入门到精通:MPC简介&JUGO平台

简介:今天我们来介绍一下基于安全多方计算所设计出来的产品JUGO。从安全性角度来看,数据泄露——隐私安全问题严重;facebook的数据泄露事件闹得很大,原因就是facebook单方面将用户的个人数据提供给了第三方机构,这为个人数据的拥有权敲响了警钟。从数据价值角度来看,数据孤岛——数据之间由于各种原因造成了壁垒,(政府数据由于政策保密性完全不能对外公布,运营商、互联网每家都在收集客户的数据信息,但他们不会将这些数据透露给第三者),所有这些,使得这些数据都无法互通,那么就不能够为数据使用者提供利用价值,达不到1+1>2的效果。因此目前急需一个既能保护数据隐私又能实现数据流动起来最大化其价值的解决方案——JUGO。
1.概述
  大数据时代,海量数据的交叉计算可以为科研、医疗、金融等提供更好支持。许多企业或组织出于信息安全或利益的考虑,内部数据是不对外开放的。形成一个个数据孤岛,数据的价值无法体现或变现。安全多方计算(MPC)可以很好解决这一难题。保证各方数据安全的同时,又得到预期计算的结果。
  为了让数据安全地碰撞出更多价值,打破数据在行业、企业间流动的壁垒,矩阵元推出了JUGO安全多方计算平台。JUGO提供安全多方计算底层平台,并集成了通用MPC算法的SDK。同时提供编写高级语言Frutta的IDE,方便用户将Frutta语言编写的程序转换成电路。用户可以在平台上编写MPC算法并发布,也可以发起计算任务,邀请第三方进行安全多方计算或可以申请参与他人发起的计算任务。
  用户将计算节点部署到本地,可以选择JUGO开放服务平台作为代理(也可以是第三方), 节点之间通过代理进行加密通讯,所有节点不保留任何数据。整个计算过程没有任何明文或原始数据传播或存在,最后计算结果发送给事前约定的接收方。
  JUGO开放服务平台是一个数据加工厂,也是一个算法和数据集市。在保护数据安全的前提下帮助卖方用户数据增值、变现,帮助买方用户寻找所需的数据和服务。
  为了数据的流动是矩阵元的口号和愿景,流动的数据才更有价值。
JUGO特性:
支持semi-honest通用两方算法:GC+OT。
支持Frutta编写的IDE,提供MPC算法的SDK,用户使用IDE和SDK进行开发。
支持加法(addition),比较(comparison)多方算法。
后续支持通用多方算法和硬件加速
2.MPC名词解释

名称 全称 中文名称 说明
MPC Secure Multi-Party Computation 安全多方计算 一种保护数据安全隐私的多方计算算法。
GC Garbled Circuit 加密电路 一种通过加密处理电路的方式。
OT: Oblivious Transfer 不经意传输 一种安全的选择、传输协议。

MPC介绍
1.安全多方计算的价值
  MPC是密码学的一个重要分支,旨在解决一组互不信任的参与方之间保护隐私的协同计算问题,为数据需求方提供不泄露原始数据前提下的多方协同计算能力。
  在目前个人数据毫无隐私的环境下,对数据进行确权并实现数据价值显得尤为重要。MPC就是实现此目的的计算协议,在整个计算协议执行过程中,用户对个人数据始终拥有控制权,只有计算逻辑是公开的。计算参与方只需参与计算协议,无需依赖第三方就能完成数据计算,并且参与各方拿到计算结果后也无法推断出原始数据。
2.安全多方计算的来源
  安全多方计算(MPC:Secure Muti-Party Computation)研究由图灵奖获得者、×××院士姚期智教授在1982年提出,姚教授以著名的百万富翁问题来说明安全多方计算。百万富翁问题指的是,在没有可信第三方的前提下,两个百万富翁如何不泄露自己的真实财产状况来比较谁更有钱。通过研究此问题,形象地说明了安全多方计算面临的挑战和问题解决思路,经Oded Goldreich、Shaft Goldwasser等学者的众多原始创新工作,安全多方计算逐渐发展成为密码学的一个重要分支。
3.问题抽象

安全多方计算可以抽象的理解为:两方分别拥有各自的私有数据,在不泄漏各自私有数据的情况下,能够计算出关于公共函数 的结果。整个计算完成时,只有计算结果对双方可知,且双方均不知对方的数据以及计算过程的中间数据。
4.什么是安全多方计算?
  多个持有各自私有数据的参与方,共同执行一个计算逻辑计算逻辑(如,求最大值计算),并获得计算结果。但过程中,参与的每一方均不会泄漏各自数据的计算,被称之为MPC计算。
  举个例子,Bob和Alice想弄清谁的薪资更高,但因为签署了保密协议而不能透露具体薪资。如果Bob和Alice分别将各自的薪资告诉离职员工Anne,这时Anne就能知道谁的薪资更高,并告诉Bob和Alice。这种方式就是需保证中间人Anne完全可信。
  而通过MPC则可以设计一个协议,在这个协议中,算法取代中间人的角色,Alice和Bob的薪资以及比较的逻辑均交由算法处理,参与方只需执行计算协议,而不用依赖于一个完全可信的第三方。
  安全多方计算所要确保的基本性质就是:在协议执行期间发送的消息中不能推断出各方持有的私有数据信息,关于私有数据唯一可以推断的信息是仅仅能从输出结果得到的信息。
4.1.什么是算法
  算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
  如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
  算法具有以下五个重要特征:

  1. 穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止;
  2. 确切性:算法的每一步骤必须有确切的定义;
  3. 输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
  4. 输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  5. 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
    注意:文档中提到的“算法”,特指MPC底层算法;“计算逻辑”特指为执行具体编写的算法,运行在MPC底层算法之上。

4.2.MPC问题分类
由算法适用性来看,MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。
根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC。
安全两方计算所使用的协议为Garbled Circuit(GC)+Oblivious Transfer(OT);而安全多方计算所使用的协议为同态加密+秘密分享+OT。
在安全多方计算中,安全挑战模型包括半诚实敌手模型和恶意敌手模型。市场大部分场景满足半诚实敌手模型,也是JUGO技术产品所考虑的敌手模型。
半诚实敌手模型:计算方存在获取其他计算方原始数据的需求,但仍按照计算协议执行。半诚实关系即参与方之间有一定的信任关系,适合机构之间的数据计算;
恶意敌手模型:参与方根本就不按照计算协议执行计算过程。参与方可采用任何(恶意)方式与对方通信,且没有任何信任关系。结果可能是协议执行不成功,双方得不到任何数据;或者协议执行成功,双方仅知道计算结果。更多适用于个人之间、或者个人与机构之间的数据计算。
5.MPC算法基本原理(2PC半诚实模型)
  下面介绍安全两方计算的半诚实模型下的MPC算法原理:

5.1.MPC算法执行过程
1.先对输入数据做预处理。
将输入的布尔电路做GC和OT算法(详细在下面叙述),得到输出结果。
 遵循原则:1、尽量少的数据输入;2、尽量多的数据预处理
 ——数据量太大时会大幅降低算法执行效率。
2.计算逻辑转化为布尔电路。
 遵循原则:尽量简单的计算逻辑
 ——由于MPC是计算密集型和通信密集型算法,若计算逻辑很复杂,会对执行效率产生很大影响。
 转化方式:手动/电路编译器Frutta
3.将输入的布尔电路做GC和OT算法(详细在下面叙述),得到输出结果。
5.2.GC+OT的两方计算基本框架
  GC+ OT是在两方semi-honest模型下的通用型算法,即可以支持任意计算逻辑的安全两方计算。
  总体框架如下图:


6.小结
  安全多方计算是一种在不泄漏原始数据的情况下,对数据进行的计算。上述内容首先介绍了MPC的价值及来源,然后详述了两方安全计算的技术实现原理,主要包括GC和OT算法,并对一些技术基础知识做了简要概述。
二、JUGO与MPC
1.JUGO定位
  针对企业级用户,基于MPC的安全数据交易平台。通过在本地部署MPC节点,进行数据协同计算。
2.JUGO特性
 支持semi-honest通用两方算法:GC+OT。
 支持Frutta编写的IDE,提供MPC算法的SDK,用户使用IDE和SDK进行开发。
 支持加法(addition),比较(compare)等多种算法。
 以浏览件插件的形式提供MPC个人体验。
 后续支持通用多方算法和硬件加速。
3.JUGO架构

 针对计算逻辑提供者,MPC-IDE实现计算逻辑的编写,并通过集成的电路编译器转化为电路文件;作为数据执行方,矩阵元提供的MPC-SDK直接为计算逻辑提供者服务;并且矩阵元对MPC-SDK内部算法实现GPU、FPGA等硬件加速,使协同计算过程更快地完成。

更多内容可以参考视频:安全多方计算MPC视频课程
产品实操请访问:JUGO开放服务平台

原文地址:http://blog.51cto.com/13701316/2136084

时间: 2024-10-08 01:21:58

安全多方计算从入门到精通:MPC简介&JUGO平台的相关文章

安全多方计算从入门到精通:MPC应用场景

简介:由于安全多方计算可在数据不离开各自节点的前提下,完成多方协同分析.处理和结果发布的特性,适合以下应用场景:政府部门的系统和商业机构都需要查询信息,同时也要防止数据被泄露.利用安全多方计算技术,可以实现数据的安全查询.1.MPC适用场景1.1.数据安全查询 政府部门的系统中往往储存了大量的公民和企业经营数据,很多商业机构需要查询信息用作商业用途,但政府不希望数据被泄露或被拷贝走,同时,有些场景下商业机构也不希望政府知道其查询条件.利用安全多方计算技术,可以实现数据的安全查询. 数据安全查询的

安全多方计算(MPC)从入门到精通:Frutta语言

简介:在上一节<安全多方计算(MPC)从入门到精通:简易教程>中,我们已经简单介绍过Frutta语言,Frutta是JUGO为计算逻辑而开发的编程语言,计算逻辑在MPC中是为解决具体业务而编写的算法.它是一门类C高级语言,支持大部分运算符.数据类型,表达方式的实现--300个门电路,仅需一行代码!1.什么是Frutta Frutta是矩阵元为安全多方计算的算法电路文件生成而专门定制的编程语言.它是一门类高级语言,也是一门面向过程的编程语言.Frutta支持大部分运算符.数据类型,表达方式灵活实

安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK

简介:在上一节<安全多方计算(MPC)从入门到精通:Frutta语言>中,已经介绍了Frutta语言语法相关的内容,在本节中,我们将介绍JUGO-IDE及SDK.1.什么是JUGO-IDE JUGO-IDE是JUGO技术产品面向开发者提供的用来编写MPC算法的开发工具,结合Frutta谷歌浏览器插件,开发者无需搭建任何环境就可以快速编写.编译.运行和发布算法. 通过使用JUGO-IDE,开发者可使用Frutta语言编写算法,并通过JUGO-IDE编译成可在JUGO技术产品上执行的电路文件和ja

CUDA从入门到精通

CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择.还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能给学习CUDA的童鞋提供一定指导.个人能力所及,错误难免,欢迎讨论. PS:申请专栏好像需要先发原创帖超过15篇...

下载Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookeeper的Fast Fail 和 Leader选举特性大大增强了分布式集群的稳定和健壮性,并且解决了Master/Slave模式的单点故障重大隐患,这是越来越多的分布式产品如HBase.Storm(流计算).S4(流计算)等强依赖Zookeeper的原因. Zookeeper从入门到精通(开发详解,案

Git版本控制软件结合GitHub从入门到精通常用命令学习手册

GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数. 本手册将从入门到精通指导大家. 首先,我们要从如何以 Git 的思维方式管理源代码开始. 如何以 GIT 的方式思考(这里可以不用看懂,接着看下面的内容,看完就全懂了.) 懂得 Git,第一件重要的事情就是要知道它与 Subversion.Perforce 或者任何你用过的版本控制工具都有

&lt;ASP.NET4 从入门到精通&gt;学习笔记3

第三部分,状态管理与缓存 何为状态管理,起始对于web而言,经过前面章节的讲解,已经理解,对于web程序,就是一个无状态的程序,每次的请求与每次的响应,两者之间本身就是独立存在的,这一点对于早期的静态网页来说,倒没什么,因为每次的请求和响应其实都是固定不变的.但是到了动态网页时代,就不行了,web开发的很大一部分工作将变为状态管理.这一点,可能举一个例子,最具有代表性,比如说购物车,那么对于购物车而言,就需要知道他的访问者是谁?虽然他们可以在不同的页面切换,但是购物车不能够变化,此时就是一种状态

《Android开发从入门到精通》扶松柏.扫描版.pdf

下载地址:网盘下载 内容简介 编辑 <Android开发从入门到精通>系统讲解了Android软件开发的基础知识,图文并茂地帮助读者学习和掌握SDK.开发流程以及常用的API等.书中以讲述实战实例为导向,用一个个典型应用生动地引领读者进行项目开发实践.<Android开发从入门到精通>是一本内容翔实,理论实践紧密结合的教程. [1] 目录 编辑 第1章 走进Android世界 1.1 智能手机飞速发展 1.1.1 主流手机系统介绍 1.1.2 Android横空出世 1.2 And

GPU 编程入门到精通(五)之 GPU 程序优化进阶

博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙伴,欢迎一起交流和学习.我的邮箱: [email protected] .使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,尽管显卡相对于如今主流的系列已经很的弱,可是对于学习来说.还是能够用的.本系列博文也遵从由简单到复杂,记录自己学习的过程. 0. 文件夹 GPU 编程入门到精通