裁决协议

    由于雇用仲裁者代价高昂,仲裁协议可以分成两个低级的子协议。一个是非仲裁子协议,这个子协议是想要完成协议的各方每次都必须执行的;另一个是仲裁子协议,仅在例外的情况下执行的,即有争议的时候才执行,这种特殊的仲裁者叫做裁决人(参见图2.1中的b)。

    裁决人也是公正的和可信的第三方。他不像仲裁者,并不直接参与每一个协议。只有为了要确定协议是否被公平地执行,才将他请来。

    法官是职业的裁决者。法官不像公证人,仅仅在有争议时才需要他出场,Alice和Bob可以在没有法官的情况下订立合同。除非他们中有一个人把另一人拖到法院,否则法官决不会看到合同。

    合同—签字协议可以归纳为下面形式:

    非仲裁子协议(每次都执行):

        (1)Alice和Bob谈判合同的条款。

        (2)Alice签署合同。

        (3)Bob签署合同。

    裁决子协议(仅在有争议时执行):

        (1)Alice和Bob出现在法官面前。

        (2)Alice提出她的证据。

        (3)Bob也提出他的证据。

        (4)法官根据证据裁决。

    裁决者和仲裁之间的不同是裁决者(在这本书中用的)并不总是必需的。如果有争议,法官被请来裁决。如果没有争议,就没有必要请法官。

    已有计算机裁决协议。这些协议依赖于与协议有关的各方都是诚实的;如果有人怀疑欺骗时,一个中立的第三方能够根据存在的数据正文文本判断是否有人在欺骗。在好的裁决协议中,裁决者还能确定欺骗人的身份。裁决协议是为了发现欺骗,而不是为了阻止欺骗。发现欺骗是起了防止和阻碍欺骗的作用。

自动执行的协议

    自动执行的协议是协议中最好的。协议本身就保证了公平性(参看图2.1中的c)。不需要仲裁者来完成协议,也不需要裁决者来解决争端。协议的构成本身不可能发生如何争端。如果协议中的一方试图欺骗,其他各方马上就能发觉并且停止执行协议。无论欺骗方想通过欺骗来得到什么,他都不能如愿以偿。

    最好,让每个协议都能自动执行。不幸的是,在所有情形下,没有一个是自动执行的协议。

对协议的攻击

    密码攻击可以直接攻击协议中所用的密码算法、用来实现该算法和协议的密码技术、或者攻击协议本身。本书这节仅讨论协议。我们假设密码算法和密码技术是安全的,只关注对协议本身的攻击。

    人们可以采用各种方法对协议进行攻击。与协议无关的人能够偷听协议的一部分或全部,这叫做被动攻击。因为攻击者不可能影响协议,所有他能做的事是观察协议并试图获取信息。这种攻击相当于在1.1节中讨论的唯密文攻击。由于被动攻击难于发现,因此协议应阻止被动攻击而不是发现这种攻击。在这种协议中,偷听者的角色将由Eve扮演。

    另一种攻击可能改变协议以便对自己有利。他可能假装是其它一些人,在协议中引入新的信息,删掉原有的信息,用另外的信息代替原来的信息,重放旧的信息,破坏通信信道,或者改变存贮在计算机中的信息等。这些叫做主动攻击,因为他们具有主动的干预。这种形式的攻击依赖于网络。

    被动攻击试图获取协议中各方的信息。他们收集协议各方所传送的信息,并试图对它们进行密码分析。而主动攻击可能有更多的目的。攻击者可能对获取信息感兴趣,也可能降低系统性能,破坏已有的信息,或者获得非授权的资源存取。

    主动攻击严重得多,特别是在那些各方都不必彼此信任的协议中。攻击者不一定都是入侵者,他可能是合法的系统用户,他们可能是系统管理员。甚至有很多主动攻击者,他们都在一起工作,每人都是合法的系统用户。这个恶意的主动攻击者的角色将由Mallory扮演。

    攻击者也可能是与协议有关的各方中的一方。他可能在协议期间撒谎,或者根本不遵守协议,这类攻击者叫做骗子被动骗子遵守协议,但试图获取协议外的其他信息。主动骗子在协议的执行中试图通过欺骗来破坏协议。

    如果与协议有关的各方中的大多数是主动骗子,就很难保持协议的安全性。但合法用户发觉是否有主动欺骗却是可能的。当然,协议对被动欺骗来说应该是安全的。