1982年,莱斯利·兰波特(Leslie Lamport)在同名文章中提出了所谓「拜占庭将军问题」(Byzantine Generals Problem)。该文摘要如下:

可靠的计算机系统必须处理发生故障的部件,这些部件向系统的不同部分提供相互冲突的信息。可将这一情况抽象表示为一群拜占庭军队的将军(a group of generals of the Byzantine army)及其部队在敌人的城市周围扎营。将军们的唯一沟通方式是信使,且必须就一个共同作战计划达成一致。然而,将军中的一位或多位可能是叛徒,会迷惑其他人。问题是要找到一种算法来确保忠诚的将军们能达成一致。研究表明,仅使用口头信息,当且仅当超过三分之二的将军为忠诚时,该问题可解。如果使用不可伪造的书面信息,对任意数量的将军与可能的叛徒来说,这一问题都可解。随后,本文讨论了这些解决方案在可靠的计算机系统中的应用。
拜占庭将军问题图示
拜占庭将军问题图示

在对该问题的分析中,兰波特发现,在口头传递信息的状态下,拜占庭将军问题相当难解,因为我们难以限制撒谎者的能力,因此需要三分之二以上的将军保持忠诚,问题才可解。然而,如果引入了不可伪造的书面信息,具体来说,该问题解决的关键在于对撒谎者进行以下两点限制:「A.一位忠诚的将军的签名无法被伪造,任何对其签名内容的改动都可以被发现;B.任何人都可以验证一位将军的签名的真实性。」

兰波特所谓的书面拜占庭将军问题导向的解决方案是七十年代中后期发明的「公钥密码学」(非对称加密),其中任意一组加密中存在一个公开可访问的公钥(可被任意人验证的签名)和一个只用于私人解密的私钥。在公钥密码学的基础上,出现了零知识证明(ZKP)与区块链等等发展。本文不深入讨论兰波特对该问题的解决,本文关注的是拜占庭将军问题如何作为一种隐喻,揭示了大规模密码学网络背后的基本假定。

回到拜占庭将军问题,该问题有如下几个假设:

  1. 将军们彼此是零知识状态(ZK);
  2. 将军们隶属一个团体;
  3. 团体内部随时可能有叛徒。

上述几个假设在计算机系统环境中,作为一种最坏假设,完全可以成立。然而,作为一种隐喻,三项假设似乎存在相互冲突的地方。我们可以将其怪异之处列举如下:

  1. 我们虽隶属于同一团体,但出于某种原因,我们彼此零知识;
  2. 我们虽隶属同一团体,但该团体随时可能有叛徒;
  3. 该团体本身有如此严重的问题,但我们仍需要该团体运作。

对于任何一个社会内的团体来说,团体成员之间既不可能处于零知识状态,也不可能随时假定内部存在叛徒,若是如此,该值得处理的就是该团体本身而不是团体成员。可是这种危机四伏的状态对系统和其中的节点来说究竟意味着什么?我们可以找到一个和这一想象略为接近的假设:「自然状态」(Naturzustand)。

「由于相互的不相任,因此,人除了自保 (Selbsterhaltung)之外,别无他途。亦即,以暴力施加于人或以诡计害人,确保再无其它威胁出现为止,这毋宁是合乎理性的行为。因为这是自保所必须,且为自保所允许。因为有些人想要扩张自己的权力,侵夺他人,超出维护自身必要的程度,如此也使得相对人无法紧守防御的界限,除非自己也采取攻击的手段。如此一来,则只有征服他人才能达到自保的目的,也必定是被允许的。」

同样是处在一种危险环绕的环境中,霍布斯所谓的「自然状态」与「拜占庭将军问题」所假定的状态有着根本的差别:自然状态中的「我」将他人设想为同样自利的人,我通过理解自身去理解他人,我与他人一样是为了自保或扩张权力而发起攻击。简言之,自然状态中存在一种基本的「可理解性」,而彼此的行动也奠基于这种可理解性之上:「我」之所以是狼(homo homini lupus),是因为他人也是狼。

然而在拜占庭将军问题所设想的场景中:其一,「我」并不会为了所遭遇的危险去攻击他人,我的唯一行动是防守,不让危险威胁到我(或者是整个系统);其二,「我」从根本上无法理解背叛者的行动。背叛者处在与我截然不同的世界中。我无法掌握与他/她相关的更多信息,唯一可以确认的是,在我所处的世界/环境/组织中,极有可能存在着破坏性的异质因素(背叛、谎言、玩笑,不同程度的恶意都将破坏系统的一致性),而我必须为了这种可能性而努力。

因此,这种危机四伏的状态并不是一种个人状态。它对个人的破坏性源于对系统的破坏性,甚至可能根本不存在对个人的破坏能力——系统宕机并不一定会影响系统中组件的存活,因此,将军们守护的是某项战略而非自身。再次审视拜占庭将军们面临的状况:一个彼此零知识、可能存在叛徒且必须存续的团体/社会。这是一个前现代的社会理论(甚至现代社会理论)中从未出现过形象。现代理论家的确构想过一种陌生的带有敌意的社会,但这种社会并非「正常」的社会,而是一种病态。

不仅如此,在最极端的系统设想中,社会内的成员之间也并不会达到零知识的状态:我始终可以通过最基本的着装、谈吐、职业、场合等等信息判断对方,除非对方有意对所有这些信息进行伪装或隐藏,可一旦出现类似状况——外卖小哥不再穿着黄蓝制服而是黑衣黑帽沉默不语——你要做的也并非对一个零知识的人进行判定,而是将他/她逐出互动范围。简单说,在绝大多数社会互动中,零知识团体不可能存在,一个团体内,任何零知识的对象都将被直接驱逐,而不可能获得被判定的机会(除非判定意味着对信息的持续揭露)。

所以,在拜占庭将军问题中,真正被预先给定的是将军们所处的团体或他/它们要服从的东西:一套游戏规则,或者说该团体本身。拜占庭将军问题默认了该团体的必要性/自在性,并将此框架内要求将军们进行解题。只在此情况下,将军们才需要将自身模拟成一个系统中的组件或网络中的节点,并由此引入密码学来保护自身:「A.一位忠诚的将军的签名无法被伪造,任何对其签名内容的改动都可以被发现;B.任何人都可以验证一位将军的签名的真实性。」

将这一隐喻继续向上还原,问题在于:其一,如果社会是此处的团体,那么社会的必要性的确是预先给定的,因此问题在于这种解题的意识,或者拜占庭将军问题预设的场景是否是一种社会性的场景,或者毋宁说,它是一种系统场景的社会应用;其二,如果此处的必要性没有提前给定,那么值得怀疑的就是拜占庭将军们所处的团体,或者说这张网络,它似乎伪装出了一种自然性,并且假装系统内的零知识运作存在系统之外的意义。

模拟所谓自然状态的说法,我们可以将上述两个层面理解为一种非自然状态,或者更直接地说,一种「系统状态」。系统状态意味着:其一,系统内的个体存在一种特殊的被其他节点/个体背叛的焦虑,解决这一焦虑的方式似乎是引入一种非社会性的信任结构;其二,系统本身试图伪装成必要,或试图证明其必要性,即便任意系统内的零知识结构都必须要求系统外知识的介入——即便这种零知识结构足够完备,例如,除去语言这类因素外,在值得考虑的部分上,达成了零知识要求,但这种零知识要求仍旧需要被另外的先验知识结构所确认,只是在理想状态下,这种知识结构不具备社会性。

更简单的说,作为大规模加密网络基础叙事的拜占庭将军问题描述了这样一个故事,即人类可以用一种极限的非社会性去对抗非社会性,即便这种极限的非社会性不具备实质可能性——例如作为加密网络的基础,每个人都可以验证RSA算法,但不可能真正要求每个参与者都去验证RSA算法,RSA的效力在大部分情况下仍然由社会因素给定——即便原本情况锁设定的非社会性可能并不存在。故此,需要进一步考察的是拜占庭将军问题所揭示的场景,是否反应了某种真实的社会焦虑或至少是某些团体内部的焦虑,而这种焦虑是否具有更普遍的意义。