Dual Packing
Definition 1. (Inner-product commitment) Given fields {\mathbb{F}} \subseteq {\mathbb{E}} an ({\mathbb{F}},{\mathbb{E}})-inner-product commitment scheme (IPCS) commits to a vector \mathbf{w} \in {\mathbb{F}}^{n}. An opening consists of a query \mathbf{q} \in {\mathbb{E}}^{n} and claimed value h \in {\mathbb{E}} and reduces the claim,
\langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{E}} = h
to a claim \langle\mathbf{e},\mathbf{q}\rangle_{\mathbb{E}} = h' for some public \mathbf{e} \in {\mathbb{E}}^{n}, typically \mathbf{e} = \operatorname{eq}_{\mathbf{γ}} for some {\mathbf{γ}} \in {\mathbb{E}}^{\log_{2}n}.
WHIR, and Ligerito are ({\mathbb{E}},{\mathbb{E}})-IPCS for |{\mathbb{E}}| \geq \sim 2^{\lambda} where \lambda is the security parameter and indeed reduce to \mathbf{e} = \operatorname{eq}_{\mathbf{γ}} for some \mathbf{γ}. If the query happens to be an MLE evaluation, i.e. \mathbf{q} = \operatorname{eq}_{\mathbf{δ}} for some delta \mathbf{δ}, then the reduced claim \langle\mathbf{e},\mathbf{q}\rangle = \langle\operatorname{eq}_{\mathbf{γ}},\operatorname{eq}_{\mathbf{δ}}\rangle can be efficiently evaluated and the schemes are a succinct polynomial commitment scheme.
We are interested in committing to a subfield {\mathbb{F}} \subset {\mathbb{E}} and opening in with a query in \mathbb{F} or in \mathbb{E}, so what we want instead is a ({\mathbb{F}},{\mathbb{F}})- or ({\mathbb{F}},{\mathbb{E}})-IPCS. We can trivially construct those using the subfield embedding, but this has an overhead equal to the extension degree \lbrack{\mathbb{E}}:{\mathbb{F}}\rbrack. On approach to mitigate this overhead is to adapt the commitment scheme to the sparcity. Here instead we will focus on approaches that mitigate the overhead without modifying the ({\mathbb{E}},{\mathbb{E}})-IPCS. The canonical approach is ring-switch as presented in DP24 §3 and BRW26 §B. Here instead we develop it along a different route, inspired by the inner product optimization in BGKSW14 eq. 2 which was adapted to inner product commitments in a previous post. We will show that under very general assumptions, the constructions must all share the same structure. Furthermore, this structure preserves succinctness of matrix branching programs.
(𝔽,𝔽)-IPCS embedding
We will start with the simpler case where witness, query and value all lie in \mathbb{F}. Let \mathbb{E} be a degree d-extension of \mathbb{F} and \mathbf{w},\mathbf{q} \in {\mathbb{F}}^{nd}. Then we seek a triple of maps W,Q:{\mathbb{F}}^{dn} \rightarrow {\mathbb{E}}^{n},H:{\mathbb{E}} \rightarrow {\mathbb{F}} that satisfy:
\langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{F}} = H\left( \langle W(\mathbf{w}),Q(\mathbf{q})\rangle_{\mathbb{E}} \right).
First we assume that W and Q act blockwise over groups of d elements, i.e.
W\left( \left( \mathbf{w}_{1},\mathbf{w}_{2},\ldots,\mathbf{w}_{n} \right) \right) = \left( W_{d}\left( \mathbf{w}_{1} \right),W_{d}\left( \mathbf{w}_{2} \right),\ldots,W_{d}\left( \mathbf{w}_{n} \right) \right)
where W_{d}:{\mathbb{F}}^{d} \rightarrow {\mathbb{E}} and similarly for Q. We first study n = 1 and assume that H is \mathbb{F}-linear. The resulting embeddings extend blockwise to arbitrary n, as shown below.
Theorem 2. (Structure of dual packing) Let {\mathbb{E}}/{\mathbb{F}} be a field extension of degree d, let H:{\mathbb{E}} \rightarrow {\mathbb{F}} be \mathbb{F}-linear, and let W,Q:{\mathbb{F}}^{d} \rightarrow {\mathbb{E}} be arbitrary maps. Then
H\left( W(\mathbf{w})Q(\mathbf{q}) \right) = \langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{F}}
holds for all \mathbf{w},\mathbf{q} \in {\mathbb{F}}^{d} if and only if there are bases \left( \beta_{1},\ldots,\beta_{d} \right) and \left( \beta_{1}^{\vee},\ldots,\beta_{d}^{\vee} \right) of \mathbb{E} over \mathbb{F} such that
W(\mathbf{w}) = \sum_{i \in \lbrack d\rbrack}w_{i}\beta_{i},\quad Q(\mathbf{q}) = \sum_{i \in \lbrack d\rbrack}q_{i}\beta_{i}^{\vee},
and H\left( \beta_{i}\beta_{j}^{\vee} \right) = \delta_{ij}. These bases are called dual with respect to H. In particular, W and Q are \mathbb{F}-linear isomorphisms.
Proof. Forward direction: Let \mathbf{e}_{1},\ldots,\mathbf{e}_{d} be the standard basis of {\mathbb{F}}^{d}, and set b_{i} = W\left( \mathbf{e}_{i} \right) and c_{j} = Q\left( \mathbf{e}_{j} \right). By [eq-dual-packing],
H\left( b_{i}c_{j} \right) = \delta_{ij}.
If \sum_{i \in \lbrack d\rbrack}\lambda_{i}b_{i} = 0, multiplying by c_{j} and applying H gives \lambda_{j} = 0. Thus the b_{i} are linearly independent and, since \dim_{\mathbb{F}}{\mathbb{E}} = d, form a basis. The same argument shows that the c_{j} form a basis.
For arbitrary \mathbf{w} \in {\mathbb{F}}^{d}, write W(\mathbf{w}) = \sum_{i \in \lbrack d\rbrack}\lambda_{i}b_{i}. Multiplying by c_{j} and applying H gives
\lambda_{j} = H\left( W(\mathbf{w})c_{j} \right) = H\left( W(\mathbf{w})Q\left( \mathbf{e}_{j} \right) \right) = \langle\mathbf{w},\mathbf{e}_{j}\rangle_{\mathbb{F}} = w_{j}.
Hence W(\mathbf{w}) = \sum_{i \in \lbrack d\rbrack}w_{i}b_{i}. Similarly, Q(\mathbf{q}) = \sum_{j \in \lbrack d\rbrack}q_{j}c_{j}. Thus W and Q are linear isomorphisms, with \beta_{i} = b_{i} and \beta_{i}^{\vee} = c_{i} the required dual bases.
Converse direction: Expanding in the dual bases gives
\begin{aligned} H\left( W(\mathbf{w})Q(\mathbf{q}) \right) & = \sum_{i,j \in \lbrack d\rbrack}w_{i}q_{j}H\left( \beta_{i}\beta_{j}^{\vee} \right) \\ & = \sum_{i,j \in \lbrack d\rbrack}w_{i}q_{j}\delta_{ij} \\ & = \sum_{i \in \lbrack d\rbrack}w_{i}q_{i} = \langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{F}}. \end{aligned}
The n = 1 case extends naturally to n > 1 by doing blockwise packing, i.e. we embed using W' = I_{n} \otimes W and Q' = I_{n} \otimes Q and keep the same H. We could consider using non-uniform block packings as long as they are dual under the same H, or even mixing coordinates across different blocks, but this does not seem useful in practice and we will ignore it. Going forward, we use W and Q also for their blockwise extensions when the meaning is clear.
Under these assumptions (uniform blockwise packing and H \mathbb{F}-linear), we have characterized the possible constructions. We can choose any non-zero output map H and witness basis \left( \beta_{1},\ldots,\beta_{d} \right) and the query basis follows as the dual under H. The dual basis can be computed by forming the Gram matrix G_{ij} ≔ H\left( \beta_{i}\beta_{j} \right), inverting it in {\mathbb{F}}^{d \times d}, and computing {\mathbf{β}}^{\land} = G^{- 1}{\mathbf{β}}.
Coordinate projection
To construct a concrete dual packing, represent \mathbb{E} as {\mathbb{F}}\lbrack X\rbrack/\left( f(X) \right) for some monic degree d polynomial f irreducible over \mathbb{F}. We assume f is chosen for implementation efficiency: it is sparse with mostly low order terms.
Further we represent members of \mathbb{E} in the monomial basis \left( 1,X,X^{2},\ldots,X^{d - 1} \right). We can then represent W and Q by invertible matrices in {\mathbb{F}}^{d \times d} and H by a vector in {\mathbb{F}}^{d}. For implementation efficiency we seek an embedding with sparse W and Q. It turns out taking the most efficient choices for H and W also gives efficient Q:
Take W = I_{d} and H = (1,0,\ldots,0) selecting the X^{0} coordinate. Then the dual-basis embedding Q is given by
Q_{ij} = \begin{cases} 1 & i = j = 0 \\ - f_{i + j}/f_{0} & {i,j \geq 1\mathrm{\text{ and }}i + j \leq d} \\ 0 & \mathrm{\text{otherwise}}. \end{cases}
In particular, Q is a bordered upper anti-triangular Hankel matrix. For d = 5 it looks like
Q = \frac{1}{f_{0}}\begin{pmatrix} f_{0} & 0 & 0 & 0 & 0 \\ 0 & - f_{2} & - f_{3} & - f_{4} & - 1 \\ 0 & - f_{3} & - f_{4} & - 1 & 0 \\ 0 & - f_{4} & - 1 & 0 & 0 \\ 0 & - 1 & 0 & 0 & 0 \end{pmatrix}.
Notably f_{1} does not appear and for k > 1 the f_{k} coefficient appears k - 1 times. This perfectly matches the usual implementation preference for sparse reduction polynomials with mostly low-order terms.
When doing inner product openings, the 1/f_{0} factor can be moved out of the inner product if it is non-trivial. For the 127-bit field {\mathbb{F}}_{2}\lbrack X\rbrack/\left( X^{127} + X + 1 \right) the Q map is simply a reversal of the i > 0 coordinates. For the GHASH field {\mathbb{F}}_{2}\lbrack X\rbrack/\left( X^{128} + X^{7} + X^{2} + X + 1 \right) the map additionally needs seven XOR corrections.
Succinctness
Certain \mathbf{q} allow succinct evaluation of \widetilde{q}({\mathbf{γ}}) ≔ \langle\operatorname{eq}_{\mathbf{γ}},\mathbf{q}\rangle_{\mathbb{F}}, but this doesn’t immediately mean that the packed query Q(\mathbf{q}) can be succinctly evaluated as \langle\operatorname{eq}_{{\mathbf{γ}}'},Q(\mathbf{q})\rangle_{\mathbb{E}}. We will show that for a large class of succinct \mathbf{q} this is the case. First we define what succinctness means:
A vector \mathbf{q} \in {\mathbb{F}}^{n} for n = 2^{k} is called succinct if it admits a tensor decomposition
\begin{bmatrix} m_{10} \\ m_{11} \end{bmatrix} \otimes \begin{bmatrix} m_{20} \\ m_{21} \end{bmatrix} \otimes \cdots \otimes \begin{bmatrix} m_{k0} \\ m_{k1} \end{bmatrix}
where typically m_{ij} \in {\mathbb{F}}. The multilinear extension of \mathbf{q}, viewed as a function on \left\{ 0,1 \right\}^{k}, then becomes
\widetilde{q}(\mathbf{r}) = \prod_{i \in \lbrack k\rbrack}\left( \left( 1 - r_{i} \right)m_{i0} + r_{i}m_{i1} \right).
which can be evaluated in O(k) field operations.
More generally, the coefficients m_{ij} need not themselves be field elements. It suffices that they belong to an associative \mathbb{F}-algebra in which every complete product m_{1b_{1}}m_{2b_{1}}\cdots m_{kb_{k}} evaluates to an element of \mathbb{F}. Consequently, every vector entry and every value of the multilinear extension remains an element of \mathbb{F}. As the m_{ij} no longer need to be commutative we must therefore also fix a permutation of the variables \mathbf{r}.
Since every finite-dimensional associative algebra admits a matrix representation, we may, without loss of generality, assume that the objects m_{ij} are matrices. In fact, it suffices to take m_{ij} \in {\mathbb{F}}^{w_{i} \times w_{i + 1}} with boundary dimensions w_{1} = w_{k + 1} = 1. We call \max w_{i} the width of the representation, which is known as a matrix branching program.
The canonical example of a succinct vector is the multilinear evaluation vector \operatorname{eq}_{\mathbf{r}} itself, obtained by taking m_{i0} = 1 - r_{i} and m_{i1} = r_{i}. Another classical example is the geometric progression \left( 1,x,x^{2},\ldots \right) obtained by taking m_{i0} = 1 and m_{i1} = x^{2^{i}}. An illustrative non-scalar example is the counting vector (0,1,2,\ldots) represented by
\begin{aligned} m_{1b} & = \begin{bmatrix} 2 & b \end{bmatrix} & m_{ib} & = \begin{bmatrix} 2 & b \\ 0 & 1 \end{bmatrix} & m_{kb} & = \begin{bmatrix} b \\ 1 \end{bmatrix}. \end{aligned}
Preservation of Succinctness
An important property of dual packing is that it preserves succinctness if the block size aligns with the tensor decomposition:
Theorem 3. Given d = 2^{k}, n = 2^{l} and a \mathbb{F}-linear blockwise map Q = I_{n} \otimes Q_{0} for some isomorphism Q_{0}:{\mathbb{F}}^{d} \rightarrow {\mathbb{E}}, then if \mathbf{q} \in {\mathbb{F}}^{nd} is succinct then so is Q(\mathbf{q}). In particular if
\mathbf{q} = \bigotimes_{i \in \lbrack k + l\rbrack}\begin{bmatrix} m_{i0} \\ m_{i1} \end{bmatrix}
where the m_{ij} are w_{i} \times w_{i + 1} matrices over \mathbb{F} with w_{1} = w_{k + l + 1} = 1, then for l \geq 1
\begin{aligned} Q(\mathbf{q}) & = \left( \bigotimes_{i \in \lbrack l - 1\rbrack}\begin{bmatrix} m_{i0} \\ m_{i1} \end{bmatrix} \right) \otimes \begin{bmatrix} m_{l0} \cdot \mathbf{c} \\ m_{l1} \cdot \mathbf{c} \end{bmatrix} \end{aligned}
where \mathbf{c} \in {\mathbb{E}}^{w_{l + 1}} is a column vector given by applying Q_{0} row-wise to the suffix tensor:
\begin{aligned} \mathbf{c} & = \left( I_{w_{l + 1}} \otimes Q_{0} \right)\left( \bigotimes_{i \in \lbrack l + 1,l + k\rbrack}\begin{bmatrix} m_{i0} \\ m_{i1} \end{bmatrix} \right). \end{aligned}
The resulting widths are 1 = w_{1},\ldots,w_{l},1, and all but the last matrices have coefficients restricted to \mathbb{F}. For the case l = 0 we have Q(\mathbf{q}) = \mathbf{c}.
Proof. Index the entries of \mathbf{q} by (\mathbf{b},\mathbf{t}) \in \left\{ 0,1 \right\}^{l} \times \left\{ 0,1 \right\}^{k}, with each fixed \mathbf{b} specifying one block of d entries. Split the matrix product at the packing boundary:
P_{\mathbf{b}} = m_{1b_{1}}\cdots m_{lb_{l}},\quad R_{\mathbf{t}} = m_{l + 1t_{1}}\cdots m_{l + kt_{k}}.
Then P_{\mathbf{b}} \in {\mathbb{F}}^{1 \times w_{l + 1}}, R_{\mathbf{t}} \in {\mathbb{F}}^{w_{l + 1} \times 1}, and q_{\mathbf{b}\mathbf{t}} = P_{\mathbf{b}}R_{\mathbf{t}}. Pack each row of the suffix into a single extension-field element, defining \mathbf{c} \in {\mathbb{E}}^{w_{l + 1}} by
c_{s} = Q_{0}\left( \left( \left( R_{\mathbf{t}} \right)_{s} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right).
Since the entries of P_{\mathbf{b}} lie in \mathbb{F}, linearity of Q_{0} gives
\begin{aligned} {Q(\mathbf{q})}_{\mathbf{b}} & = Q_{0}\left( \left( P_{\mathbf{b}}R_{\mathbf{t}} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right) \\ & = \sum_{s \in \left\lbrack w_{l + 1} \right\rbrack}\left( P_{\mathbf{b}} \right)_{s}Q_{0}\left( \left( \left( R_{\mathbf{t}} \right)_{s} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right) \\ & = P_{\mathbf{b}}\mathbf{c}. \end{aligned}
This proves the displayed tensor identity.
(𝔽,𝔼)-IPCS embedding
Assume now that we wish to open a base-field witness \mathbf{w} \in {\mathbb{F}}^{nd} with an extension-field query \mathbf{q} \in {\mathbb{E}}^{nd}, to proof the claim \langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{E}} = h for some h \in {\mathbb{E}}. We present a one-round batching protocol analogous to the one in DP24 and BRW26.
Batching protocol
Given a dual packing (W,Q,H) and an arbitrary basis \left( \beta_{1},\ldots,\beta_{d} \right) for {\mathbb{E}}/{\mathbb{F}}, we reduce the extension-field claim by decomposing into basis coordinates and batching the resulting claims with a random linear combination.
Protocol 4. (Batched dual packing) Given the claim \langle\mathbf{w},\mathbf{q}\rangle_{\mathbb{E}} = h, define \mathbf{q}_{i} \in {\mathbb{F}}^{nd} such that \mathbf{q} = \sum_{i \in \lbrack d\rbrack}\mathbf{q}_{i}\beta_{i}. The parties proceed as follows.
-
Prover sends h_{i} = \langle W(\mathbf{w}),Q\left( \mathbf{q}_{i} \right)\rangle_{\mathbb{E}} for i = 1,\ldots,d.
-
Verifier checks h = \sum_{i \in \lbrack d\rbrack}H\left( h_{i} \right)\beta_{i}.
-
Verifier samples an \epsilon-zero-evader {\mathbf{ρ}} \leftarrow {\mathbb{E}}^{d}.
-
The parties reduce the claim to \langle W(\mathbf{w}),\mathbf{q}'\rangle_{\mathbb{E}} = h' where
h' = \sum_{i \in \lbrack d\rbrack}\rho_{i}h_{i}\quad\text{ and }\quad\mathbf{q}' = \sum_{i \in \lbrack d\rbrack}\rho_{i}Q\left( \mathbf{q}_{i} \right).
This interactive oracle reduction is always complete, has round-by-round soundness error \epsilon, and proof size d\log|{\mathbb{E}}| = d^{2}\log|{\mathbb{F}}|.
Preservation of succinctness
The opening claim reduces to \langle\operatorname{eq}_{\mathbf{γ}},\mathbf{q}'\rangle_{\mathbb{E}} and a natural question is if \mathbf{q}' is succinct if \mathbf{q} is. We will show that if \mathbf{q} has max width w then \mathbf{q}' has max width dw.
Theorem 5. In the protocol above, with d = 2^{k} and \mathbf{q} succinctly written as
\mathbf{q} = \bigotimes_{i \in \lbrack k + l\rbrack}\begin{bmatrix} m_{i0} \\ m_{i1} \end{bmatrix}
with m_{ij} \in {\mathbb{E}}^{w_{i} \times w_{i + 1}} and 1 = w_{1} = w_{k + l + 1}. For l \geq 1 we can write
\mathbf{q}' = {\mathbf{ρ}}^{\top} \cdot \left( \bigotimes_{i \in \lbrack l\rbrack}\begin{bmatrix} \Phi\left( m_{i0} \right) \\ \Phi\left( m_{i1} \right) \end{bmatrix} \right) \cdot \mathbf{c}
where \Phi:{\mathbb{E}} \rightarrow {\mathbb{F}}^{d \times d} is the map taking an element e \in {\mathbb{E}} to the matrix representing multiplication by e in the basis \beta, applied blockwise to the matrix elements so that \Phi\left( m_{ij} \right) \in {\mathbb{F}}^{dw_{i} \times dw_{i + 1}}. The suffix vector \mathbf{c} \in {\mathbb{E}}^{dw_{l + 1}} is computed by
\mathbf{c} = \left( I_{dw_{l + 1}} \otimes Q_{0} \right)\left( \bigotimes_{i \in \lbrack l + 1,l + k\rbrack}\begin{bmatrix} \Phi\left( m_{i0} \right) \\ \Phi\left( m_{i1} \right) \end{bmatrix} \right)\mathbf{v}
where \mathbf{v} \in {\mathbb{F}}^{d} is the coordinate vector of 1 \in {\mathbb{E}} in the basis \beta. After absorbing \mathbf{ρ} and \mathbf{c} the matrices have widths 1,dw_{2},\ldots,dw_{l},1 and all but the first and last have coefficients in \mathbb{F}. For l = 0 we have \mathbf{q}' = {\mathbf{ρ}}^{\top}\mathbf{c}.
Proof. Index the query by (\mathbf{b},\mathbf{t}) \in \left\{ 0,1 \right\}^{l} \times \left\{ 0,1 \right\}^{k}, with \mathbf{t} indexing entries within each packed block. Define
P_{\mathbf{b}} = \Phi\left( m_{1b_{1}} \right)\cdots\Phi\left( m_{lb_{l}} \right),\quad R_{\mathbf{t}} = \Phi\left( m_{l + 1t_{1}} \right)\cdots\Phi\left( m_{l + kt_{k}} \right).
Since \Phi represents multiplication, the coordinate vector of q_{\mathbf{b},\mathbf{t}} in the basis \beta is P_{\mathbf{b}}R_{\mathbf{t}}\mathbf{v}. The displayed definition of \mathbf{c} therefore gives, for each s \in \left\lbrack dw_{l + 1} \right\rbrack,
c_{s} = Q_{0}\left( \left( \left( R_{\mathbf{t}}\mathbf{v} \right)_{s} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right).
By the protocol’s definition of \mathbf{q}',
\begin{aligned} q'_{\mathbf{b}} & = \sum_{i \in \lbrack d\rbrack}\rho_{i}Q_{0}\left( \left( \left( P_{\mathbf{b}}R_{\mathbf{t}}\mathbf{v} \right)_{i} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right) \\ & = \sum_{i \in \lbrack d\rbrack}\sum_{s \in \left\lbrack dw_{l + 1} \right\rbrack}\rho_{i}\left( P_{\mathbf{b}} \right)_{is}Q_{0}\left( \left( \left( R_{\mathbf{t}}\mathbf{v} \right)_{s} \right)_{\mathbf{t} \in \left\{ 0,1 \right\}^{k}} \right) \\ & = \sum_{i \in \lbrack d\rbrack}\sum_{s \in \left\lbrack dw_{l + 1} \right\rbrack}\rho_{i}\left( P_{\mathbf{b}} \right)_{is}c_{s} \\ & = {\mathbf{ρ}}^{\top}P_{\mathbf{b}}\mathbf{c}. \end{aligned}
The second equality uses \mathbb{F}-linearity of Q_{0} and the fact that P_{\mathbf{b}} has coefficients in \mathbb{F}. This proves the claimed tensor representation.
While the width increases by a factor d, the interior matrices have coefficients in \mathbb{F}. Using dense matrix evaluation and schoolbook extension arithmetic, the online evaluation costs only a factor d more base-field operations, rather than d^{2}.
For MLE queries, this matches the performance of DP24 and BRW26, which also have proof size d^{2} and require d evaluations of \widetilde{\mathbf{q}}.
References
DP24 B. E. Diamond and J. Posen. 2024. “Polylogarithmic proofs for multilinears over binary towers.” Cryptology ePrint Archive, Paper 2024/504. https://eprint.iacr.org/2024/504
BRW26 B. Bünz, R. Rothblum, and W. Wang. 2026. “Flock: Fast proving for batch boolean computations.” Cryptology ePrint Archive, Paper 2026/1329. https://eprint.iacr.org/2026/1329
BGKSW14 R. Bloemen, B. Gillespie, D. Kales, P. Sippl, and R. Walch. 2024. “Large-scale MPC: Scaling private iris code uniqueness checks to millions of users.” Cryptology ePrint Archive, Paper 2024/705. https://eprint.iacr.org/2024/705