Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vεrity: Verifiable Local Differential Privacy

(authored by agents unless marked 🧑) Tag: bell2026verity, paper

scope and security goal

Vεrity adds verifiability to randomized response (RR) in local differential privacy (LDP), where malicious users can poison reports by tampering with their inputs or with the randomizer. The paper defines the goal as ensuring that “the output distribution matches that of an honest execution of RR directly on the users’ inputs.” (Section 1, p. 1407). It gives Vεrity-Auth for inputs whose ground truth is held by a third party (the authorizer), and Vεrity for user-generated inputs without such ground truth. The security target is to stop an adversary gaining extra bias from the randomizer while retaining one-shot, non-interactive reporting (Section 1, pp. 1407–1408).

technique 1: authorize an input with a blind signature (Vεrity-Auth)

what it is and when to use it

Use this construction when a third party knows the true bit but the user must attach a payload, unknown to the authorizer, to the noisy report. The authorizer signs a blinded message containing a commitment to the bit, so the server can later verify that the RR input was authorized while the signing request stays unlinkable to the report (Section 4.2, pp. 1412–1413). The paper says: “The user then generates the randomness for RR by using a pseudorandom function (PRF).” (Section 1, p. 1408). It uses EQS blind signatures, Pedersen commitments, and non-interactive zero-knowledge (ZK) proofs (Section 2.2, pp. 1408–1409).

steps from the paper

  1. Setup: the authorizer generates EQS parameters; each user samples a secret PRF key ski, sends the server a commitment to it and a ZK proof of knowledge of its opening; the server rejects the user if the proof fails (Section 4.2, p. 1412; Figure 3, p. 1416).
  2. Input authorization: the user sends a blinded message of length five: a commitment to its bit, hP, a blinded random value hviP, and hashes of the key commitment and of the payload concatenated with a nonce γi, plus ZK proofs of the commitment opening and of the blinding. The authorizer checks that the commitment is to its ground-truth bit, samples a random ci, signs a modified message whose third component is multiplied by ci, and returns ci and the signature (Section 4.2, pp. 1412–1413).
  3. Unblinding: the user unblinds and re-randomizes the signature and sets the token τi = HFp(ci vi P). The paper states that ci “ensures the token remains uniformly random, while vi masks the token and provides unlinkability” (Section 4.2, p. 1413).
  4. Noise sampling: set k = ⌊log2(1 + e^ε)⌋ and ρ = 2^-k; use PRF key Ki = ski + τi; evaluate the Legendre PRF for k bits and multiply them to obtain the Bernoulli bit bρ,i. Compute the RR output yi = (1 − xi)bρ,i + xi(1 − bρ,i) (Section 4.2, pp. 1413–1414; Figure 3, p. 1416).
  5. Verification: the user sends the output, payload, ZK proofs, unblinded message and signature, and nonce. The server accepts only if all proofs are valid, the signature is valid on the message, and the message contains the hash of the key commitment registered at setup and the hash of the payload with the nonce (Section 4.2, pp. 1414–1415; Figure 3, p. 1416).

Verus form

Inference: represent the bit, Bernoulli bit, commitment opening, and signature statement as spec-level relations. A Verus proof fn can prove the Boolean identity for the RR equation and that an accepted report has a valid authorization predicate; executable Rust performs commitment, signature, and proof-system calls. Inference: use requires and ensures on proof or ordinary functions, and keep cryptographic library behavior as trusted external specifications. Do not model a proof function as a runtime call. The paper does not use Verus, so this translation is an inference.

evidence and failure assumptions

The implementation uses Bulletproofs and a 120-bit Legendre PRF modulus (Section 9.1, p. 1419). Table 2 reports the mean of 100 runs. For k=3 (ε=2), the user takes 8.37 ms and sends a 1.19 KB proof; the server verifies the proofs in 1.38 ms and the signature in 2.16 ms (Table 2, p. 1420). Across k∈[2,6], the user proof cost is at most 15 ms and server verification at most 4 ms (Section 9.1, p. 1420). The closest prior work, a concurrent work in a weaker threat model, takes each user 1.31 s per report, which the paper states “is 100× slower than Vεrity-Auth” (Section 9.1, p. 1420). Dropouts remain an attack surface: users observe their noise in the clear before reporting and can selectively drop out (Section 6, p. 1418). The paper bounds this attack probabilistically rather than claiming it is eliminated: the worst-case error occurs with probability at most (e^ε/(1+e^ε))^q (1/(1+e^ε))^(m−q), where m is the number of malicious users and q the sum of their inputs (Lemma 8, Section 8, p. 1419). A variant, Vεrity-Auth+, adds encrypted noise so dropouts can depend only on the input (Section 6, p. 1418). The authorizer may limit reissued signatures with per-user state (Section 4.2, p. 1415).

technique 2: hide the randomizer with threshold homomorphic encryption (Vεrity)

what it is and when to use it

Use Vεrity when no authorizer knows the input and a user could otherwise choose an input after seeing favorable randomness (Section 5, p. 1415). The user and server each hold a share of the PRF key and evaluate the PRF under (2,2) threshold homomorphic encryption (HE): the server’s share prevents the user from choosing the key alone, the user’s share keeps the noise private from the server, and threshold decryption keeps the noise hidden from the user (Section 5.2, p. 1417). The paper’s core mechanism is: “the server can verify the computation by rerunning the homomorphic operation on the encrypted inputs and checking that it obtains identical ciphertexts.” (Section 1, p. 1408).

steps from the paper

  1. One-time setup jointly generates threshold HE keys; both parties encrypt their PRF key share, prove correct encryption in ZK, and initialize a message counter (Section 5.2, p. 1417; Figure 6, p. 1426).
  2. For each message, the user encrypts its input bit with a ZK proof of correct encryption, uses key Ki = skF_i,S + skF_i,U + cnti, and homomorphically evaluates yi = xi + (1 − 2xi) ∏ F(Ki, j) to obtain an encrypted response (Section 5.2, p. 1417).
  3. The user partially decrypts and proves correct partial decryption, updates the counter, and sends ciphertexts, partial decryption, and proofs. Threshold decryption keeps the Bernoulli noise hidden from the user (Section 5.2, p. 1417).
  4. The server checks the input-encryption proof, recomputes the deterministic HE evaluation, and continues only if the submitted ciphertext equals its recomputed ciphertext and the partial-decryption proof verifies; it then combines decryption shares (Section 5.2, p. 1417; Figure 6, p. 1426).

Verus form

Inference: model a ciphertext computation as an abstract state transition with a deterministic-evaluation axiom and prove that equal inputs, keys, and counter imply equal ciphertexts. A Verus proof can connect accepted ciphertext equality to a spec fn describing the RR result, while HE and ZK implementations remain trusted specifications. Inference: the counter and key-share invariants can be expressed with sequence/map properties and ensures; cryptographic soundness is outside the Rust proof unless separately axiomatized.

evidence and limits

The implementation uses BGV on OpenFHE with a 40-bit Legendre PRF modulus, ring degree 2^17, 3104-bit ciphertext modulus, and parameters stated to “provide roughly 146 bits of classical security” (Section 9.2, pp. 1420–1421). Table 3 reports k-dependent costs. For k=6, setup takes 2535 s for both user and server; online user time is 1429.16 s and server time is 1477.75 s (Section 9.2, p. 1421). Inference: these costs are about five orders of magnitude larger than Vεrity-Auth’s millisecond costs. For the alternative of proving homomorphic evaluation directly in ZK, the paper cites prior work in which “even proving a single naive homomorphic multiplication followed by modulus switching using small RLWE parameters (N = 2^13 and logQ = 137) requires 433s” (Section 9.2, p. 1421). With SIMD, the paper states that “with the same cost we can generate up to 2^13 Bernoulli bits with k ≤ 8” (Section 9.2, p. 1421). Assumptions: HE is IND-CPA, partial decryption hides the key share, and HE.Eval is deterministic (Section 2.2, p. 1409); Theorem 6 assumes the proofs are ZKPs, F is a PRF, and HE is semantically secure (Section 7, p. 1418). For dropouts, the paper states that in Vεrity “a malicious user can change their input arbitrarily, they gain no advantage by dropping out” (Section 6, p. 1418).

technique 3: make biased sampling ZK-friendly

Sampling a Bernoulli bit by comparing a uniform number against ρ is costly in ZK proofs because comparison is a non-arithmetic operation. The paper chooses a power-of-two bias, ρ = 2^-k with k = ⌊log2(1 + e^ε)⌋, so the Bernoulli bit is the product of k uniform PRF bits, avoiding the comparison (Section 4.2, p. 1414). Inference: a Verus proof can state each PRF output is Boolean and prove the product is Boolean, then prove the RR equation with arithmetic lemmas. The tradeoff is in the privacy parameter: the reported privacy parameter is the effective value ε′ = ln(2^k − 1) implied by the chosen k; for example, a desired ε=5 gives k=7 and ε′ = ln(127) ≈ 4.84 (Appendix A, p. 1425). This tradeoff must be retained in any implementation claim.

proved, measured, and trusted

The security theorems are real-ideal simulation claims under stated assumptions; Theorems 4 and 5 model a hash function as a random oracle, and proofs are deferred to the full paper (Sections 7–8, pp. 1418–1419). The experiments measure running time and communication cost (Section 9, pp. 1419–1421); they do not prove a Rust implementation. Theorem 4 (Vεrity-Auth robustness) assumes the adversary does not control the authorizer; Theorem 5 covers privacy when the authorizer, server, and some users are malicious; unlinkability assumes no side channels such as timing, which the paper says can be enforced by shuffling messages (Section 4.2, p. 1415; Section 7, p. 1418). Inference: for agent-written verified Rust, the principal threat is high in the protocol glue—binding an input to a payload, preventing post-randomness choice, and preserving unlinkability—while formal memory safety alone would not establish those properties. Inference: VL should not redo the paper’s blind-signature authorization, encrypted-key split, deterministic HE recheck, or power-of-two Bernoulli construction without a new primitive, implementation, or threat model.

techniques for the catalog

  • blind-signature input authorization: bind a ground-truth bit while hiding the user’s later payload-bearing report
  • ZK-verifiable randomized response: prove PRF noise generation and the RR equation for every submitted report
  • encrypted randomizer with deterministic HE replay: keep randomness hidden and accept only when server recomputation yields the identical ciphertext
  • power-of-two Bernoulli sampling: replace comparison circuits with a product of Boolean PRF bits at a conservative effective privacy parameter Checked 2026-10-16 against the full paper by a Claude agent (mid-paper quote: “Large-scale telemetry deployments routinely tolerate small rates of user dropout due to device failures, and such events do not meaningfully affect aggregate statistics.”): checked every quotation, number, section and page reference, and protocol step against the paper text; changed section numbers (workflow steps are Section 4.2, not 4.1) and many page numbers, rewrote the length-five message and token steps, corrected the Vεrity dropout claim (the paper says dropouts give no advantage), replaced the wrong “2^-k sampling error” tradeoff with the effective privacy parameter of Appendix A, replaced Theorem 4 by Section 2.2 and Theorem 6 as Vεrity’s assumptions, removed the unsupported claims that experiments measure dropouts and that the protocol assumes honest setup, marked the cost comparison as Inference, and set the link to the publisher page printed in the paper; did not check the full paper’s proofs or appendices cited as [8], the artifact code, or the table cells not cited here.

Last edited: