|
myl7/fss 2.0.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
|
2-party verifiable distributed multi-point function (VDMPF). 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/vdpf.cuh>#include <fss/cuckoo_hash.cuh>#include <fss/constraints.cuh>#include <fss/compat.cuh>#include <cstdint>#include <limits>#include <stdexcept>#include <string>Classes | |
| class | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, ch_lambda > |
| 2-party VDMPF scheme. More... | |
| struct | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, ch_lambda >::BucketKey |
| Per-bucket VDPF key with shared correction words and one party's initial seed. More... | |
| struct | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, ch_lambda >::Key |
| VDMPF key for one party, containing the PRP seed and per-bucket keys. More... | |
2-party verifiable distributed multi-point function (VDMPF).
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\).
VDMPF: extends DMPF with verifiability. Uses Cuckoo hashing to distribute point functions across buckets, then evaluates an inner VDPF per bucket.
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 VDPF uses __uint128_t as its input type and bucket_bits as the domain bit size.