有骗子的秘密共享

    有许多方法可欺骗门限方案,,下面是其中的几种¾

    情景1:上校Alice、Bob和Card在某个隔离区很深的地下掩体中。一天,他们从总统那里得到密码消息:“发射那些导弹,我们要根除这个国家的神经网络研究残余。”Alice、Bob和Carol出示他们的“影子”,但Carol却输入一随机数。她实际上是和平主义者,不想发射导弹。由于Carol没有输入正确的“影子”,因此他们恢复的秘密是错误的,导弹还是停放在发射井中。甚至更糟糕的是,没有人知道为什么会这样。即使Alice和Bob一起工作,他们也不能证明Carol的“影子”是无效的。

    情景2:上校Alice和Bob与Mallory正坐在掩体中。Mallory假装也是上校,其他人都不能识破。同样的消息从总统那里来了,并且每人都出示了他们的“影子”,“哈,哈!”Mallory大叫起来,“我伪造了从总统那里来的消息,现在我知道你们两人的“影子”了。在其他人抓住他以前,他爬上楼梯逃跑了。

    情景3:上校Alice、Bob和Carol与Mallory一起坐在掩体中,Mallory又是伪装的(记住,Mallory没有有效的影子)。同样的消息从总统那里来了,并且每人都出示了他们的“影子”,Mallory只有在看到他们三人的“影子”后才出示他的“影子”。由于重构这个秘密只需要三个影子,因此他能够很快地产生一有效的“影子”并出示。现在,他不仅知道了秘密,而且没有人知道他不是这个方案的一部分。

    处理这些欺骗的一些协议在23.2节中讨论。

没有Trent的秘密共享

    五个官员中有三个人插入他们的钥匙,才能打开银行的金库。这听起来像一个基本的(3,5)门限方案,但是有一个保险装置。没有人知道整个秘密,没有Trent来把秘密分成5部分。存在一种五个官员可以产生秘密的协议,通过这协议,每人得到一部分,使得官员们在重构它之前,无人知道这个秘密[443]。我不准备在这本书中讨论这些协议,详细资料见[756]。

不暴露共享的共享秘密    

    上述方案有一个问题。当每个人聚到一起重构他们的秘密时,他们暴露了他们的共享。其它不必出现这种情况。如果共享秘密是私钥(例如对数字签名),那么n个共享者中的每一个都可以完成文件的一部分签名。在第n部分签名后,文件已经用共享的私钥签名,并且共享者中没有人了解任何其它人的共享。秘密能够重用是关键,并且你不必用可信的处理器去处理它。Yvo Desmedt 和Yair Frankel对这个概念进行了进一步的探索。

可验证的秘密共享

    Trent给Alice、Bob、Carol和Dave每人一部分(秘密),或至少他说他这样做了。他们中的任何人想知道他们是否有有效部分,唯一的办法是尝试着去重构秘密。也许Trent发给Bob一个假的共享,或者由于通信错误,Bob偶然接收到一个坏的共享。可验证的秘密共享允许他们中的每个人分别验证他们有一个有效的共享,而不用重构这个秘密[558,1235]。

带预防的秘密共享方案

    一个秘密被分给50个人,只要任何10个人在一起,就可以重构这个秘密。这样做是容易的。但是,当增加约束条件,要20人在一起才能恢复秘密同时要防止其他重构秘密时,我们能实现这同一秘密共享方案吗?是否多少人共享都没有问题?已经证明,我们能够做到[153]。

    数学当然十分复杂,但其基本思想是每个人得到两个共享:一个“是”和一个“否”的共享。当重构秘密时,每个人提交他们的一个共享。他们提交的实际共享依赖于他们是否希望重构秘密。如果有m或更多个“是”共享和少于n个“否”共享,那么秘密能够被重构,否则,不能重构。

    当然,如果没有“否”共享的人(假设他们知道是谁),没有任何事情能防止足够数量的“是”共享的人钻牛角尖,去重构秘密。但是在每个人提交他们的共享进入中心计算机的情况下,这个方案可行。

带除名的秘密共享

    你正在安装你的秘密共享系统,现在你想解雇你的一名共享者。你可以安装没有那个人的新方案系统,但很费时。有多种方法处理这个系统,一旦有一个参与者变成不可信时,允许立即启用新的共享方案 [1004]。