myl7/fss 2.0.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
Loading...
Searching...
No Matches
dmpf.cuh File Reference

2-party distributed multi-point function (DMPF). More...

#include <cuda_runtime.h>
#include <cuda/std/array>
#include <cuda/std/span>
#include <type_traits>
#include <cstddef>
#include <cassert>
#include <span>
#include <vector>
#include <fss/group.cuh>
#include <fss/prg.cuh>
#include <fss/hash.cuh>
#include <fss/prp.cuh>
#include <fss/util.cuh>
#include <fss/dpf.cuh>
#include <fss/cuckoo_hash.cuh>
#include <fss/constraints.cuh>
#include <fss/compat.cuh>
#include <limits>
#include <stdexcept>
#include <string>

Classes

class  fss::Dmpf< in_bits, max_points, bucket_bits, Group, Prg, Prp, In, ch_lambda >
 2-party DMPF scheme. More...
struct  fss::Dmpf< in_bits, max_points, bucket_bits, Group, Prg, Prp, In, ch_lambda >::Key
 DMPF key for one party. More...

Detailed Description

2-party distributed multi-point function (DMPF).

Author
Yulong Ming i@myl.nosp@m.7.or.nosp@m.g

The scheme is from the paper, Lightweight, Maliciously Secure Verifiable Function Secret Sharing (1: the published version), Section 4.

Definitions

Multi-point function: for the input domain \(\sG_{in} = \{0, 1\}^{\mathrm{in\_bits}}\), the output domain \((\sG_{out}, +)\) that is a group, a set of \(t\) pairs \((a_j, b_j)\) where \(a_j \in \sG_{in}\) and \(b_j \in \sG_{out}\), a multi-point function \(f\) is a function that for any input \(x\), the output \(y\) has \(y = b_j\) when \(x = a_j\) for some \(j\), otherwise \(y = 0\).

  • Key generation: \(Gen(1^\lambda, \{(a_j, b_j)\}) \rightarrow (k_0, k_1)\).
  • Batch evaluation: \(BatchEval(k_i, \{x\}) \rightarrow \{y_i\}\).

Implementation Details

We fix the output domain size at 16B and always set the last word's LSB to 0, corresponding to \(\lambda = 127\). See Groupable for more details.

The input domain width is at most 126 bits so the three-choice PRP domain fits 128 bits.

The inner DPF uses __uint128_t as its input type and bucket_bits as the domain bit size.

References

  1. Leo de Castro, Antigoni Polychroniadou: Lightweight, Maliciously Secure Verifiable Function Secret Sharing. EUROCRYPT 2022: 150-179. https://doi.org/10.1007/978-3-031-06944-4_6.