|
myl7/fss 2.0.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
|
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... | |
2-party distributed multi-point function (DMPF).
The scheme is from the paper, Lightweight, Maliciously Secure Verifiable Function Secret Sharing (1: the published version), Section 4.
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\).
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.