|
myl7/fss 1.1.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>Classes | |
| class | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, kappa, ch_lambda > |
| 2-party VDMPF scheme. More... | |
| struct | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, kappa, ch_lambda >::BucketKey |
| Per-bucket key containing the inner VDPF key data. More... | |
| struct | fss::Vdmpf< in_bits, max_points, bucket_bits, Group, Prg, XorHash, Hash, Prp, In, kappa, ch_lambda >::Key |
| VDMPF key for one party. 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\}^n\), 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.
We limit the max input domain bit size to 128.
The inner VDPF uses uint as its input type and bucket_bits as the domain bit size.