Distributed Point Functions

A distributed point function (DPF) allows one to split the description of a point function (which outputs on input and everywhere else) into two succinct keys such that and individually reveal nothing about or , but any party holding one key can evaluate the function’s share at any point. Introduced by Gilboa and Ishai — GI14.

Syntax

A distributed point function for domain and range is a tuple of efficient algorithms :

  • is a randomized key generation algorithm that takes a special point and output value , and outputs two evaluation keys ,
  • is a deterministic algorithm for that evaluates the -th share of the point function at input .

Properties

Correctness

For all , , , and , the shares sum to the point function: where if and otherwise.

Hiding (Security)

For , key reveals nothing about : for all efficient ,

Variations

Function secret sharing (FSS)

DPFs are a special case of function secret sharing (FSS), introduced by Boyle, Gilboa, and Ishai — BGI15, BGI16. FSS generalizes DPFs to arbitrary function classes : one generates shares of any , such that each key evaluates the function’s additive share, and each key hides individually.

Multi-point functions

Distributes a function that is non-zero on multiple points. Can be built by composing multiple DPFs.

Other results

  • DPFs can be constructed from OWFs (concretely, from PRGs) with key size GI14
  • Computational 2-server PIR can be built from DPFs (the query is a DPF key pair, and each server evaluates its share) — GI14
  • DPFs generalize to FSS for richer function classes including intervals, halfspaces, and decision trees — BGI15, BGI16
  • DPF key size lower bound: any 2-server DPF for -element domain has keys of size — standard