首页 > 其他分享 >如何写好Simulation证明(二): 半诚实模型下MPC的定义

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

时间:2024-05-09 12:58:37浏览次数:24  
标签:协议 right MPC 敌手 Simulation 诚实 left pi view

3. Secure Computation – Simulation for Semi-honest Adversaries

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

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

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

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

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

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

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

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

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

  • 协议 \(\pi\) 以 \((x, y)\) 为输入, 安全参数为 \(n\), 那么我们用 \(view^\pi_i(x, y, n)\) 表示第 \(i\) 个人的view. 具体来说 \(view^\pi_i(x, y, n) = (w, r^i; m^i_1, ... m^i_t)\). 其中 \(w \in \{x,y\}\), \(r\) 表示这个参与者的随机带, \(m\) 表示消息.
  • 类似于view. 以 \((x, y)\) 为输入, 安全参数为 \(n\), 那么我们用 \(output^\pi_i(x, y, n)\) 表示第 \(i\) 个人的输出. 另外整个协议的输出表示为 \(output^\pi(x, y, n) = (output^\pi_1(x, y, n), output^\pi_2(x, y, n))\).

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

\[\begin{align}\left\{({S}_1(1^n,x,f_1(x,y)),f(x,y))\right\}_{x,y,n}&\stackrel{ {c}}{\equiv}\left\{(\text{view}_1^\pi(x,y,n),\text{output}^\pi(x,y,n))\right\}_{x,y,n} \\ \left\{({S}_2(1^n,y,f_2(x,y)),f(x,y))\right\}_{x,y,n}&\stackrel{ {c}}{\equiv}\left\{(\text{view}_2^\pi(x,y,n),\text{output}^\pi(x,y,n))\right\}_{x,y,n} \end{align} \]

其中 $x, y \in {0, 1}^*, |x|=|y|, n \in \mathbb N $.

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

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

\[\begin{align}\left\{({S}_1(1^n,x,f_1(x,y))\right\}_{x,y,n}&\stackrel{ {c}}{\equiv}\left\{\text{view}_1^\pi(x,y,n)\right\}_{x,y,n} \\ \left\{({S}_2(1^n,y,f_2(x,y))\right\}_{x,y,n}&\stackrel{ {c}}{\equiv}\left\{\text{view}_2^\pi(x,y,n)\right\}_{x,y,n} \end{align} \]

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

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

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

标签:协议,right,MPC,敌手,Simulation,诚实,left,pi,view
From: https://www.cnblogs.com/yangm17/p/18181874

相关文章

  • 如何写好Simulation证明(三): 半诚实敌手模型下的OT
    4.ObliviousTransferforSemi-HonestAdversaries在本文中,我们将给出一个证明:基于enhancedOWP,构造一个半诚实敌手模型下的OT.首先我们先介绍enhancedOWP概念.4.1EnhancedOWP.对这个特殊的OWP我们先不做过多的解释,我们先关注参数.一般正式的定义中,一个OWP具......
  • 如何写好Simulation证明(一): 语义安全
    密码学中很多证明需要用到Simulation,尤其是ZK,MPC等等.对于初学者来说,涉及Simulation的证明往往不容易理解,更别说自己独立证明,所以有必要学习一下如何写这样的证明.文章主要参考YehudaLindell的讲义:Howtosimulateit.1.Introduction什么是Simulation?中文翻译......
  • Project0 Nbody-simulation
    讲义:NBodySimulation|CS61BSpring2018为什么使用Git命令+javac??答:这样可以单独的编译和运行某一个程序,而IDE编译一个程序的时候还会编译其它的程序,会很烦人翻译时绕过数学公式goole浏览器按F12进入网页控制台,输入$('math,.math,.MathJax').attr('translate','no');j......
  • mpcmdrun.exe 是 Windows Defender 的命令行界面工具,用于运行 Windows Defender 的扫
    mpcmdrun.exe是WindowsDefender的命令行界面工具,用于运行WindowsDefender的扫描和其他安全操作,如更新病毒定义文件、运行快速扫描等。它是WindowsDefender的一部分,用于保护系统免受恶意软件和其他安全威胁的侵害。这个程序通常自动运行,并在后台处理安全任务,以......
  • 52 Things: Number 32: difference between game-based and simulation-based securit
    52Things:Number32:differencebetweengame-basedandsimulation-basedsecuritydefinitions52件事:数字32:基于游戏和基于模拟的安全定义之间的区别 Thisisthelatestinaseriesofblogpoststoaddressthelistof'52ThingsEveryPhDStudentShouldKnowt......
  • HSPF(Hydrological Simulation Program Fortran)模型
    HSPF模型与SWAT模型一样都是著名的水文模型软件,在世界各地的水文模拟中得到广泛的应用。由于种种原因,HSPF模型在国内的影响力不如SWAT;但是,HSPF模型也有其自身的优势,比如:1.它有很高集成度的前后处理软件,减轻建模的负担;2.它可以自主调节水文响应单元的大小,模型有更好的灵活性;3.它......
  • 【Simulink】电池buck-boost+PI+FCS-MPC直流母线稳压
    【Matlab综合设计】开环Buck-Boost升压-降压式变换器Simulink仿真(含仿真模块选择和参数计算过程)之前写过一篇博客,是关于Buck-Boost变换器的开环控制,本篇博客将介绍Buck/Boost变换器结合PI+FCS-MPC控制的应用——直流母线稳压。1.Buck-Boost变换器Buck-Boost变换器可看做......
  • 基于MPC的车辆自动泊车轨迹跟踪控制+代码
    基于MPC的车辆自动泊车轨迹跟踪控制+代码附赠自动驾驶学习资料和量产经验:链接一、MPC理论推导参考《无人驾驶模型预测控制》与《模型预测控制》首先是最优控制,之前总结LQR是一种无约束的线性二次最优控制问题,通过求解Ricatti方程得到最优控制率,而对于非线性系统,求取最优控制......
  • simulation roadmap
    thenextstepwouldbedevelopinganewmodellanguage.SIMANPegden,C.D.,IntroductiontoSIMAN,WinterSimulationConference1983.https://informs-sim.org/wsc83papers/1983_0004.pdfSturrock,D.T.,Pegden,C.D.,IntroductiontoSIMAN,ProceedingsWinte......
  • 利用SOLIDWORKS Flow Simulation来进行旋转流体仿真
    前段时间,一个朋友去到一家做水泵的行业,问我SOLIDWORKS能够做流体仿真么?我说,能啊。朋友又问,我现在做水泵,里面的叶片旋转,可以模拟么?我说,当然可以了啊。那么,我就做了个小例子给他,首先,我先建了个如下图所示模型,当然真正的泵不是这样的,我这个,只是玩具,甚至连玩具都称不上。  看到......