暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

安全多方计算入门级介绍二

陆叁 2021-09-25
636

点击上方蓝字获取更多新鲜资讯

一、定义MPC的安全性

方法:定义我们想要的理想版本。如果它 "相当于” 理想 说明协议是好的。

优点:从等效性来看,我们知道协议具有理想版本的所有良好属性。

我们将为通用可组合(UC)安全性提供 Canetti 定义的变体。(变体主要区别: 明确考虑同步网络,原始UC用于异步情况)。

1.1 敌手活动

定义前的重要说明:一般情况下,敌手可能会比腐蚀参与方和控制他们的行为更有能力。- 大多数协议都是作为一个更大的系统的一部分来运行的,比如密钥交换协议或电子支付方案。- 现实生活中的敌手会攻击整个系统,而不仅仅是协议。- 因此,敌手可能会对诚实的参与方所提供的输入产生一定的影响,甚至可能控制它们。- 另外,敌手可能会得到一些关于诚实参与方从协议中获得的结果的信息,甚至可能是全部信息。

在我们的定义中,敌手应该被允许为诚实参与方选择输入,并看到他们的结果。

问题:这是非常奇怪的,我们不是说过,敌手不应该得到诚实玩家的结果信息吗?

回答:我们说的是协议不应该发布这种信息。如果敌手从其他渠道,比如周围的系统了解到一些信息,协议也无能为力。所以我们要要求协议按照它应该的方式工作,不管敌手知道什么,或者能通过协议外部的手段控制什么。

1.2 定义中的概念

所有的实体(参与方、敌手、可信方)从形式上讲都是交互式的、概率的图灵机。每个实体都得到作为输入的安全参数  ,  得到辅助输入  

理想范式(或可信方)  

  • 模拟我们希望协议实现的范式。

  • 不能被腐蚀

  • 可以与所有参与方和敌手进行交流。

  • 接收来自所有参与方的输入,根据其程序进行计算并将结果返回给参与方。

  • 有内存,可以多次调用,因此可以用来模拟我们能想象到的任何合理的基元。

当然,现实生活中不存在这样的  ,只是用了一个我们希望拥有的规范。定义基本上说,如果一个协议在现实生活中创造了相当于有  可用的情况,那么这个协议就是好的(w.r.t.  )。

定义两个过程。- 真实过程 - 理想过程

在真实过程中,我们有敌手  和执行协议  的参与方(没有可信方)。

在理想过程中,我们仍然有  ,但  被可信方  (加上后面要解释的模拟器  )代替。

如果  无法判断自己是在真实过程中还是在理想过程中,我们将说  安全地实现了  

下面图中显示了真实过程。

下面图中显示了理想过程。

为了让  在真实中的事情和理想过程中的事情看起来是一样的,我们引入模拟器  

1.3 定义

我们说,如果存在一个模拟器  ,使得对于所有的敌手  只在  中腐坏集合,并满足:

  安全地完美地实现了  

Intuition:我们认为  的输出    是它对自己是在现实世界还是理想世界的猜测。两个概率相等意味着它无法分辨。注意我们说的是对所有  而言,所以这里没有对  的计算能力进行约束。

如果以下计算成立,则说明 实现了统计上的  

其中,  表示在  中的可忽略值(对于任意选择  )。

Intuition on Definition

它确保现实过程继承了理想过程的自然安全属性,例如:

  • 协议确保诚实的参与方计算出正确的结果:在理想过程中,通过对  的定义,总是真实的,如果协议产生不一致的结果,  可 以很容易地区分。

  • 协议不释放不该释放的信息:  能够令人信服地模拟  攻击协议的观点,只根据  愿意透露给腐坏参与方的内容。

问题:考虑计算  的 trivial 协议,显示它满足定义(假设为被动腐坏)。假设我们尝试用同样的 trivial 方案来计算两个比特的AND。解释为什么在这种情况下证明会失败。

Secret Sharing

Dealer 在  中持有一个秘密值  , 

Dealer 在  上选择一个阶最多为  的随机多项式  ,使得  

Dealer 私下发送  至  

Properties:

  • 任何最多  个参与方的子集都没有  的信息。

  • 任何至少  个玩家的子集都可以很容易地计算出  ,可以通过取他们所知道的 share 的线性组合来完成。

为了便于理解,我将shamir算法贴在这里
shamir是一种秘密共享的实现,利用了拉格朗日插值公式。详细原理见参考文献。下面补充一个shamir算法的有用的性质: 加同态。已知已有两个用于秘密共享的多项式 

以及素数  . 通过秘密共享分享的分片形式是  。将分片中的多项式结果求和,得到  。根据shamir算法中的定义,  是原秘密。因此通过恢复算法对求和后的分片进行恢复,将会得到  。这就实现了秘密求和。在双方求和的情况下,没有意义,但在参与者数目大于等于3时,就会有用。
拉格朗日插值:blog.csdn.net/shenwansa

重构向量

重构向量  是这样的:对于阶数小于  的任何多项式

  

被动腐坏案例的协议,i.t. 情景

门限敌手,最多可腐蚀  个玩家,  

通常协议包含以下四个阶段:

  • 电路和给定的输入

  • 创建代表输入的 "对象",由参与方共同持有,value 不被对手获取。

  • 计算阶段:计算新对象。

  • 打开输出

创建对象(秘密分享阶段)

每个  用最多  阶的随机多项式分享他的每个输入值,将每个输入的   发送给每个计算方。

Notation:  

意味着:值  已经被使用多项式  共享,结果共享  ,其中玩家  持有  。

计算过程

加法门

输入:    。

期望输出:  

每个参与方计算  

那么我们就有了我们想要的  ,其中  

因为将两个阶数  的随机多项式相加,会产生阶数  的随机多项式。

问题: 如何通过公共常量  安全地乘以共享值  。

有了这个加法,我们可以安全地计算任何线性函数。

乘法门

输入:    

希望的输出:  

每个参与方设置  。如果我们设置  ,那么  。同时  

不幸的是,  的阶数可能高达  ,甚至不是一个阶数最多为  的随机多项式。怎么办呢?

我们有公共重构向量  可以得到  , 因为每个  参与方  创建  ,所以我们有

  现在使用多项式  共享,其中  

输出打开阶段

  • 通过电路,我们对每个输出值  

  • 如果  需要被计算方  接收,则每个    发送给  

  •   进行重构。

Security, intuitively:

因为所有的参与方都遵守协议,所以输出是非常正确的。

对于诚实参与方的每一个输入、中间结果和诚实参与方的输出,  最多看到  份。这些总是  个随机字段元素,所以不透露任何信息。

参考文献

[Y86, GMW87,CFGN]

参考自 Ivan Damgård BRICS (Århus University) 的主题演讲,Ivan Damgård是丹麦著名的密码学家,SPDZ协议的主要开创者。这应该是20年前的一次演讲文稿,但可以从中学习一些思想。有兴趣的朋友可以读一下。


作者知乎号:六三,欢迎关注。


更多内容请点击以下链接:


安全多方计算入门级介绍一

安全多方计算学习路线

安全多方计算开源框架梳理

初识安全多方计算(Getting to know SMPC)

安全多方计算:理论、实践与应用



欢迎投稿

邮箱:kedakeyin@163.com

参与更多讨论,请添加小编微信加入交流群

文章转载自陆叁,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论