【116】安全计算协议

Andrew C. Y ao
University of California Berkeley , California 94720

1 Introduction

两个百万富翁想知道谁更富有;但是,他们不想无意中发现有关彼此财富的任何其他信息。他们怎么能进行这样的对话呢?

这是以下一般问题的特例。假设 m 个人希望计算函数 f(x1, x2, x3, . . . , xm) 的值,它是 m 个有界范围的整数变量 xi 的整数值函数。假设最初 Pi 知道 xi 的值,但不知道其他 x 的值。他们是否有可能通过他们之间的交流来计算 f 的值,而不会过度泄露有关他们自己变量值的任何信息?百万富翁问题对应于 m = 2 且 f(x1, x2) = 1 如果 x1 < x2 则为 0 否则为 0 的情况。在本文中,我们将给出这个一般问题的精确表述,并描述使用单向函数(即易于评估但难以反转的函数)解决它的三种方法。这些结果可应用于秘密投票、数据库私人查询、不经意协商、玩心理扑克等。我们还将讨论复杂性问题“计算需要交换多少比特”,并描述防止参与者作弊的方法.最后,我们研究“单向函数不能完成什么”这个问题。

在描述这些结果之前,我们想通过在下一节中首先考虑安全计算的统一视图来透视这项工作。

2 安全计算的统一视图

自 1976 年首次提出单向函数(Diffie 和 Hellman [1])以来,它们已被用于两种应用。第一种与消息的加密和传输有关,以使窃听者和破坏者无法读取和更改它们 [1, 2, 3, 4]。第二种应用包括“心理扑克”(Shamir,等人 [5]),其中两个玩家通过电话线通信发牌,以及“掷硬币”(Blum [6]),其中两个玩家相互怀疑的各方将产生一个无偏见的比特。希望有一个统一的框架,所有这些应用程序都可以关联起来,并且可以开发通用的证明技术来证明协议的安全性。更根本的是,如果我们要了解单向函数的内在力量和局限性,那么这样一个框架是必不可少的。例如,如果没有一个精确的模型,就很难回答诸如“三个相互怀疑的各方是否有可能交互地生成带有偏差 1/e 的比特?”这样的问题。

有鉴于此,我们建议采纳以下观点。两方 Alice 和 Bob 分别拥有私有变量 i 和 j,希望进行通信,以便 Alice 可以评估函数 f(i, j),而 Bob 可以评估函数 g(i, j)。通信线路上可能有一些窃听者或破坏者。协议的目的是为 Alice 和 Bob 设计一种算法,以便满足某些安全约束(针对破坏者)和隐私约束(Alice 可能不希望透露 i 的确切值)。

在一种极端情况下,当计算组件是微不足道的,例如如果 f = 常数和 g(i, j) = i,那么我们得到前面提到的第一种应用,其中基本关注的是窃听和破坏。在另一个极端,当这种外部威胁可以忽略,但 f 和 g 的计算是非平凡的,那么我们就得到了本文要研究的问题。 (心理扑克和掷硬币代表这个问题的随机版本,也将讨论。)请注意,虽然我们在上面的描述中使用了 Alice 和 Bob,但所有讨论都可以扩展到 m 方通信的情况。

将这两种特殊情况放在一起讨论是很自然的。然而,由于长度的考虑,我们将在这里只报告与没有外部破坏者的计算密集情况相对应的结果。其他病例的结果将在别处报告。

3 确定性计算

3.1 百万富翁问题的解决方案

在本摘要中,我们将仅详细描述我们拥有的三种解决方案中的一种。

为明确起见,假设 Alice 有 i 百万,Bob 有 j 百万,其中 1 < i,j < 10。我们需要一个协议让他们决定是否 i < j,这样他们最终也只知道这件事(除了他们自己的价值观)。设 M 是所有 N 位非负整数的集合,QN 是从 M 到 M 的所有 1-1 到函数的集合。设 Ea 是 Alice 的公钥,通过从 QN 中选择一个随机元素生成。

协议进行如下:

  1. Bob 选择一个随机的 N 位整数,并私下计算 Ea(x) 的值;调用结果 k。
  2. Bob 向 Alice 发送数字 k - j + 1;
  3. Alice 私下计算 yu = Da(k − j + u) 对于 u = 1, 2, 的值。 . . , 10.
  4. Alice 生成一个 N/2 位的随机素数 p,并计算所有 u 的值 zu = yu (mod p);如果所有 zu 在 mod p 意义上至少相差 2,则停止;否则生成另一个随机素数并重复该过程,直到所有 zu 相差至少 2;令 p, zu 表示这最后一组数字;
  5. Alice 将质数 p 和以下 10 个数字发送给 B:z1, z2, 。 . . , zi 后跟 zi + 1, zi+1 + 1, . . . , z10 + 1;上述数字应在 mod p 意义上解释。
  6. Bob 查看 Alice 发送的第 j 个数字(不包括 p),如果它等于 x mod p,则确定 i ≥ j,否则 i < j。
  7. Bob 告诉 Alice 结论是什么。

该协议清楚地使 Alice 和 Bob 能够正确地决定谁是更富有的人。为了证明它满足他们无法获得更多关于对方财富的信息的要求,我们需要定义一个精确的模型,这将在第 3.2 节中完成。在这里,我们将非正式地争论为什么满足要求。

扫描二维码关注公众号,回复: 14215158 查看本文章

首先,Alice 不会知道 Bob 的财富 j,除了 Bob 告诉她的最终结果隐含的对 j 的约束,因为来自 Bob 的唯一其他信息是 Bob 知道 Da(s) 在某些 s 之间的值k - j + 1 到 k - j + 10。由于函数 Ea 是随机的,所有 10 种可能性的可能性均等

鲍勃知道什么?他知道 yj(即 x),因此知道 zj。但是,他没有其他 zu 的值的信息,并且通过查看 Alice 发送给他的数字,他无法判断它们是 zu 还是 zu + 1。

这还没有结束争论,因为爱丽丝或鲍勃可能会通过更多的计算来试图找出对方的价值。例如,Bob 可能会尝试随机选择一个数字 t 并检查是否 Ea(t) = k − j + 9;如果他成功了,那么他就知道 y9 的值是 t,并且知道 z9 的值,这使他能够找出 i ≥ 9。这将是 Bob 不应该发现的额外信息,如果i ≥ j 是前一个结论的结果。因此,还必须在正式定义中包括参与者不仅不会因协议规定的交换而获得信息,而且他们也无法在合理的时间内进行计算以获得该信息。在第 3.2 节给出的正式定义中,我们将精确地定义它。

人们可能已经注意到,某些一方可能会通过偏离商定的协议在此过程中作弊。例如,Bob 可能在最后一步对 Alice 撒谎,并告诉 Alice 错误的结论。有没有一种方法可以设计一个协议,使得成功作弊的机会变得非常小,而不会透露 i 和 j 的值?我们将在第 3.3 节中证明这是可能的。 (请注意,这比 Shamir 等人 [5] 中的心理扑克协议中使用的可验证性要求更强。)

对于百万富翁的问题,我们还有另外两种基于不同原则的解决方案。第一个假设 Alice 和 Bob 各自拥有一个私有的单向函数,其中这些函数满足交换性,即 EaEb(x) = EbEa(x)。另一种解决方案利用了 Goldwasser 和 Micali [2] 发明的概率加密方法。

3.2 一般问题的模型

由于这三种解决方案的安全性基于不同的假设,因此必须为每种解决方案详细指定精确的模型。在这个摘要中,我们将只给出与第一个解决方案对应的模型。

为简单起见,我们将仅给出 f 值为 0−1 且 m = 2 的情况(Alice 和 Bob)的定义和结果。将结果推广到一般 m 将在第 5 节中简要讨论。一般情况的证明涉及额外的技术复杂性,并且还有额外的安全考虑,例如 2 人案例中不存在的可能的“共谋”。

协议。假设 Alice 有一个公开的单向函数 Ea,其反函数 Da 只有 Alice 知道;类似地,Bob 有一个公共 Eb 和一个私人逆 Db。假设 Ea 和 Eb 是从 QN 中独立随机抽取的,QN 是所有可能的 1-1 到 N 位整数上的函数的集合。用于计算函数 f(i, j) 的协议 A 准确地指定了 Alice 和 Bob 应该如何通信,如下所示。 Alice 和 Bob 交替发送字符串。每次 Bob 完成传输后,Alice 都会检查她目前拥有的信息,这些信息由一些字符串 α1、α2、...组成。 . . , αt 以及字符串之间的一些关系(例如 Eb(α3) = α9, α8 有奇数个 1);根据迄今为止在她和 Bob 之间传输的比特,协议指定了她应该如何计算私有字符串 αt+1、αt+2、……。 . . , αs 其中每个新字符串 αu 是较早字符串的函数,或者是 Ea(y)、Eb(y) 或 Da(y) 形式的函数,其中 y 是已经获得的字符串。选择应用哪个函数或是否评估 Eb 或 Da 通常是概率性的,即她将决定评估 E(4),或者根据一些抛硬币的结果来计算 α2 + 3α8。在她完成这个计算之后,她将向 Bob 发送一个字符串,再次以概率方式选择该字符串。现在轮到 Bob 计算字符串并根据协议发送字符串。我们同意有一个特殊的符号,它的出现意味着协议执行的结束。到那时,2 协议有一个指令让每个参与者私下计算函数值 f。最后,我们要求在协议中,Bob 和 Alice 对 E 和 D 的评估总数以 O(N k) 为界,其中 k 是预先选择的整数。

隐私约束。令 ?、δ > 0 和 f(i, j) 为 0-1 值函数。假设最初所有的 (i, j) 值对都是等可能的。假设 Bob 和 Alice 按照协议忠实地进行计算。最后,Alice 原则上可以根据她计算的函数值 v 和她拥有的字符串,计算 j 值的概率分布;称之为 pi(j)。如果满足以下条件,则称协议满足 (?, δ)-隐私约束:

1. pi(j) = 1|Gi| '1 + O(?)' for j ∈ Gi,否则为 0,其中 Gi 是 j 的集合,其中 f(i, j) = v,

2. 如果 Alice 之后尝试执行更多计算且不超过 O (N k) 次 E 和 D 的评估,那么至少有 1 - δ 的概率,她仍然会在 j 和 3 上得到上述分布。

上述要求也适用于 Bob。

定理 1 对于任何 ?, δ > 0 和任何函数 f,都存在一个计算 f 的协议,该协议满足 (?, δ) 隐私约束。当 (i, j) 的初始分布不均匀时,可以考虑更一般的情况。

我们不会在这里讨论。在第 4 节中,这成为概率计算的一个特例。

 3.3 附加要求

(A) 复杂性。如果 i, j 的范围 n 变大,前面针对百万富翁问题给出的解决方案将变得不切实际,因为传输的比特数与 n 成正比。一个有趣的问题是,确定任何协议计算满足 (?, δ)-隐私约束的 f 所需的最小位数。可以想象,有些函数在没有隐私要求的情况下很容易计算,但在额外的隐私约束下变得不可行。幸运的是,我们可以证明事实并非如此。令 A 为协议,令 T (A) 表示使用 A 时 Alice 和 Bob 之间交换的最大比特数。

定理 2 令 1 > ?, δ > 0 且 f(i, j) 为 0-1 函数。如果 f 可以通过大小为 C(f) 的布尔电路计算,则存在一个协议 A 计算 f 满足 (?, δ)-隐私约束,使得: T (A) = O " C(f) log 1 ?δ”。

事实上,如果 f 可以由图灵机在时间 S 计算,那么协议可以实现为 Alice 和 Bob 都具有图灵机算法来执行具有时间限制 O`S log(1/? δ)'。 

但是,存在需要在 Bob 和 Alice 之间传输的具有隐私约束的指数级许多比特的功能。令 Fn 是 0-1 值函数 f(i, j) 的族,其中 i 和 j 是 n 位整数。显然,在没有隐私约束的情况下,最多 n 比特的传输信息可以计算 f(进一步讨论参见 Yao [7])。

定理 3 令 1 5 > ?, δ > 0 是固定的。假设 f 是 Fn 的一个随机元素,那么任何使用 (?, δ)-隐私约束计算 f 的协议 A 对于所有大的 n 都必须具有 T (A) > 2n/2。

(B) 相互怀疑的参与者。到目前为止,讨论都假设 Bob 和 Alice 遵守商定协议规定的规则。如果他们中的任何一个可能作弊以获取更多信息或误导对方得到错误的答案怎么办?确实,使用我们的协议,如果之后有一个验证阶段,双方都需要透露他们所有的私人计算,那么任何作弊行为都会被发现。然而,这将迫使双方透露他们的变数。正如在稍后给出的应用程序中将变得清楚的那样,这有时可能是一个严重的缺点。以下结果将表明,人们可以阻止作弊,而无需要求任何一方透露变量。

由于协议永远不能禁止 Alice(或 Bob)表现得好像她有不同的变量值 i0,所以协议可以实现的最大功能就是确保这是 Alice(或 Bob)唯一可以做的作弊。

 定义 1 考虑一个协议执行的实例。如果 Alice 的行为与 i 的任何值不一致,但 Bob 没有检测到它,我们将认为这是 Alice 的成功作弊。 Bob 成功作弊的定义类似。

定理 4 令 1 > γ > 0。在定理 2 的相同假设下,存在计算 f 的协议 A 使得

2. 如果一个参与者按照 A 行事,那么另一个参与者成功作弊的概率最多为 γ。

3.4 应用

秘密投票。假设一个由 m 名成员组成的委员会希望决定一个是或否的行动。每个成员要写一个意见 xi,最后的动作可以看成一个函数 f(x1, x2, x3, . . . , xm)。本文中获得的结果意味着可以在不知道任何其他成员的意见的情况下就最终行动 f 达成一致。此外,该协议使任何人成功作弊的概率都非常遥远。

Oblivious Negotiation。假设爱丽丝试图卖给鲍勃一所房子。原则上,每个人都有自己的谈判策略。如果我们将 Alice 的所有可能策略编号为 A1, A2, . . . , At, 和 Bob' 的 B1, B2, . . . , Bu, 那么结果(不成交,或以 x 美元卖出,...)将在 Ai、Bj 使用的实际策略确定后决定。将结果写为 f(i, j),则可以不经意地进行谈判,也就是说 Alice 不会获得任何关于 Bob 谈判策略的信息,除非它与结果一致,反之亦然。

数据库的私有查询。我们已经证明的定理可以扩展到每个人 Pi 计算不同函数 fi 的情况。特别是,Alice 可能希望计算一个函数 f(i, j) 而 Bob 希望计算一个普通函数 g(i, j) = 常数,这意味着 Bob 最终对 i 一无所知。如果我们把 Bob 看成一个数据库查询系统,其中 j 是数据库的状态,而 Alice 正在询问第 i 个查询,那么 Alice 可以得到查询的答案,而不需要知道其中的数据,而数据库系统不知道爱丽丝问了什么。

4 概率计算

5 对 m-Party 案例的推广

6 什么不能做?

 

猜你喜欢

转载自blog.csdn.net/weixin_40889839/article/details/124624980
116