如何写好Simulation证明(二): 半诚实模型下MPC的定义

3. Secure Computation – Simulation for Semi-honest Adversaries

我们在这里考虑的模型是 static semi-honest 敌手下的两方安全计算. 这样的敌手能够在协议开始之前决定控制某一方, 并且需要按照协议的描述执行.

需要注意的是, 这是一个非常弱的假设. 如果敌手没有按照协议流程执行, 那就会打破这个协议, 比如以一种不随机的方式挑选随机带.

通常我们在设计MPC协议的时候, 设计半诚实敌手模型下的安全的协议是第一步. 设计这样的安全协议比设计恶意敌手模型下的安全协议要容易得多, 因为我们明确知道敌手会干嘛(以协议要求的方式运行).

3.1 半诚实敌手的安全性定义

两方安全计算. 假设两个人的输入分别为 x1,x2, 在协议结束后他俩没人各自获得了一个函数值, 我们记作 f1(x1,x2),f2(x1,x2). 整个协议的functionality我们记作: f=(f1,f2).

模拟保护的隐私. 我们如何形式化地定义这里头的安全性?

这个形式化的定义意味着: 参与者不能从协议的执行过程获得任何其他的信息

有一个点需要我们注意, 由于参与者是半诚实的, 这保证了他们使用他们的 input tape 上面的字作为输入. 这很重要, 因为这保证了输出跟敌手是无关的. 举个例子, 如果输入是 (x,y), 那么输出就是 f(x,y), simulator会得到这个值. 但是如果是malicious敌手, 情况就完全不一样, 因为恶意的敌手能够忽视input tape上面的字, 自己决定输入什么. (这与ZKP中的恶意verifier类似, 他可以忽略随机带的随机数, 自己任意的给出挑战.)

安全性定义. 在给出安全性定义之前, 我们先给出下面的符号:

  • 协议 π(x,y) 为输入, 安全参数为 n, 那么我们用 viewiπ(x,y,n) 表示第 i 个人的view. 具体来说 viewiπ(x,y,n)=(w,ri;m1i,...mti). 其中 w{x,y}, r 表示这个参与者的随机带, m 表示消息.
  • 类似于view. 以 (x,y) 为输入, 安全参数为 n, 那么我们用 outputiπ(x,y,n) 表示第 i 个人的输出. 另外整个协议的输出表示为 outputπ(x,y,n)=(output1π(x,y,n),output2π(x,y,n)).

正式的安全性定义: f=(f1,f2) 是一个functionality. 在静态, 半诚实敌手模型下, 如果存在PPT的 S1, S2满足下面两个式子, 我们就说协议 π 安全地计算了 f.

(1){(S1(1n,x,f1(x,y)),f(x,y))}x,y,nc{(view1π(x,y,n),outputπ(x,y,n))}x,y,n(2){(S2(1n,y,f2(x,y)),f(x,y))}x,y,nc{(view2π(x,y,n),outputπ(x,y,n))}x,y,n

其中 x,y0,1,|x|=|y|,nN.

Remarks. 我们介绍一下这个定义里simulation的逻辑. 比如在 (1) 中, 这个模拟器 S1 不需要另一参与者的输入和输出, 就能够 "看到(模拟出)" 拥有 x 的参与者在协议中所能看到的信息. 换句话说, 拥有 x 的参与者能从协议副本里获得的知识, 都能够由该参与者自己私密的输入输出获得. 相当于, 他没有学到关于 y,f2(x,y) 的知识.

确定性函数 f. 如果 f 是确定性的, 那么定义更简单, 满足下面两个等式.

(3){(S1(1n,x,f1(x,y))}x,y,nc{view1π(x,y,n)}x,y,n(4){(S2(1n,y,f2(x,y))}x,y,nc{view2π(x,y,n)}x,y,n

其实很容易理解, 我们关注去掉的几项.
在确定性函数中, 由于没有随机性, 协议的输出一定严格等于函数的输出, 所以可以去掉.
(这里可能之后再补充细节一点.)

半诚实敌手模型中的triviality. 在这个模型下, 很多密码学原语是很好达到的. 因为他会按照协议的规定去做. 比如零知识是trivial的, 在这个协议中, Prover就给Verifier说: this is true. Verifier也会接受, 当然是不泄露任何信息的, 因为他啥也没说. 但是这个协议也是对的, 因为这是半诚实敌手模型. 再比如承诺方案. 承诺阶段, Commiter啥也不发, 打开阶段, Commiter把那个值发给Receiver. 显然是Perfect hiding的. 啥也不发当然1bit也不会泄露. 另外也是Perfect binding的, 因为他是半诚实的, 我们要求他打开的时候就会发那个特定的值. Coin tossing协议也是如此. 但是! 我们会看到, 即使在这种模型下, 两方一起计算简单的函数是non-trivial的.

附属信息. 在定义恶意敌手时, 我们需要会考虑 auxiliary input. 但其实定义中有一些附属信息, 比如我们考虑 non-uniform 的区分器, 这个区分器就是带附属信息的. 但是执行协议的敌手不需要附属信息, 因为我们考虑的是半诚实模型, 所以他们会按照协议的规定执行.

posted @   神龙小虾  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示