假设存在一条消息,如果同时由Alice和Bob签名,则认为该消息是有效的。她。

但是,由于种种原因,爱丽丝不希望鲍勃收到她也没有的完整签名的消息。如果她只是签名并发送邮件,他就可以签名而不发送回。

(可以由受信任的第三方完成,该第三方只需将消息托管到收到两个签名,然后释放两个签名即可)给爱丽丝和鲍勃。当然,我想要一个没有第三方的解决方案。)

评论

查看公平合同签署协议。

#1 楼

这是现代密码学提出的最早的问题之一。有证据表明您无法实现完全公平的合同签署。但是,有一些合理的选择。我个人不喜欢一个叫做“逐步释放”的方向。我认为有很多前途的模型称为“乐观模型”。在此模型中,有一个受信任的第三服务器,仅在当事方之一作弊时才被调用,并且可以在没有对方的情况下获得签名。从某种意义上说,这种模式非常好,因为一旦服务器存在,就不会有作弊的动机,因为无论如何,对手都知道它无法获得任何收益。我注意到,当一方请求其“帮助”时,服务器可以信任回答,但不会学到任何东西。 Silvio Micali在与不可见的受信任方进行的公平电子交易中引入了此模型。您可以在Cachin和Camenisch的“乐观的公平安全计算”以及Shmatikov和Mitchell的“公平交换协议分析”中了解有关此模型的更多信息。

我真正喜欢的另一个方向是并发签名。在此模型中,一方首先获得签名。但是,如果对方看到签名,则可以使用该签名来完成自己的签名。因此,这实际上是不公平的(第一个拥有签名),但是如果第一个想要使用其签名强制执行任何操作,则必须将其显示给第二个,在这种情况下,第二个可以完成应该接收的签名。在大多数实际情况下,我可以认为这已足够,并且可以绕过现有的不可能结果。此模型的优点是您不需要(最低)受信任的第三方(在实践中会出现问题)。如何使用比特币设计公平协议的论文显示了如何做到这一点(尽管从理论上讲)。这里的想法非常好。

评论


$ \ begingroup $
非常有趣。我会通读这些东西。顺便说一句,我之所以这样问是因为我们正在为付款渠道使用这样的系统,这听起来很像公平交易:altheamesh.com/documents/universal-payment-channels.pdf
$ \ endgroup $
–詹汉
16年5月5日在17:25

$ \ begingroup $
我当然很困惑。您所描述的“并发签名”在本质上与OP的第二句话(OP希望最终能够避免的情况)完全相同吗?
$ \ endgroup $
–沉莫功
16年6月6日在7:20

$ \ begingroup $
不,您要避免的情况是爱丽丝签名并发送给鲍勃,然后鲍勃不发回。如果Bob拒绝签名,则Alice将永远无法获得签名。在并发签名中,即使Bob不回答,他持有的签名实际上也包含Alice为了完成她应该接收的签名所需的信息。这有点令人困惑,所以最好阅读本文。
$ \ endgroup $
–耶胡达·林德尔(Yehuda Lindell)
16年6月6日在7:22

$ \ begingroup $
谢谢。我还有一个问题:使用可视密码技术,可以将文档分为两部分,如果我没有犯错,那么为了获得原始文档,都需要使用这两部分。为了目前的目的,让爱丽丝和鲍勃分别签下另一对签约是否可行,或者相反地存在缺陷,风险和严重问题?
$ \ endgroup $
–沉莫功
16年6月6日在13:30

$ \ begingroup $
如果您需要他们物理上位于同一房间中以使签名聚集在一起,则可以使用此方法,但是对于这种情况,有许多更简单的解决方案。
$ \ endgroup $
–耶胡达·林德尔(Yehuda Lindell)
16年6月6日在13:32

#2 楼

当Alice和Bob在网上签署数字化合同时,涉及到签名过程公平性的问题如下:如果Alice首先对文档进行签名并将其发送给Bob,则表示她已经做出了某些承诺(例如,准备好以一定价格从Bob那里购买商品),Bob可以在一定程度上延迟提供数字签名的时间,因此可以有一定的时间间隔,在此期间他没有相应的承诺。显然,这是不公平的,因此,如果可能的话,应该避免。

请注意,使用可视密码技术可以将文档分为两部分,以便它们可以共同复制原始文档,但没有一个单独提供任何信息在本文中,我们提出了以下协议,该协议可以很好地满足当前上下文中的公平性要求。由A签名,并且A从而向U承诺,并且没有别的,例如

步骤1:爱丽丝制定合同文件C,用可视密码生成对(X,Y),向Bob发送一条包含签名的(Alice,X)和Y的消息,并要求他在将来的某一天T之前接受C,并承诺在一定的时间段TP中完成合同的正式性,以防Bob在步骤2中向C承诺。

步骤2:Bob从(X,Y)获得C。如果他不能接受C,他会通知爱丽丝,并且该协议将从步骤1重新开始。否则,他向爱丽丝发送一条包含签名(Bob,X)和签名(Bob,Y)的消息,并要求她释放C。 Bob在到达T之前不执行任何操作,该协议从步骤1重新开始。)

步骤3:爱丽丝检查鲍勃(Bob)是否签署了正确的材料,即他是否没有签名。错误地用Z!= X发送了signed(Bob,Z)代替signed(Bob,X)。如果Bob签名了错误的东西,她会通知Bob,并且协议将从步骤1开始。否则释放C,签名(Alice,X),已签名(Alice,Y),已签名(Bob,X)和已签名(Bob,Y)。 (爱丽丝负责在TP中完成第3步。)

第1步和第2步的消息应使用签密发送,即用接收者的公钥加密并由发送方签名,并带有身份验证(完整性检查)。要解决最终的计时问题,应要求提供回执确认。

(b)如果Bob在步骤2中提交给C,那么Alice也必须立即提交给C,因为(X,Y)对源自她自己(因此她最终不能声称C对应于Z!= Y)的(X,Z)。也就是说,C实际上已经是有效的文档。因此,这里也不会存在上述性质的不公平现象。

(c)我们的协议不涉及/不需要任何受信任的第三方,这是一个优势。

[2016年6月18日编辑]

[附录19.06.2016]有一些文献声称(如果我没有误解的话)我们的体裁协议是不可能的。不幸的是,我的卑鄙知识不足以对其进行详细研究,以解决我们的结果与不可能的要求之间明显的矛盾。有兴趣探究该矛盾起因的读者可能最终希望阅读H. Pagnia和FC Gaertner(1999年)的论文,题为“关于没有受信任的第三方的公平交换的可能性”,但目前该机构无法在线访问该论文最初是发表的。在这种情况下,我可以发送副本。 (我的地址:mok-kong.shen@t-online.de)

评论


$ \ begingroup $
我看不到您的协议如何绕过Yehuda Lindell引用的基本不可能性证明。特别是,如果需要将所有四个签名(signed(Alice,X),signed(Alice,Y),signed(Bob,X)和signed(Bob,Y))都视为文档签名,那么Alice可以作弊在第3步中,对自己保持签名(Alice,Y);如果signed(Alice,Y)是可选的,则Bob可以在步骤2中执行相同的操作,并保留自己的两个签名。无论哪种方式,当事一方都以有效,可用的签名结尾,而另一方则没有。
$ \ endgroup $
–伊尔马里(Ilmari Karonen)
16年6月17日在7:16

$ \ begingroup $
我担心在Bob提交之后,Alice必须对Y进行提交,因为这对(X,Y)源自她自己(她现在不能说文档对应于(X,Z))。不清楚吗?
$ \ endgroup $
–沉莫功
16年6月17日14:15



$ \ begingroup $
@IlmariKaronen:我的上述评论的补充:我想与我的计划相比,“根本不可能证明”可能还假设了其他内容,或者某个地方存在错误。
$ \ endgroup $
–沉莫功
16 Jun 17'14:29



$ \ begingroup $
是的。 ``Adversarial-Alice诚实地执行了第1步,从Bob接收了第2步消息,然后不发送其他任何消息。 Now现在对手具有[X,Y,signed(Bob,X),signed(Bob,Y)],签名验证算法可能将其接受为C的签名,但是Bob并没有签名验证算法接受的任何内容作为C的签名(如果我正确理解了您提出的签名验证算法)。
$ \ endgroup $
–user991
16年6月21日在3:03

$ \ begingroup $
不,因为对手完全有能力兑现诺言。
$ \ endgroup $
–user991
16年6月21日在18:26