叠加条件电路子句用于安全计算
W. Sean Kennedy、Vladimir Kolesnikov(B) 和 Gordon Wilfong
贝尔实验室,美国新泽西州默里山 {william.kennedy,vladimir.kolesnikov,gordon.wilfong}@nokia-bell-labs.com
摘要
我们通过优化函数的电路表示并设计新的安全函数求值(SFE)协议来改进安全函数计算(SFE)。
(1) 我们提出一种启发式方法,用于构建一个电路 C0,该电路对给定的一组布尔电路 S={C1,…, Ck} 是通用的。具体而言,对于每个 Ci,将其视为一个有向无环图(DAG) Di,忽略其布尔门功能 Ci。我们将 D1,…, Dk 嵌入到一个新的有向无环图 D0 中,使得每个 Ci 都可以通过对 D0 的相应编程得到(即通过将布尔门分配给 D0 的节点)。将该有向无环图 D0 视为具有未编程门的布尔电路,即为 S-通用电路 C0。
(2) 我们的启发式方法通常生成的 C0 显著小于瓦利安特通用电路或包含所有 C1,…, Ck 的电路。利用这一点,我们构建了新的混淆电路(GC)和基于GMW的SFE协议,这些协议对于包含if/switch子句的电路尤为高效。我们的GMW协议以与通常的2输入门相同的成本评估8输入布尔门。这推动了基于GMW的通用SFE发展,尤其适用于包含if/switch条件子句的电路。
实验上,对于包含32个简单电路的开关,我们的构造导致了 ≈ 6.1× 更小的电路 C0。这直接转化为在使用GMW SFE计算该开关时的 ≈ 6.1× 提升。最近来自硬件设计并适用于安全函数求值的最先进通用电路优化报告了 10 −20%的电路(混淆表)归约。
我们的SFE处于半诚实模型中,并与Free-XOR兼容。我们进一步证明了最优嵌入是NP难的。
关键词 :集合通用电路 · secure computation · garbled电路 · GMW
1 引言
消除混淆电路(GC)和戈德赖希、米卡利和威格森逊(GMW)技术的电路表示所带来的成本自GC/GMW提出以来一直是一个重要的开放性问题,迄今为止取得了一定程度的成功。其中存在两种自然的冗余:GC/GMW必须展开循环并评估所有条件(if/switch)子句,以隐藏实际执行的是哪一个。(还有第三种冗余,即保护内存访问模式,代价是处理整个输入/数组/数据结构,这对电路表示和随机访问表示都适用。这一问题由[13]提出的关于不经意RAM(ORAM)的具有影响力的工作所解决,其当时的“不实用”开销为log⁴n因子。) 我们的工作旨在解决第二种电路冗余问题。构造一个小型电路 C0,使其对给定的 k 个电路具有通用性,这样在计算这些 k 个电路上的开关时,只需加密、传输和评估 C0。我们相信这可以成为安全函数计算(SFE)编译器设计中的有用工具。
关于SFE和OT轮次的成本。我们的GC协议可能为每个switch语句增加一轮通信。我们认为,在许多实际场景中,相关的延迟成本可以忽略不计。这是因为通常与延迟相关的空闲时间将被有效用于同一或另一个SFE实例中的计算和通信。例如,在大规模SFE部署中,会并行运行多个实例,此时SFE的吞吐量远比延迟更重要。需要注意的是,在我们的GMW协议中,由于switch语句不会增加轮数。
1.1 动机应用
包含switch 语句的函数 。在基于混淆电路的私有数据库(DB)系统盲视者 [7,25],中,私有数据库搜索通过两个参与方联合安全地在数据的搜索树上评估查询匹配函数来实现。盲视者未能完全保护查询隐私:由于通用电路在实际中不可行,它会泄露查询电路拓扑结构,作者也承认了这一点。将我们的方案应用于该工作可以廉价地隐藏这一重要信息。实际上,假设根据策略,数据库客户端被允许执行若干种(例如2–50种)类型的查询之一。那么,私有执行的 SQL查询可以是一个开关,其子句数量对应于允许的查询类型数量。在盲视者中,子句由客户端的输入选择,省略了一些机制。因此,我们的盲视者应用特别有效,在仅有两个子句时即可带来改进。该数据库系统的大部分成本在于大规模运行查询匹配函数的安全函数求值(SFE),因此对查询电路的改进将直接转化为整体性能提升。我们注意到,盲视者系统的核心处于半诚实模型中,但在[7]中考虑了恶意客户端的情况。
(部分)我们的工作可被视为一种启发式方法,旨在以低于完整通用电路的成本构建适用于一组函数 S={C1,…, Ck}(S-通用电路)的通用电路。因此(参见下一个动机示例),我们的工作可能改进那些需要评估并隐藏某个参与者选择了哪个函数/查询的应用场景(例如,策略允许的或因辅助信息而知晓的多个函数中的某一个)。
半私有函数的安全函数求值(SPF-SFE) (见第1.3节的进一步讨论)是一种在[26],弥合基于通用电路的昂贵私有函数安全函数求值(PF-SFE)之间的差距时提出的思想[15,19,22,30], 以及不隐藏被求值函数的常规SFE(通过混淆电路)。SPF-SFE部分隐藏了被求值函数;即,给定一组函数,求值方不会得知具体执行的是哪一个函数。实际上,通常只有特定的子程序是敏感的,而这些子程序可能通过 S-通用电路针对适当的电路集合 S得到充分保护。[26]提出了一个隐私保护信用检查的令人信服的例子,其中检查函数本身需要受到保护,并表明使用 S-通用电路作为构建模块是解决此问题的有效方法。此外,[26]构建了一个编译器,该编译器从 S-通用构建模块(他们称之为PPB,私有可编程模块)组装GC。尽管[26]仅提供了少数几个非常简单的手工设计模块(参见我们在第1.3节中的讨论),我们的工作可以被视为一种高效且通用的此类模块构造方法。我们强调,在 SPF-SFE应用中,GC生成器知道所计算的函数(子句选择),而我们的构造特别高效。
CPU/ALU仿真 。扩展SPF-SFE的思想,可以设想一种通用方法,其中参与方通过私有方式模拟CPU执行来自固定指令集的一系列复杂指令(指令选择通过混淆电路开关实现)。此外,如有需要,还可利用[19]的选择模块来保护指令的输入。此类方法可在合适的框架(例如[26]的框架)内构建,基于本工作所提供的 S-通用电路。我们注意到,电路设计与优化十分繁琐,除非常简单的实例(如[26]中所考虑的实例)外,不太可能手动完成。相反,将需要一种工具,例如我们正在提出的这种工具。
在最近的一项工作中,提出了一种安全且实际高效的MIPS算术逻辑单元,其中该算术逻辑单元被实现为一个开关,用于在ORAM存储的数据上执行37种当前支持的ALU指令。TinyGarble 还设计并实现了一个基于MIPS I指令集的混淆处理器,用于私有函数求值。我们的构造可以以即插即用替代的方式与 [32]配合工作。
1.2 技术贡献
我们通过优化函数的电路表示并设计新的安全函数求值(SFE)协议来改进安全函数计算(SFE)。
我们的贡献包含几项互补的技术进展。其中技术上最复杂的贡献是一种用于将任意 k电路嵌入新电路/图 C0的新算法。该嵌入方式使得对 C1,…, Ck中任意一个电路的混淆电路/GMW评估可通过对应地评估 C0来实现。在我们的实验中, C0的大小可能小于 C1,…, Ck大小之和(小6.1×)。
在SPF-SFE情况下,当被求值的子句 C i是电路生成器的私有输入时,生成器 G只需发送实现 C i的混淆。
对于由内部变量选择子句的通用GC情况,我们构建了一种新的GC协议,其总通信开销为 3kn₀ + 22n₀ s。
其中 s是计算安全参数,且 n₀= |C₀|。对于高效嵌入而言,这与最先进的混淆电路相比具有优势。上述 k子句的半门GC [34]的成本为 2ns,其中 n= ∑ⱼ |Cⱼ|。我们展示了GC分支如何进行嵌套,并且可以在每个嵌套层级上应用我们的构造。
GMW SFE 更加有趣。我们提出了一个新颖的观察:GMW门的评估成本与中等数量的布尔输入下的双输入门成本相似。我们利用这一点,为包含子句的电路设计了一种高效的GMW协议,其每门成本与标准GMW相近。
我们的方法是启发式方法。我们证明了精确求解图嵌入问题是NP难的。
实验验证和性能。在实验中,我们考虑了32个简单电路,这些电路实现了若干基本函数的变体,并生成了一个比实现子句的标准电路更小的嵌入 6.1×。相应开关的SPF-SFE和GMW也提升了 6.1×。
对于子句由内部变量选择的混淆电路情况,由于每门开销,我们较小的嵌入导致通信开销与经典Yao相近。我们预计,当嵌入的电路数量稍多或通过进一步的启发式改进时,我们的协议将优于最优GC。
1.3 背景和相关工作
混淆电路, GMW, 一次性密钥 和 通用电路 。大部分SFE研究集中在最小化 Yao的基本GC [20,33],的大小,例如混淆行缩减技术Free-XOR [18]及其增强版本FleXOR [17]和半门 [34]。相比之下,在本研究中,我们有效地消除了对整个子电路进行求值的需求。
GMW协议[11,12]在两方SFE文献中受到的关注少于混淆电路。在 GMW中,双方通过逐门计算电路进行交互计算,具体如下:参与方从门的输入线值的2选2加法秘密共享开始,并获得被评估门输出线对应的秘密共享。加法(XOR)门通过本地地相加共享值即可完成。乘法(AND)门则使用 1-out-of-4的一次性密钥实现。对于二进制电路,每位参与方的共享值共有四种可能组合。因此执行一次性密钥,其中一个参与方(OT接收方)从四种组合中选择其一,另一参与方(OT发送方)提供/OT发送输出线对应的秘密共享。在半诚实模型下,秘密共享可以短至单比特。与混淆电路方法类似,我们的工作极大地减小了被评估电路的大小。
渐近地,将大量子电路图嵌入一个电路图的最佳方法是使用通用电路 [19,30]。相应地,对于大小为 n的子电路,由[19,30]生成的通用电路的大小是 ≈ 19nlog n,且 ≈ 1.5n log²n+ 2.5n log n。最近的研究工作 [15,22]优化并实现了Valiant的构造,报告了Valiant通用电路成本(以通用门计)更精确的估计值,介于 ≈ 5nlog n和 10nlog n之间。每个通用门的编程可能需要消耗3个与门和6个异或门(但在本研究讨论的私有函数求值及其应用中将不需要)。
总之,通用电路方法仅在子句数量远超典型 开关的情况下才具备竞争力。在通用电路嵌入中,[15,19,22,30],门被嵌入到门中,导线被嵌入到成对不相交的导线链中(可能包含中间门)。我们的嵌入方式更为通用,允许导线链以受控方式重叠,从而得到更小的容器电路。
莫哈塞尔和萨德吉安 [23] 提出了一种用于私有函数求值(PFE)的另一种技术。他们提出了一种替代通用电路的方法,即对其中一个参与方私有的函数进行安全函数求值(SFE)。他们的方法是通过考虑从所有电路输入到所有输出的映射,将每个门的输出映射到下一个门的输出,并以不经意的方式进行评估。对于混淆电路(GC),与瓦利安特 [30] 相比,他们实现了2倍的改进,与科列斯尼科夫和施耐德 [19] 相比实现了 3 − 6 倍的改进。类似于 [19,30],[23] ,在子句数量较少时,这种方法将不具备成本效益。
因此,(部分)我们的工作可以被视为以低于完整通用电路的成本,启发式地构建一个针对函数集 S={C1,…, Ck}的通用电路。
我们的贡献之一是一种改进的1选k OT算法,用于将混淆的开关子句传递给评估者。这是私有信息检索(PIR)的一种特殊情况。我们注意到现有的一些关于1选 k 比特字符串的计算型私有信息检索(CPIR)的次线性 k工作,例如[2,21,24]。需要注意的是,我们的应用需要对称计算型私有信息检索(CSPIR)。CSPIR的[21]实现成本为 Θ(slog²k+log k),其中 s是一个可能非常数的安全参数。然而,OT次线性带来优势的盈亏平衡点过高。例如,当 k ≤ 240时,[2]在通信成本上高于简单的线性k OT。此外,已知的CPIR协议严重依赖(至少在 k上线性依赖)昂贵的公钥运算,例如Damg˚ard和Jurik [3,4]提出的长度可变加法同态加密(LFAH)。
我们还提到但不详细讨论的是,硬件设计也考虑电路最小化问题。然而,其典型目标是最小化芯片面积,同时允许多次执行相同的(子)电路。当前在将硬件设计中的强大工具链应用于多方计算方面,最先进的技术实现了 10−20 %的电路(混淆表)缩减[5,6,29],,而我们针对的电路优化可能会带来更好的性能(我们的实验中实现了≈ 6.1×的电路缩减)。
半私有函数安全函数求值 (SPF-SFE)[26] .如引言中所述,SPF-SFE 在效率与被求值函数的隐私性之间提供了一个令人信服的权衡。我们关于容器电路构造的工作对应于[26], 中的私有可编程模块 (PPB) 的构造。
这些在该研究中进行了手工优化。在我们看来,[26]的主要贡献在于识别并阐明了 SPF-SFE的问题,并构建了一个能够将PPB集成到完整解决方案中的框架。他们提供了一些非常简单(但仍然有用)的PPB。按照我们的符号表示,他们考虑了以下用于 S-通用电路的集合: SCOMP={<,>,≤,≥,≠},SADD,SUB={+,−}, SMULT={输入 ∗常量}, SBOOLGATE={∨,∧,⊕, NAND, NOR, XNOR}, SUC={所有电路},以及从[19]重新表述的以下集合:SSEL={输入选择电路},SINPERM={输入置换电路}, SSEL={Y位选择器},SSEL={X位选择器}。
这些集合中的每一个仅包含具有完全相同或近乎相同拓扑结构的函数;这使得手工优化和容器的最优大小成为可能。除了通用电路PPB之外,尚未尝试研究先验不同拓扑结构电路的构造PPB。
相比之下,我们可以使用任意集合 S的电路来实现 S-通用电路,并在完整的通用电路以及评估所有 S电路并选择输出的标准方案基础上,通过启发式方法进行改进。
用于多输入门的GMW 。在独立且并行的研究工作中,德苏基等人[6]通过使用[16]的OT扩展,发现了获得具有多值输入的低成本GMW门的相同方法(由于[16],多个布尔输入和多值输入可以轻松互换)。在他们的研究中,德苏基等人对[16]的使用进行了多项性能优化。他们还详细表明,对于某些函数(例如AES),多输入GMW门具有优势。在他们的符号说明中,该方法被称为基于查找表(LUT)的安全计算。我们的工作聚焦于LUT-based计算的不同应用——电路子句叠加,并在其适用领域可能实现更高的性能提升。
1.4 符号说明
设 f为我们想要计算的函数, C为表示 f的布尔电路。我们考虑在 f内部的一个switch语句,根据 f的内部变量或输入来评估 k个子句中的一个。令 C₁,…, Cₖ为对应于 f中 k个子句的 C的子电路。我们经常可以互换使用“子句”和“子电路”这两个术语,其具体含义将根据上下文明确。为简便起见,我们通常讨论大小均为 n的子句,尽管在评估部分我们会考虑具有不同子句大小的具体示例。
我们定义从电路 C₁,…, Cₖ得到的有向无环图(DAGs) D₁,…, Dₖ,其中除表示电路输入和输出的辅助节点外,图中的节点代表电路门,图中的有向边代表电路导线。这些图表示相应电路的拓扑结构或连线。当上下文含义明确时,我们可以交替使用 Di或 Ci来指代这些图/电路。从有向无环图 D₁,…, Dₖ出发,我们将构建一个容器DAG D₀,其特性是可以通过将相应的门功能分配给 D₀的节点,从而实现 C₁,…, Cₖ中的任意一个。我们通常将此称为对 D₀的编程。我们注意到,为了提高效率
我们可能会生成部分已编程的 D₀,即其中一些门已经固定。我们将交替地将此容器图/电路称为 D₀和 C₀。当然, C₀电路是为基于电路的安全计算而生成的。我们特别讨论混淆电路(GC)和GMW协议。我们通常将GC和GMW的使用统一表述。例如,当上下文明确时,“混淆 C₀”意味着在GC或GMW中使用 C₀。我们将使用的其他标准变量是 s(计算安全参数)和 n₀( D₀的大小)。电路 C₀将在GC协议中进行评估。在GC协议中有两个参与方:GC构造者(记为 P₁)和GC评估者(记为P₂)。
2 技术方案概述
在本节中,我们的目标是描述我们方法背后的完整思路。有了这一整体视角,将有助于理解接下来各节中出现的形式化定义和细节。
考虑一个电路 C的安全函数求值(SFE),其中包含一个具有 k个子句/子电路 C₁,…, Cₖ的switch语句,根据参与方的输入或内部变量仅评估其中一个。在本概述中,我们重点关注更复杂且更通用的第二种情况(内部变量),同时指出第一种情况的非常高效的解决方案。
我们的出发点是众所周知的观察结果,即在某些GC变体(例如经典Yao [20,33])中,评估者不会了解任何门的逻辑,而只会了解电路的连线结构。我们首先假设所有子电路已经具有相同的连线,即底层有向无环图是相同的。我们将在接下来的第2.3节中阐述如何统一连线的直观思路。
2.1 用于相同布线子句开关的改进的GC
如果所有 k子句/子电路具有相同的拓扑结构/连线,则电路生成器只需生成并交付右子电路的混淆结果给评估者即可。
SPF-SFE . 在开关子句由某参与方的私有输入选择这一重要特例中,该过程是平凡的且无需额外开销:该参与方将作为混淆电路生成方,只需发送与其输入相对应、用于编程该子句的一组混淆表即可。
一般情况 。考虑开关由内部变量选择的情况。一种自然的混淆传递方式是在子句上执行1-out-of-kOT。然而,这在底层需要向评估者发送 C₁,…, Cₖ每个子句的混淆,相比标准GC并无改进。
我们可以做得更好。为了概述主要思想,我们让每个 Ci成为一个 {∨,∧,⊕}- 电路。(由于所有 Ci的布线相同,它们的有向无环图表示 Di也相同,因此容器 DAG D₀等于 Di。回顾我们的符号说明, |D₀| =n₀。)暂时不考虑Free-XOR;稍后将清楚我们的构造方法适用于Free-XOR。现在,枚举每个 Ci中的门,并让 di为一个长度为 n₀的字符串,用于定义 Ci中门的序列(在我们的构造中, di中的每个符号将表示五种可能的门之一——{∨,∧,⊕},以及辅助左右输入线直通门 L和 R)。对字符串 k执行 1-out-of-k一次性密钥,将正确的电路定义字符串传递给评估者。然后对于每个门,参与方将运行1-out-of-5 OT,其中生成方的输入是五种可能的门混淆,而评估者将使用先前获得的 di来确定其OT选择。
请注意,每个字符串 di都会向评估者明确揭示传输的是哪个电路。这很容易隐藏:对于每个门 gⱼ,GC构造者在五种类型的门上选择一个随机置换πⱼ ,并在 di构造期间将πⱼ应用于 di的第 j个符号。他还会应用πⱼ来对其包含五个混淆表的一次性密钥输入进行置换。最后,基于内部状态向评估者发送 di也很简单。对于具有两个子句的开关,生成器只需使用选择线的0密钥加密 d₁,并使用对应的选择线1密钥加密 d₂。对于具有 k个子句的开关,每个字符串 di都将使用从对应于第 i个子句选择的线标签派生出的密钥进行加密。
对于熟悉标准GC细节的读者来说,上述开关-求值算法可以轻松集成到标准GC协议中。设 s为计算安全参数。根据定理1之后以及第8节中给出的成本计算,对开关在 k个子句上的求值通信开销约为 3kn₀+ 22n₀s。相比之下,标准GC需要发送所有 k混淆,成本为4ns(2ns使用最近的半门混淆[34]),其中 n=∑ᵢ |Cᵢ|。其中 4ns项是最昂贵的项;将其减少至 22n₀s并使其独立于 n正是我们GC协议的贡献。我们再次强调,如果子句由GC生成器选择,则可以使用所有混淆电路优化,我们的GC成本为 2n₀s。最后,我们指出,在上述计算中,我们未计入用于选择正确子句输出并忽略其他子句输出的电路开销。该电路的规模是 ko的线性函数,其中 o是每个子句中的输出数量。此电路需要在最先进的混淆电路中进行求值,但在我们的方案中则不需要。
我们进一步注意 开关 子句可以嵌套。我们在第4节中讨论这一点。
2.2 用于相同布线子句开关的改进型GMW
第2.1节中描述的类似方法可特别高效地应用于GMW环境。我们将利用我们关于在科列斯尼科夫和库马兰的OT扩展下多输入GMW门成本的新发现[16]。
与上述GC协议一样,我们考虑电路定义字符串 di。如同在GC协议中一样,对于每个门 gⱼ,一方玩家选择一个在五种类型的门上的随机置换(或掩码)πⱼ,并在 di构造期间将其应用于 di的第 j个符号πⱼ。这个被掩码的定义字符串通过 OT传输给另一方玩家。
与混淆电路(GC)不同,我们不会在混淆门上执行昂贵的1选5一次性密钥操作。在GMW中,我们将在三条输入线上评估门:两条电路导线和一条选择门功能的五值线({∨,∧,⊕, L, R})。因此,参与方将执行1选20 OT(20种可能性对应五种门功能,每种功能有四种线路输入可能)以获得输出的秘密共享。
我们简单但关键的观察是,通过使用[16]OT,并且由于GMW秘密共享每个仅为单比特,因此对于中等数量输入的多输入门,其计算成本几乎与两输入门相同。实际上,OT的主要成本在于[16]行传输。尽管实际秘密的加密在输入数量上呈指数级增长,但对于最多约8个二进制输入的门来说,这一开销仍远小于OT矩阵的行传输开销。在我们的情况下,发送20个秘密仅需额外20比特(每个秘密1比特),外加OT矩阵传输。因此,与标准的1选4 GMW OT扩展(同样通过[16]实现)相比,额外通信仅增加 20 −4= 16比特!
因此,通过将多个子句嵌入一个容器而实现的电路缩减,直接转化为对半诚实GMW协议的整体改进。
2.3 高效电路嵌入以获得相同连线的子句
我们现在描述图/电路嵌入算法背后的直观思想,并总结嵌入图在大小方面的性能。在第3节中,我们描述一种电路嵌入算法,该算法以 k电路 C₁,…, Cₖ的集合作为输入,返回一个(未编程的)容器电路 C₀,该容器电路能够嵌入每个这些电路,并提供生成C₀的混淆所必需的编程字符串,以实现/混淆每个 Ci。
我们的方法是基于图论的。为简化起见,假设我们恰好有两个输入电路。第一步,我们将每个电路 Ci转换为有向无环图(DAG) Di(例如参见图1以及第3节中的形式化定义)。现在,寻找一个同时嵌入 C₁和 C₂的“小型”容器电路的问题,转化为寻找一个“小型”的、能够“包含” D₁和 D₂的有向无环图。非正式地说,一个有向无环图 D“包含”另一个有向无环图 D′,如果通过一系列节点删除和边删除,并将每个3节点路径 uvw(其中 v的入度和出度均为1)替换为2节点路径,即一条边 uw在 D中,即可恢复出一个与 D′同构的图。
我们首先证明,如果输入的有向无环图限制为出度至多为一,则存在一个多项式时间算法(算法1)来找到一个同样出度至多为一的最小大小的有向无环图 D₀。我们指出,我们的方法与用于测试两棵树是否同构的经典多项式时间算法密切相关[31],,尽管这个问题更为困难。事实上,将3节点路径替换为2节点路径的操作与图的子式的边收缩密切相关[28]。
将有向无环图的出度限制为至多一,相当于将电路的扇出限制为至多一,这当然是不现实的。为了开发一个通用算法(见图2中的玩具示例),我们观察到每个具有 D个汇点的有向无环图 r的节点可以被一组出度至多为一的有向无环图覆盖,即子树。对于这样的一对子树(一个来自D₁ ,另一个来自 D₂),我们首先应用算法1来确定协同嵌入该对子树的最小代价(大致为最小 |D₀|)。我们使用这些代价来为一个辅助完全二分图赋权重:大致来说,其中一部分由 D₁的子树标记,另一部分由 D₂的子树标记,边的权重即为对应边端点所代表子树协同嵌入的最小代价。该图中的最小权完美匹配对应于一个可轻松构造的有效容器电路。一般情况下,仅考虑覆盖 D₁、 D₂节点的子树可能会遗漏一些边,随后我们会适当地将这些边重新插入到 D₀中,以确保 D₀对 D₁和 D₂都是通用的。
我们现在转向我们算法的性能。显然,任何电路嵌入电路 C₁和 C₂的大小至少为 max{|C₁|, |C₂|},且其大小至多为 |C₁| + |C₂|。我们的实验验证(见第8节)将两个电路嵌入到一个电路中,该电路的大小平均为介于两者之间差距的15.1%
这些平凡的下界和上界。假设这种嵌入性能,通过分治重复嵌入,我们将得到一个大小为 k的电路对大小为 n的电路的嵌入,该嵌入电路的大小为 1.151log kn= k⁰.²⁰³n(引理 1)。
2.4 图嵌入的NP难
在第7节中,我们证明了寻找一个最小成本电路的问题是NP完全的,其中给定的两个电路 C₁和 C₂可以嵌入该电路。该证明通过从著名的NP完全问题 3-sat[10]进行归约得到。事实上,该归约表明了一个稍强的结果:即使其中一个电路是树(而另一个是有向无环图),并且两者的入度和出度均有界,该问题是NP完全的。
直观上,归约的思想是:有向无环图(DAG),例如 C₁,表示变量的所有可能真值赋值以及满足 3-sat实例中每个子句的所有可能方式,而树 C₂则表示每个变量必须被赋值为真或假的要求,以及每个子句至少有一个结果文字为真的要求。然后我们证明,将 C₂嵌入到 C₁是可行的当且仅当3-sat实例存在可满足赋值。显然,这样的嵌入具有最小代价。当这样的嵌入存在时,它可以很容易地被解释为对变量的一个特定真值赋值,以及为每个子句分配一个结果为真的文字。
3 电路嵌入的定义
在本节中,我们架起了基于电路的SFE与图论之间的桥梁。特别是,我们描述了 Circuit Embedding Algorithm,它以 k电路集合 C₁,…, Cₖ作为输入,并返回所需的 n₀-门容器电路 C₀以及定义(编程)字符串 d₁,…, dₖ。具体而言,容器电路是一个未编程电路,即一组门的集合,其中每个门的功能未指定,但这些门之间的线路连接是固定的。这些门的功能通过选择一个编程流来指定,该编程流是从门到函数的映射{∨,∧,⊕, L, R},其中L (resp. R)是通过该门的左(resp.右)线。为了描述Circuit Embedding Algorithm,我们首先描述一种映射关系
电路与一种特定类型的加权有向无环图(DAG)以及我们所提出的混淆电路方法的图论等价。设 C是由门 g₁,…, gₙ和导线 w₁,…, wₘ定义的电路。我们使用加权有向无环图(DAG) D=(V, A, w)来表示它。节点集 V包含三部分:对于作为 C输入的每条导线 wᵢ,我们添加一个“输入”节点 nᵢ;对于每个输出线 wᵢ,我们添加一个“输出”节点 nᵢ;对于每个门 gᵢ,我们引入一个“门”节点 nᵢ。 E中的所有有向边均沿求值方向定向。具体而言,对于门gᵢ的每个输入线,存在一条从其对应的 “输入”节点到“门”节点 nᵢ的边;对于从门 gᵢ出发的每个输出线,存在一条从 “门”节点 nᵢ到其对应的“输出”节点的边;对于从门 gᵢ到门 gⱼ的每条导线,存在一条从 nᵢ到 nⱼ的边。最后,为了便于处理自由XOR和电路成本,我们为每条边赋予一个权重。对于对应于XOR门的门节点 gᵢ,我们将其所有入边 e赋予 gᵢ权重 wₑ= 0;对于输出节点 nᵢ,我们将其所有入边 e赋予 nᵢ权重 wₑ= 0;对于所有其他边 e,赋予权重wₑ= 1。参见图1中的示例。我们将此类有向无环图称为电路DAG。需要指出的是,给定一个电路DAG,我们总能确定出与之对应的未编程电路。
电路成本是表示该电路所需的真值表的总大小,即 ∑non-XOR gᵢ 2{fan in of gate gᵢ},其中异或门增加的成本为零[18]。这在相应的电路DAG中表示为cost(D) :=∑ᵤ∈D 2∑ᵥ∈N⁻D(u)wᵥᵤ,,其中N⁻D(u)是节点 d ∈ D的入邻居集合。
我们关注的是能够用于嵌入电路 C₁,…, Cₖ 的最小代价容器电路 C₀。显然,这要求对于每个 Cⱼ,存在一个从 Cᵢ 的门到 C₀ 的一一映射 f,使得对于 Cⱼ 中连接门 gᵢ 和 gᵢ′ 的每条导线,在 f(gᵢ) 和 f(gᵢ′) 之间都有一组导线相连。此外,如我们接下来所述, Cⱼ 中的信息流必须在 C₀ 中得以保持。
外向树 是一个弱连通且每个节点的入度至多为一的有向无环图。我们将外向树 T 的源(记作 source(T))定义为具有零入度的唯一顶点。设 D′=( V ′, A′, w′) 和 D=(V, A, w) 为有向无环图。
定义 1 . 一种嵌入将 D′映射到 D是指一个映射 f,它将节点的 V ′映射为 D的外向树,并将 A′的(带权重)有向边映射为 A的(带权重)有向边,且满足
1. 对于所有 u′ ≠ v′ ∈ V ′, f(u′) ∩ f(v′) = ∅;
2. 对于u′v′= e′ ∈ A′, ∃x ∈ f( u′),使得 f(e′) 从 x 开始并结束于 f(v′) 的源;
3. 对于u′v′= e′ ∈ A ′, w′ e′ ≤ w f(e′ )。
根据定义可知, D′ 的节点与 f 所指定的外向树中的源点之间存在一一映射关系。此外,对于 D′ 的每个节点 n′ 以及 f(n′) = n 的源点, f 是一个映射,使得对于 n′的每条输入边 e′,存在 n的一条唯一输入边 e= f(e′),使得w′e′ ≤ we。由此可得, n的入边权重之和至少不小于 n′的入边权重之和。因此,我们得到以下观察结果。
观察1 . cost(D) ≥cost(D′)。
我们现在可以描述 Circuit Embedding Algorithm了。设 C₁,…, Cₖ为一组 k-输入电路。首先,我们找到对应的电路DAG D₁, …, Dₖ。其次,基于这组电路DAG,我们确定一个低成本的电路DAG D₀,它以函数 f₁, …, fₖ嵌入每一个 D₁, …, Dₖ。我们在第6节中描述的启发式方法是解决此第二步的一种途径。第三,我们将容器电路 C₀确定为对应于 D₀的电路。最后,我们确定每个 i的编程字符串 dᵢ。为此,我们只需指定 D₀中每个门节点的功能。对于特定的嵌入 fᵢ, D₀的每个门节点 v要么是A)一个源,要么是B)某个外向树的非源节点。在前一种情况下, dᵢ(v)等于与门、或门或异或,具体取决于根植于 v的外向树的原像
的函数。在后一种情况下, dᵢ(v)等于L,表示左输入线直通。
4 GC协议用于叠加子电路
在本节中,我们将形式化第2.1节的直观思想。具体来说,我们将提出一种完整的GC协议,该协议以近似于一个 k相同布线的开关 子句的成本处理多个此类子句,并证明其安全性。当然,相同布线的子句在电路中并不常见。在第6节中,我们将展示如何将多个任意电路嵌入到单个容器电路中,使得每个电路都可以通过容器电路门的相应编程来实现。我们的方法是一种启发式方法,但如果该启发式方法的性能并未更优,我们当然仍可退回到运行标准GC/GMW协议。
我们的方法可以使用多种GC混淆技术来实例化。为了表述简洁,并且由于这是标准GC技巧,在以下描述中我们省略了线键指针的分配和处理,这些指针用于告知评估者应解密哪个混淆表行。此外,本算法中未包含Free-XOR。我们将在后文论证,我们的构造能够充分利用Free-XOR。最后,为便于表述且不失一般性,我们的构造针对的是具有单个开关的函数。
考虑一个{∨,∧,⊕}电路 C,其中包含一个开关(C₁,…, Cₖ)语句,该语句根据一个内部变量对子电路子句 C₁,…, Cₖ中的一个进行求值。设Enc, Dec为一个语义安全加密方案。
协议1. (带开关 语句的混淆电路)
1. 每函数一次预计算。解析C,识别switch(C₁, …, Cₖ),并在 C₁, …, Cₖ上调用图嵌入算法。获得大小为 n₀的容器电路 C₀以及 k个电路编程字符串d₁, …, dₖ,每个大小为 n₀。每个 dᵢ将由符号{∨,∧,⊕, L, R}组成,其中 L(resp. R) 是左(resp.右)输入线直通门。用dᵢ,ⱼ表示 dᵢ的第 j个符号。令 C′为将 C₀替换C-中的switch(C₁, …, Cₖ)后得到的结果。 C′被假定在计算前双方参与方均已知悉。
2. 对于 C′ 的每条线 Wi ,GC生成器随机生成两个线密钥w⁰ᵢ、 w¹ᵢ。
3. 对于拓扑顺序中的每个门gᵢ,GC生成器混淆 gᵢ以获得混淆门表。对于 22可能的 gᵢ输入值组合 va、 vb ∈{0, 1},设置
eᵛᵃ,ᵛᵇ= H(kᵛᵃ ||kᵛᵇ b ||i)⊕ wᵍⁱ(vᵃ,vᵇ)
cᵍⁱ的混淆表是一个随机置换集{eᵛᵃ,ᵛᵇ}, va, vb ∈{0, 1} .
4. GC生成器将所有生成的混淆表发送给GC评估者。C′输入的混淆通过OT直接发送给GC评估者,这是混淆电路中的标准做法。
5. GC生成器在{∨,∧,⊕, L, R}上生成n₀随机置换 πᵢ。
6. GC生成器计算如下:设Wⱼ₁ ,…Wⱼₜ 为定义˜开关选择的导线, t= ⌈log k⌉。对于 i= 1到 k,设置d̃ᵢ= π₁( dᵢ,₁)…, πₙ₀ (dᵢ,ₙ₀)。 现在,每个d̃ᵢ看起来是随机的,因为对每个符号 dᵢ,ⱼ都应用了独立随机置换 πⱼ。设 ED= Enckₑᵧ₁ (d̃₁)…, Enckₑᵧₖ (d̃ₖ)。此处密钥 keyᵢ由对应于开关选择 i的 Wⱼ₁,…Wⱼₜ 的线密钥推导而来,通过设置 keyᵢ=H(“switchkey”, wⁱₜⱼ₁…wⁱₜⱼₜ).
7. GC生成器将加密的电路定义字符串 ED以随机顺序发送给GC评估者。
8. GC评估者按拓扑顺序评估所有可能的门;特别是,定义开关 语句值的线密钥将为GC评估者所知。
9. GC评估者推导出 Enckₑᵧᵢ(d̃ᵢ)的解密密钥,并进行解密以获得d̃ᵢ,即待评估子句的(置换后的)定义字符串。评估者将通过在 Wⱼ₁、…Wⱼₜ的线标签中包含一个额外的指针位(指针与置换)来确定需要解密哪一个字符串。
10. 对于每个门 gᵢ ∈ C₀,按拓扑顺序
(a) GC生成器准备了五个混淆表,{T∨, T∧, T⊕, TL, TR}分别实现门功能 {∨,∧,⊕, L, R}中的一个,即或、与门、异或、左线直通、右线直通。注意, 这五个混淆表均基于门 gᵢ的相同输入/输出线标签构建。
(b) 两个参与方并行执行 n₀半诚实1-选-5 OT协议,其中 j从1到 n₀。此处GC生成器的输入为πⱼ({T∨, T∧, T⊕, TL, TR}),而GC评估者的输入是第 9步中获得的编程字符串的符号,即πⱼ({∨,∧,⊕, L, R})。结果,GC评估者收到剩余门的混淆门表。
11. GC评估者按照拓扑顺序评估C′中所有剩余的门,并将输出线密钥发送给生成器以进行解密。
观察3 (Free-XOR兼容性) 。我们提出的协议并未考虑Free-XOR。然而,显而易见的是,我们的构造与其是兼容的。事实上,正如第6节关于电路嵌入启发式方法的讨论中所指出的那样,生成的容器电路将有许多门被固定为异或门,而不是{∨,∧,⊕, L, R}中的占位符之一。显然,由于容器电路可以实现任意的 k个子句,并且在电路预处理阶段将其中某些门“永久”地固定为异或门,这不会影响安全性。在我们的电路嵌入启发式方法中,我们旨在最大化此类门的数量,以充分利用 Free-XOR。
定理1 . 假设OT协议在半诚实模型下是安全的。设 Enc为语义安全加密。设 H为由随机预言机建模的哈希函数。则协议1是在半诚实模型下的安全两方计算协议。
成本计算。 与 C的普通混淆电路相比,我们的协议使用了额外的一次性密钥实例。由于伊沙伊等人的一次性密钥扩展[14]以及后续优化,例如[1,16],这非常廉价。此外,[14]针对k一次性密钥的科列斯尼科夫和库马兰方法[16]可有效用于我们的一次性密钥。
具体而言,设 s为计算安全参数,并取每个混淆表的大小为 4s。那么,在大小为 n₀的容器 C₀中嵌入的 k个子句上评估该开关的通信开销将约为 3kn₀+ 22n₀s。
实际上,对电路编程字符串进行k选1一次性密钥传输大约需要3kn₀比特(包括对长度为 3n₀比特的字符串进行k次加密,以及对大小为 s的短解密密钥进行k选1一次性密钥传输,其成本较小,可忽略不计)。对大小为 4s的门表执行5选1一次性密钥通过 [16]实现。(回顾一下,[16]展示了如何以1选2一次性密钥两倍的成本完成5选1一次性密钥。)该成本包括发送5个长度为 4s的加密数据,以及在大小为 s的随机秘密值上执行 4选1一次性密钥,其成本约为 2s,即一个OT扩展矩阵的[16]行。综上所述,我们的总成本约为 3kn₀+ 22n₀s。
忽略低阶项 3kn₀,我们可以将每个门的通信开销视为大约是标准姚氏门电路的5.5 倍,以及Zahur等人最优混淆方案的11倍[34]。我们注意到,在子句由某方(GC生成器)输入选择的情况下,我们每个门的成本与[34]相同。最后,我们指出,与之前所有的GC协议不同,我们不需要包含用于选择正确子句输出并忽略其他子句输出的电路。
我们在第8节讨论依赖于嵌入质量的实验结果。
嵌套 开关 语句
我们观察到,开关嵌套的一种自然实现方式将是安全且低成本的。直观地说,这是因为绝大部分成本——门的一次性密钥——不会受到子开关的影响,而仅需调整编程字符串的管理。
由于篇幅限制,我们在完整版本中展示了详细的嵌套构造。
5 GMW协议用于叠加子电路
我们的GMW协议是将GC协议自然地重构为GMW方法,唯一的区别在于我们提出并利用了一个新颖的观察:在GMW中,多输入门的代价很低。在GMW中,我们将通过将门视为具有一个额外的五元函数定义输入来对其进行编程。电路编程字符串将在参与方之间通过(2,2)秘密共享。
秘密共享,就像常规的 GMW 线值一样。因此,我们的可编程门评估只是对 GMW 评估的轻微推广。
协议2 (GMW 与 开关 语句,草图)
1. 每函数一次预计算。解析C,识别switch(C₁, …, Cₖ),并在 C₁, …, Cₖ上调用图嵌入算法。获得大小为 n₀的容器电路 C₀以及 k个电路编程字符串d₁, …, dₖ,每个大小为 n₀。每个 dᵢ将由符号{∨,∧,⊕, L, R}组成,其中 L(分别地 R)是左(分别地右)输入线直通门。用dᵢ,ⱼ表示 dᵢ的第 j个符号。令 C′为将 C′中的switch(C₁, …, Cₖ)替换为 C₀后的结果。 C′在计算前被双方参与方已知。
2. 从输入的秘密共享开始,按照拓扑顺序对每个门gᵢ的 C′\ C₀,参与方根据 GMW协议评估各个门。特别是,定义开关选择的导线将被处理。
3. 设 Wⱼ₁,…Wⱼₜ 为定义 switch 选择的导线, t= ⌈log k⌉。参与方使用 OT 生成所选编程字符串的 (2,2)秘密共享,步骤如下。
(a) GC生成器生成 n₀ 个在 {∨,∧,⊕, L, R} 上的随机置换 π={πⱼ} 。
(b) GC生成器计算如下:对于 i= 1到 k,设置d̃ᵢ= π₁(dᵢ,₁)…, πₙ₀( dᵢ,ₙ₀)。现在,每个 d̃ᵢ看起来是随机的,因为每个符号 dᵢ,ⱼ 都应用了一个独立的随机置换 πⱼ。参与方 P₂ 使用他对 Wⱼ₁, …Wⱼₜ 的共享值,通过与 P₁ 执行 OT 来获取被置换的编程字符串d̃ᵢ。
4. 参与方继续评估 C′ 中所有剩余的门。 C₀ 中的门有一个额外的输入用于指定门功能,该输入取自电路编程字符串 d。注意 d 已经在两个参与方之间秘密共享: P₁ 拥有 π, P₂ 拥有 d̃ᵢ。 C₀ 的每个(双输入布尔)门都通过 GMW 的轻微推广方式来评估,其中参与方运行 1-out of-4 · 5 OT。具体而言,对于门gⱼ ∈ C₀的五种可能的门功能{∨,∧,⊕, L, R}, P₁准备四组相应的GMW一次性密钥秘密。然后, P₁根据 πⱼ对这五组每组四个的GMW OT秘密进行置换。接着, P₁和 P₂ ˜执行1-out-of-4 · 5 OT,其中 P₂的输入是d̃ᵢ,ⱼ以及导线值的GMW共享。
5. 参与方在 C′的输出线上合并他们的份额并重构输出。
定理 2 . 假设OT协议在半诚实模型下是安全的。那么协议 2是在半诚实模型下的安全两方计算协议。
成本计算。 与标准GMW协议相比,我们的协议需要对编程字符串进行一次性密钥传输。此外,它还评估多输入门,从而产生1选20 OT。如上所述,特别是在GC成本计算中,编程字符串的 OT是一项低阶成本项,可以忽略不计。此外,正如第2.2节详细解释的那样,使用[16]实现1选20 OT的成本仅比1选4 OT高出16比特,因此这一差异也可以忽略不计。我们得出结论:上述协议2 (带有开关语句的GMW)以与标准 GMW协议相似的成本实现了无感知电路编程。
嵌套 开关 语句 。 基于混淆电路的嵌套讨论与结果(第4节)可直接应用于GMW环境。
6 嵌入具有有界扇入的电路
在本节中,我们概述了一种启发式算法,该算法给定一组 k个电路DAGs, D₁,…, Dₖ,返回一个电路DAG D₀,使得对于每个 Dᵢ,都存在一个嵌入 fᵢ到 D₀中,并且 D₀的成本尽可能小。我们分两个主要步骤进行。
首先,在第6.1节中,我们仅关注扇出为一且入度被2限制的电路,尽管稍作推广即可得到入度被任意常数限制的情况。这类电路通常被称为有界入度为2的内向树,但为了表述方便,我们将它们称为树电路。我们描述了一个多项式时间的精确算法,该算法在给定两个树电路T₁和 T₂的情况下,找到一个最小代价的树电路 T, 以嵌入这两个电路 T₁和 T₂。具体而言,我们证明了以下结论。
定义2 . 嵌入一组电路有向无环图 D₁,…, Dₖ的成本,记为cost(D₁,…, Dₖ),是指存在一个最小代价的电路DAG D₀ ,使得对所有 i= 1..k均存在从 Dᵢ到 D₀的嵌入时,该电路DAG的电路成本。
定理3 。 设T₁和 T₂为树电路。存在一个 O(|T₁||T₂|)算法,用于确定一个最优的,即最小成本的树电路 T,该电路同时嵌入T₁和 T₂。
其次,在第6.2节中,我们去除了对扇出的限制,仅要求输入电路的扇入受限于2。我们描述了一种算法,该算法以第6.1节中的算法作为子程序。设 D₁和 D₂为扇出为2的电路有向无环图,我们描述了一种多项式时间启发式算法, 用于确定一个同时嵌入 D₁和 D₂的电路DAG。
一种直接的方法是将该启发式方法作为子程序使用,从而允许 k-电路输入。以下引理描述了一种算法,该算法返回的电路大小在输入电路数量上呈次线性增长(假设该启发式方法具有一定的性能)。由于该引理依赖于该启发式方法,我们强调该引理不能普遍适用。相反,我们使用该引理来形式化用于更大数量子句的嵌入算法,并讨论其预期性能。
引理1 . 设 τ> 1。假设存在一个算法,该算法以大小恰好为 n的电路有向无环图 D′和 D′′作为输入,并返回一个电路DAG D₀嵌入 D′和 D′′,其大小最多为 τn。然后存在一个算法,该算法以大小恰好为n的电路有向无环图 D₁,…, Dₖ作为输入,并返回大小最多为 kˡᵒᵍ² ᵝ n.的 D₀
证明。 设 D₁,.., Dₖ为一组电路有向无环图,且假设 k= 2。我们首先应用第6节中的启发式方法,对每个 i= 1,…, k/2确定一个同时嵌入 D₂ᵢ₋₁和 D₂ᵢ的电路DAGs D²ᵢ。对 j ≥ 2重复此过程,对每个 i= 1,…, k/2ʲ,我们从 Dʲ⁺¹₂ᵢ₋₁和 Dʲ⁺¹₂ᵢ确定 Dʲᵢ。最后返回 D= D¹。
我们通过归纳法证明规模界限,其中基本情况被假设成立。根据归纳法,假设该算法返回 Dʲ⁻¹ᵢ, i= 1,…, k/2ʲ,每个的大小至多为τʲ⁻¹n.。因此, Dʲᵢ′的大小至多为(τ) ∗τʲ⁻¹n= τʲn。设定j= ℓ= log k即可得到所需结果。
在第8节中,我们评估了该启发式方法的性能,在我们的实验中,其平均达到的τ值为1.151。假设此 τ值,引理1将意味着 k-电路大小至多为{|D₁|, |D₂|,…, |Dₖ|}。
6.1 树形电路
为了证明定理 3,我们使用动态规划并匹配 顶点对 T₁和 T₂如下所示。为简便起见,我们暂时省略对Free-XOR的处理。设 δ⁻(v) 为一个节点的入度。
定义 3 .对于电路DAG D 和 t ∈ D,令 D[t] 为在顶点 v 上诱导出的电路DAG,使得在 D 中存在一条从 v 到 t 的有向路径。
定义4 . 将a ∈ T₁和 b ∈ T₂的匹配代价定义为树 T的最小代价,使得存在一个映射 f₁将 T₁[a]嵌入到 T中,以及另一个映射 f₂将 T₂[b]嵌入到 T中,其中 f₁(a)= f₂(b)。将此最小代价记为match(a, b)。
考虑计算 cost(T₁, T₂),其中 a 是 T₁ 的根, b 是 T₂ 的根。显然,在成本方面,将 a 和 b 映射到 T 的不相交的子树中没有任何优势,因此要么 (i) f₁(a) ∈ T[f₂(b)],,要么 (ii) f₂(b) ∈ T[f₁(a)]。由此可知,我们可以通过考虑 O( |T₁| + |T₂|) 匹配代价来计算 cost(T₁, T₂)。
定义 5 。设 T₁ 和 T₂ 为具有根 a 和 b的树电路,定义:
(i) 成本2(T₁, T₂) := minₜ ∈ T₂(成本(T₂) −成本(T₂[t]) + match(a, t)) 。
(ii) 成本1(T₁, T₂) := minₜ ∈ T₁(成本(T₁) −成本(T₁[t]) + match(t, b)) 。
引理 2 . 设T₁和 T₂分别为具有根 a和 b的树电路。设 T为具有 f₁嵌入 T₁和 f₂嵌入 T₂的最小代价树电路。
(i)如果 f₁( a) ∈ T[f₂( b)],则 成本(T₁ , T₂) = 成本2( T₁ , T₂),
(ii)如果 f₂( b) ∈ T[f₁( a)],则 成本(T₁ , T₂) = 成本1( T₁ , T₂)。
推论1。 成本(T₁, T₂)等于成本1(T₁,{v₂₅}>)与成本2(T₁, T₂)的最小值。
为了实现定理3的运行时间,我们观察到可以利用 a和 b的子节点以及单次匹配来确定这些成本。
引理3 。 设T₁和 T₂分别为具有根 a和 b的树电路。那么,
cost1(T₁, T₂)= min{match(a, b), minₐ′∈N⁻T₁(a) (cost(T₁)− cost(T₁[a′])+ cost1(T₁[a′])(T₂))},
cost2(T₁, T₂)= min{match(a, b), min_b′∈N⁻T₂(b) (cost(T₂)− cost(T₂[b′])+ cost2(T₁)(T₂[b′]))}.
由引理2可知,为了确定cost(T₁, T₂),还需说明如何确定match(a, b)。由于a和 b的映射是固定的,匹配代价更容易计算。实际上,我们可以假设 f₁(a) = f₂(b) 是 T的根。此外,如果 T₁[a]或 T₂[b]中任意一个是单元素节点,则 match(a, b) 可以直接确定。
观察4 。 如果 T₁[a]是单元素节点,则对于所有 b ∈ T₂,match(a, b)=cost(T₁[a], T₂[b]) = cost(T₂[b])。如果 T₂[b]是单元素节点,则对于所有 a ∈ T₁,match(a, b)= cost(T₁[a], T₂[b])= cost(T₁[a])。
由观察 4可知,当 a 或 b 中任意一个为 a的叶节点,或 b为 T₂的叶节点时,很容易确定 match(a, b)。具体而言,当 b是叶节点时,有 match(a, b) = ∑ₜ∈T₁[a]2 ∑ ᵥ∈N⁻T₁(t)wᵥₜ ;而当 a是叶节点时,match(a, b)=∑ₜ∈T₂[a]2 ∑ ᵥ∈N⁻T₂(t)wᵥₜ.
因此,我们可以假设T₁[a]和 T₂[b]各自至少有三个顶点。为了确定match(a, b),我们只需考虑子节点的所有可能配对。
引理4 。 对于具有入邻居 a₀、 a₁的 a ∈ T₁和具有入邻居b₀、 b₁的 b ∈ T₂,我们有
match(a, b)= 2²+ minᵢ∈{₀,₁} minⱼ∈{₀,₁}( cost(T₁[aᵢ], T₂[bⱼ])+ cost(T₁[a₁₋ᵢ], T₂[b₁₋ⱼ])).
我们现在可以完成定理3的证明,其伪代码作为算法 1 给出。
算法1:确定 cost(T₁,T₂)
1. 二叉树电路 T₁ T₂ 1 ,输出: cost(T₁,T₂)
2. 令 a₁, …, aₙ₁ 为 V(T₁) 的广度优先搜索顺序
3. 令 b₁, …, bₙ₂ 为 V(T₂) 的广度优先搜索顺序
4. for i= n₁ downto 1:
5. … for j= n₂ downto 1:
6. ...... 确定 M[aᵢ, bⱼ]= match(aᵢ, bⱼ)。
7. ...... 确定 C1[aᵢ, bⱼ]= cost1( T₁[aᵢ], T₂[bⱼ])。
8. ...... 确定 C2[aᵢ, bⱼ]= cost2(T₁[aᵢ], T₂[bⱼ])。
9. ...... 设置 C[aᵢ, bⱼ]= min(C1[aᵢ, bⱼ], C2[aᵢ, bⱼ])。
10. 返回 C(T₁[a₁], T₂[b₁])
6.2 通用电路
启发式算法。我们利用第6.1节的方法开发了一种多项式时间启发式算法。然后,我们简要概述其正确性证明。在第8节中,我们将展示该算法的实验验证结果。
为简便起见,假设 T₁和 T₂的每个非叶节点的加权入度恰好为2,并且暂时不考虑Free-XOR。我们指出,这些思想可以很容易地推广到一般情况。
我们首先考虑一个相关的问题。设 D₁=(V₁, E₁)和 D₂=(V₂, E₂)为输入电路有向无环图,每个图都恰好有一个输出线节点。令T₁是 D₁的一个生成入树子图,并令 T₂是 D₂的一个生成入树子图。我们确定一个最小成本电路有向无环图D₀,使其同时嵌入 D₁和 D₂,并满足如下限制:必须存在 D₀的一个生成入树子图 T,使得(A) T₁和 T₂均可嵌入到 T中,且(B) T₁和 T₂的叶节点分别映射到 T的叶节点。将此类有向无环图的最小代价记为cost(D₁|T₁,D₂|T₂)。
我们指出,总存在适当选择的 T₁和 T₂,使得 D₀成为 D₁和 D₂的最优嵌入。此外,我们可以基本忽略条件(B),因为对于 Tᵢ的任意嵌入,总是可以将 Tᵢ中 任意叶节点的外向树向下扩展至 T的一个叶节点。
类似于引理2,我们可以通过考虑 O(|T₁| + |T₂|)匹配来确定a ∈ D₁和 b ∈ D₂的 cost(D₁[a]|T₁[a] ,D₂[b]|T₂[b])。
定义6 。定义 a ∈ D₁和 b ∈ D₂的匹配 ∗为电路DAG D₀的最小代价,使得存在一个映射 f₁将 D₁[a]嵌入到D₀中,以及另一个映射 f₂将 D₂[b]嵌入到 D₀中,满足 f₁(a)= f₂(b),并且存在 D₀的一个生成入树子图 T,使得(A)和(B)成立。
定义7 . 设 r为具有门节点 G的电路DAG D的根。进一步假设 T是包含 r的 D的一个内向树形子图。定义在顶点 T上的成本D为成本T(D):=∑ᵥ ∈ V(T)∩ G2ᶠᶠⁱ ⁻ (v) .
定义 8 . 设 T₁和 T₂分别为具有根 a和 b的电路有向无环图。定义:
(i) 成本2(D₁|T₁,D₂|T₂) := minₜ∈T₂(成本T₂(D₂)−成 本T₂ t + match∗(a,t))。
(ii) 成本1(D₁|T₁,D₂|T₂) := minₜ∈T₁(成本T₁(D₁)−成本T₁ t + match∗(t,b))。
引理 5 . 设 D₁和 D₂为电路有向无环图。对于 a ∈ D₁ ,令 T₁为包含 a的 D₁[a]的一个入树子图;对于 b ∈ D₂ ,令 T₂为包含 b的 D₂[b]的一个入树。那么, cost(D₁[a]|T₁[a], D₂[b]|T₂[b]) = min{cost1(D₁|T₁, D₂|T₂), cost2(D₁|T₁, D₂|T₂)}.
由引理5,为了确定 cost(D₁[a]|T₁[a],D₂[b]|T₂[b]),仍有待说明如何确定 match∗(a,b)。与之前相同,如果 T₁[a]或 T₂[b]是单元素节点,则 match∗(a,b) 如下所示。
观察 5 。 如果 T₁[a] 是单元素节点,则对于所有 b ∈ T₂,match∗(a,b)=成本T₂ b 。如果 T₂[b] 是单元素节点,则对于所有 a ∈ T₁,match∗(a,b)=成本T₁ a 。
当T₁[a]和 T₂[b]都不是单元素节点时,每当 δ⁻(a) = δ⁻(b) = 2,我们按如下方式确定match∗(a,b)。对于具有入邻居 a₀, a₁的 a ∈ T₁以及具有入邻居 b₀, b₁的b ∈ T₂,有 match∗(a,b)等于: 2²+ minᵢ∈{₀,₁} minⱼ∈{₀,₁}(cost(D₁[aᵢ]|T₁[aᵢ], D₂[bⱼ]|T₂[bⱼ]) + cost(D₁[a₁₋ᵢ]|T₁[a₁₋ᵢ], D₂[b₁₋ⱼ]|T₂[b₁₋ⱼ])).
当度数不匹配时,情况更为复杂。事实上,要么节点 a连接一条边,该边位于 F₁的两个子树之间,要么节点 b连接一条边,该边位于 F₂的两个子树之间。在这种情况下,匹配∗未定义。为了克服这一点,我们分别考虑两种情况。
第一种情况,如果 a在T₁中是叶节点,且 b在 T₂中是叶节点,则需要创建一个虚拟门节点,其输入为 f₁(a)和 f₂(b)。这种构造的匹配为 ∗= 1²,因为对于 f₁(a)、 f₂(b)以及虚拟门,我们各自承担代价4。第二种情况,假设 a在 T₁中不是叶节点,而b在 T₂中不是叶节点的情况是对称的。此时,我们的启发式方法将匹配∗设为满足 f₁(a)作为 f₂(b)的入邻居的树的最小代价。
我们现在可以确定 D₀使用以下算法的变体1。
算法2:确定cost(D₁|T₁, D₂|T₂)
1. 选择一个生成内向树森林 F₁ ,使得 D₁ 中的每个输出节点都包含在 F₁的某棵内向树中。类似地,为 D₂ 选择 F₂。在我们的实现中,将重点随机均匀地选择此类森林。此类森林可通过为 D₁ 和 D₂ 的每个节点的出边中各选择一条边来获得;此处省略更多细节。
2. 对于每个 T₁ ∈F₁和 T₂ ∈F₂计算成本(D′₁|T₁,D′₂|T₂),分别 D′₁, D′₂是由取 D₁的所有边的并集得到的有向无环图D₂,且至少有一个端点在 T₁中,分别 T₂。此处可直接应用算法 2。
3. 使用步骤2中计算出的成本,我们按如下方式计算一对最优的内向树。设 G 为具有二分划(A, B)的加权二分图,定义如下:令 m:= max{|F₁|, |F₂|}。集合A包含由 F₁的每个内向树标记的节点以及 m−|F₁| 个‘虚拟’节点。类似地,集合 B包含由 F₂的每个内向树标记的节点以及 m − |F₂| 个‘虚拟’节点。G是一个完全二分图,其中 A中标记为 T₁的节点与 B中标记为 T₂的节点之间的边的权重为cost(D′₁|T₁,D′₂|T₂),而‘虚拟’节点与 A中标记为 T₁的节点之间的边的权重分别为costT₁(D′₁), B中标记为 T₂的节点的权重为costT₂(D′₂)。由于 G是完全的,它具有完美匹配。此外,任何完美匹配都对应于 D₁中的输出节点与 D₂中的输出节点之间的一种配对,其中与‘虚拟’节点匹配的节点没有伙伴,将作为自身的副本被嵌入。因此, B中的最小代价匹配对应于输出节点的最小代价配对。我们指出,在关于 |A| + |B| 的多项式时间内计算这样的最小代价完美匹配是一个经典结果(例如 参见[9])。
4. 现在我们确定最终的电路DAG。对于最小成本完美匹配中的每个 Tⁱ₁ − Tʲ₂配对,我们构造一个树电路 Tⁱ⁻ʲ和嵌入 fⁱ⁻ʲ₁ : Tⁱ₁ → Tⁱ⁻ʲ以及 fⁱ⁻ʲ₂ : Tʲ₂ → Tⁱ⁻ʲ,其中‘虚拟’配对为恒等嵌入。令T= ⋃ᵢ,ⱼ Tⁱ⁻ʲ。通过取所有 Tⁱ₁ − Tʲ₂配对(包括‘虚拟’节点)上的fⁱ⁻ʲ₁的并集,可找到将 F₁嵌入到 T的一个嵌入 f₁。以类似方式可找到将 F₂嵌入到 T的一个嵌入 f₂。令 D₀为通过复制一份 T得到的有向无环图。首先,对于每条边 xy ∈ E₁ −E(F₁),我们添加一条从 f₁(x)的源到 f₁(y)的源、权重为 w′ₓᵧ的边。对于每条边 xy ∈ E₂−E(F₂)我们也进行相同操作,但添加这些边可能会导致环路。在添加 xy之前,我们测试在 D₀中是否存在一条从 y到 x的有向路径。如果存在这样的路径 P,则必然存在一条仅被电路 D₁使用的 P的边。通过将该路径分割至这条边,我们可以确保 D₀加上 xy 是无环的。然后我们更新 f₁ 和 f₂,以包含这些额外的边映射。
定理 4 . 该 Circuit DAG Embeding Algorithm找到一个可行的电路有向无环图。
7 最优嵌入图是NP完全的
这里我们考虑寻找最小尺寸的有向图容器 D₀以嵌入两个有向图 D₁和 D₂这一问题的复杂性。该问题通过从 3-sat的归约被证明是NP完全的。完整的证明细节见完整版本。
定理 5 . 寻找有向图 D₀ 使得将两个有向图 D₁ 和 D₂ 嵌入 D₀ 的成本至多为 k 的问题是 NP完全 的,即使 D₁ 和 D₂ 中每个节点的入度和出度均以2 为界,并且 D₁ 和 D₂ 中至多有一个是树。
8 实验评估与验证
本文报告了我们在第6节中提出的启发式方法的实验评估结果,以及协议1相较于标准GC的效率,以及协议2相较于标准GMW的效率。
评估方法。我们用于比较本方法与GC的主要指标是总带宽消耗,该带宽由所有OT实例和混淆门传输所消耗。我们并未因本方法每次切换带来的额外轮数所导致的潜在延迟增加而进行惩罚。正如引言中所述,这是因为在大规模电路/批量执行中,往返延迟可能与数据传输重叠,若如此,延迟将不会影响性能。当然,在某些场景下(例如高网络延迟、小电路/单次执行),延迟可能占主导。我们将完整实现和参数调优留作重要的未来工作,以应对这些情况。
我们强调,在SPF-SFE和GMW情况下,实验中报告了显著的具体改进, 且与标准GC相比,我们不需要额外的轮数。
我们通过在一组使用电路编译器 CBMC-GC 构建的电路上进行实验来验证我们的方法 [8],,如表1所示。我们通过利用多种可用的算术和位操作电路的变体和组合构建了这32个电路。因此,输入电路/有向无环图之间存在一些共性 (这在实际中很常见),这可能会影响性能。我们强调,我们的算法并不知晓这些电路中的共性,而是通用地应用。我们进一步指出,这些电路并未针对其计算的函数进行手工优化。实际上,我们的目标不是为特定函数寻找最佳电路,而是验证我们的启发式方法并理解其行为。为此,我们在一组大小和相似性各异的简单电路上运行该方法以进行实验。在许多应用中(例如,私有数据库策略),子句会更加相似,我们预期性能会更好。
结果 。 首先,我们强调,我们的
1551

被折叠的 条评论
为什么被折叠?



