使(安全计算)协议描述和证明更简单的一种常见方法是在混合模型中描述它们,其中实际世界中的协议可以访问一些辅助的理想功能F(例如理想的OT功能)。让我说,我只关心独立的安全性(相对于UC)。假设对F的所有调用都是顺序的(即不交错或并行),并且双方在呼叫开始和结束之间不相互通信,那么(据我理解)我可以使用常规的独立安全协议的顺序组合来实例化具有独立安全协议的混合协议,以获得一个整体的独立安全协议。
我的问题是反应性的功能,即保持状态的功能,为了具体起见,还有承诺。比方说,我想证明Blum的投币协议在承诺混合模型中是安全的(参见这里中的协议和证明,这不是混合模型中的)。
协议简介:爱丽丝和鲍勃想抛出一枚公平的硬币:
我似乎遇到了一个问题,因为我无法用独立的安全承诺方案实例化我的混合体,因为在Alice执行承诺和Alice打开它之间,各方进行通信。
规避这个问题最常见的方法是什么?我现在唯一能找到的就是在多党计算功能的复杂性中,作者们在这里说(在第6页的脚注8中):
通过在所有n方之间秘密共享功能的内部状态,可以将反应性功能还原为非反应性功能。
我不明白这意味着什么。这意味着什么(具体地说是掷硬币的例子),这是在掷硬币的例子中处理我描述的问题的最常见的方法吗?
发布于 2018-08-08 20:20:45
首先是你关于脚注的问题。我想我可以扩展它,因为我可能是写脚注的人。
您可以按以下方式对反应性功能进行建模:
在这里,$f$是一个确定性函数,它是这个功能的特征。$s$的初始值是公共信息。该脚注中提出的是关于反应性功能的以下协议:
该协议的不变之处在于,在每一步,各方都持有反应性功能内部状态的秘密共享。在每个步骤中,它们执行一个非反应性计算,该计算重新构造内部状态并执行反应功能的一个步骤。
对于半诚实的安全,任何标准的秘密共享方案都可以在这里使用。对于恶意安全性,您需要能够检测到篡改股票(因为没有什么可以阻止Alice在第一轮中接收到$s'_A$作为输出,并在下一轮中提供除$s'_A$作为输入之外的其他内容)。
现在让我们来看看你对承诺的具体关注。您是对的,在承诺功能的生命周期中,各方之间存在着沟通。如果您将承诺功能的整个生命周期看作一个单元,那么在独立设置中进行回绕/模拟是有问题的。
但是承诺功能有两个阶段:提交阶段和显示阶段。解决问题的方法是要求每个阶段的模拟器都是本地的。也就是说,当您模拟显示阶段时,您不能回退到显示阶段之前(虽然您可能在提交阶段做了一些回退,但是在声明提交阶段之后,您现在仍然停留在这个历史记录中)。
如果您查看典型的安全承诺定义,他们就是这么说的。
如果您想知道这是否意味着我们已经需要更强的UC安全性,而不是独立的,那么考虑一个具有10轮提交阶段和10轮显示阶段的承诺协议是有帮助的。如果该协议是UC安全的,您可以在更大的协议中使用它,并要求各方在提交阶段的第7轮中发送额外的消息。但这对我给出的独立定义是没有好处的,因为可能会有很多次让我们在第7轮中来回回绕。因此,这个独立的定义说:反应性功能的每个单独阶段都应该是“原子的”。这确实是在您的投币协议描述中发生的情况:完成提交阶段,等待它完成,然后才发送随机比特。因此,这就是为什么您的投币协议是独立的-当用独立的安全承诺实例化时是安全的。
总之,在反应性功能的生命周期内,各方之间的沟通是合情合理的,但只有在反应功能的不同“阶段”之间才是如此。
https://crypto.stackexchange.com/questions/60741
复制相似问题