Function Secret Sharing: Improvements and Extensions

Function Secret Sharing

函数秘密共享(Function Secret Sharing,FSS)是一种密码学原语,由Boyle等人在2015年的Eurocrypt会议上首次提出,其目的是为了实现对分布式数据的安全搜索和更新。具体来说,一个m方FSS方案可以将一个给定函数族F中的函数f : {0, 1} n -> G,其中G是一个阿贝尔群,分割成m个函数f1,…,fm,由密钥k1,…,km描述,满足f = f1 + … + fm,并且任何密钥子集都不能泄露f。这种原语可以用于减少私有信息检索(Private Information Retrieval,PIR)等应用中的通信开销。

本论文中FSS支持任意的线性函数族,支持任意的多元函数族,支持任意的非线性函数族,如多项式、阈值、比特分解等。可以在恶意模型下提供安全性,并且只需要常数次通信和计算。

Application

  • 私密信息检索(Private Information Retrieval),是一种允许用户从分布式数据库中安全地读取数据而不泄露查询信息的技术。
  • 私密集合交集(Private Set Intersection Cardinality),是一种允许两方计算他们各自集合的交集大小而不泄露其他信息的技术。
  • 大规模匿名消息(Large-Scale Anonymous Messaging),是一种利用DPF实现的可扩展、高效、安全和抗审查的匿名通信系统。

Function Secret Sharing: Improvements and Extensions

Function Secret Sharing: Improvements and Extensions是一篇关于密码学中的函数秘密共享(FSS)技术的论文,它提出了一些改进和扩展的方法,以提高FSS的效率和功能。FSS是一种允许多个参与者对一个函数进行分割和重构的技术,它可以用于实现安全的多方计算(MPC)和私有信息检索(PIR)等应用。

作者是Elette Boyle,Niv Gilboa和Yuval Ishai。这篇论文发表在2016年的ACM会议上,主要研究了Function Secret Sharing (FSS)这一概念的改进和扩展。

FSS是一种将一个给定函数族F中的函数f分割成m个子函数f1,…,fm的方法,使得f = f1 + … + fm,并且每个子函数都用一个密钥ki来描述。FSS的目标是保证任何少于m个密钥的集合都不能泄露f的信息。FSS可以用于实现私密地从分布式数据库中读取或写入数据的应用场景,例如私密信息检索(PIR)、匿名消息传递等。

Introduction

这篇论文对之前的工作做了以下几方面的改进和扩展:

  • 简化了FSS构造方法。引入了一个张量运算来得到更简洁的FSS构造,并提出了新的构造方案。
  • 改进了2-party DPF。DPF是一种特殊的FSS,用于点函数族,即只在一个点上取非零值的函数。作者将基于伪随机生成器(PRG)的DPF方案的密钥大小减少了大约4倍,并优化了计算成本。优化后的DPF显著提高了2-server PIR和相关原语的具体效率。
  • FSS for new function families. 提出了一种高效地基于PRG实现决策树函数族(decision tree functions) FSS 的 2-party 方案,只泄露树结构和内部节点标签。并将其应用到多维区间函数(multi-dimensional intervals) FSS 上。还提出了一种通过增加参与方数量来扩展 FSS 方案(extending FSS schemes) 的通用技术。
  • Verifiable FSS. 提出了高效地验证来自潜在恶意用户(potentially malicious user) 的密钥 (k∗ 1 , . . . , k∗ m) 是否与某个 f ∈ F 一致(consistent) 的协议(protocols)。这种验证对于涉及私密写入或投票(private writing or voting) 的应用场景是至关重要(critical) 的。

FSS for PIR

用FSS实现PIR的基本思想是,将数据库分割成多个服务器,每个服务器存储一份加密的数据。用户想要查询某个索引i对应的数据时,可以用FSS生成两个分布式点函数f1和f2,其中f1(a) = 1,f2(a) = 1,而其他输入都为0。然后用户将f1发送给第一个服务器,将f2发送给第二个服务器。每个服务器用收到的秘密份额计算出一个向量,sum(xj*fi(j)),并返回给用户。用户将两个向量相加,就可以得到索引i对应的数据。这样做的好处是,每个服务器都不知道用户查询的是哪个索引,也不知道另一个服务器返回了什么结果。

Challenge

FSS方案的效率和功能受到了多方面的限制。例如,在构造方法上,之前的工作主要基于伪随机生成器(Pseudo-Random Generator,PRG)或者模重复码(Modular Repetition Code),而没有利用其他编码技术;在函数族上,之前的工作主要支持点函数(Point Function)或者间隔函数(Interval Function),而没有考虑其他更复杂或者更通用的函数;在应用场景上,之前的工作主要关注PIR或者匿名消息传递(Anonymous Messaging),而没有探索其他可能性。

Contribution

这篇论文主要贡献有:

  • 提出了一种新的FSS方案,称为基于点积的FSS(DP-FSS),它可以实现任意线性函数和任意二元函数的秘密共享,并且具有更低的通信复杂度和存储开销。
  • 提出了一种新的FSS构造方法,称为基于模重复码的FSS(MR-FSS),它可以实现任意多元函数的秘密共享,并且具有更好的可扩展性和灵活性。
  • 提出了一种新的FSS应用方法,称为基于FSS的PIR(FPIR),它可以实现对大规模数据库进行高效且安全地查询,并且具有更低的服务器负载和客户端带宽消耗。
  • 提出了一种新的FSS变体,称为带权重向量输入输出域扩展功能秘密共享(WIO-FSS),它可以实现对不同输入输出域大小和权重向量设置下任意函数进行秘密共享,并且具有更强大和 通用性。

Tensor Operation

函数秘密共享(FSS)方案是一对算法(Gen, Eval),它可以在分布式输入上分割和评估一个函数f,而不泄露f或输入2。Gen是生成每个参与者的份额的算法,它基于f来生成;Eval是评估f的算法,它在份额上运行并返回结果3。

张量方法是一种用于FSS的操作,它可以简化之前的构造方法,并提出新的构造方法。张量方法的基本思想是,将一个函数f分解成两个或多个子函数g1,…,gn的乘积,然后对每个子函数应用FSS,得到相应的份额。最后,将每个参与者的份额按照张量积(tensor product)的方式组合起来,得到f的份额。这样做的好处是,可以利用不同类型或大小的编码技术来实现不同子函数的FSS,并且可以减少通信开销和存储需求。

Optimized DPF

论文中提出了一种改进的DPF方案,将密钥大小从4n(λ + 1)降低至n(λ + 2),其中n是输入域的位数,λ是安全参数。改进的方法是利用了一个基于点积运算(dot-product operation)的新型PRG,以及一个基于模重复码(modular repetition code)的编码技术。

具体来说,改进后的DPF方案如下:

  • 对于给定的输入域{0, 1}^n和输出域{0, 1}^λ,选择两个随机向量a,b ∈ {0, 1}^n,并定义一个点积运算PRG G : {0, 1}^n × {0, 1}^n → {0, 1}^(λ+2),满足G(x,y) = (x · y mod 2) || H(x,y),其中H : {0, 1}^n × {0, 1}^n → {0, 1}^(λ+1)是一个普通的PRG。
  • 对于给定的点函数f_a : {0, 1}^n → {0, 1}^λ,其中f_a(a) = b,其他输入都为零向量,生成两个密钥k_1,k_2 ∈ ({0, 1}(λ+2))n,满足k_1 ⊕ k_2 = G(a,a) || G(a,a+e_2) || … || G(a,a+e_n),其中e_i表示第i位为1其他位为零的向量。
  • 对于任意输入x ∈ {0, 1}^n,计算f_a(x) = (k_1 ⊕ k_2)[x] ⊕ (k_2[x] · k_2[x+e_2] · … · k_2[x+e_n]) mod 2^λ。

可以证明这个方案是安全和正确的,并且每个密钥只需要存储n(λ + 2)位。

Gen函数和CW纠错码

FSS for MPC

posted @ 2023-03-17 17:10  Synnn  阅读(1123)  评论(0编辑  收藏  举报