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

Dynamic proofs of retrievability with low server storage

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

what is proved or measured

Anthoine et al. present a dynamic proof of retrievability (PoR) with unencoded server data, authenticated partial reads and writes, and randomized audits. They state: “Our new PoR requires only N + O(N/ log N) persistent storage.” (§1.1, p.538). Theorem 7 claims correctness, adaptive authenticity, and retrievability for the private protocol under its field and security parameters (§5.3, p.546). The public variant additionally requires linearly independent polynomial (LIP) security and a suitable prime-order group with hard discrete logarithms (Theorem 9, p.548). These are cryptographic protocol claims, not verification of a Rust implementation.

Theorem 5 establishes a time-space lower bound: for an arbitrary N-bit database, server storage N+s bits, client storage c bits, and audit time at most t steps, assuming s≥0, either t>N/4 or (s+c)t/log2(t) ≥ N/12 (§3, pp.540–541). Extra persistent storage includes both parties. The authors explicitly say their constructions do not make this bound tight. Inference: reducing storage overhead necessarily limits how inexpensive an audit can be in this model.

technique: matrix-vector audit with a secret control vector

The basic protocol interprets the unchanged file as an m × n matrix M over Fq, with each floor(log2(q))-bit chunk a field element (§4.2, p.542). At initialization, choose secret u ∈ Fq^m, compute vᵀ=uᵀM, and retain these vectors and the Merkle root. For each audit, sample independent random x ∈ Fq^n, ask the server for y=Mx, and check uᵀy=vᵀx. The server receives no messages depending on u in this basic protocol. The soundness argument bounds the chance that an incorrect response passes this secret linear check. The authors write: “The audit algorithm’s cost is mostly in the server’s matrix-vector product.” (§4.2, p.542).

Inference: a Verus model could represent matrices and establish the deterministic invariant vᵀ=uᵀM, then prove that an honest response satisfies the audit equation. That equation alone does not establish secrecy, random sampling, or retrievability; those require the protocol’s security argument.

technique: Merkle-authenticated reads and writes

The server stores a binary Merkle tree over the database, and the client retains its root (§4.3, p.543). Here b denotes the block size in bits. A range read returns the covering blocks and left/right boundary sibling hashes. The client reconstructs the root, rejects a mismatch, and otherwise extracts the requested bytes. A range write first verifies the old blocks, substitutes the new bytes, and computes a new root from the same boundary hashes; the server updates the affected tree nodes. Updating a matrix entry also requires v_j ← v_j + u_i(M′_ij−M_ij) (Figure 1, p.543).

Each hash has 2κ bits. The paper gives O(Nκ/log N) bits of tree storage when b≥log N; its formal cost table assumes the stronger condition b>κ log N (Table 2, p.546). Inference: sublinear overhead depends on block size and how κ scales. A Verus implementation could check tree traversal and update invariants while taking collision resistance as an external assumption.

technique: control-vector reductions and structured challenges

Multiple independent control rows form U and V=UM. For uniform control rows, §5.1 gives t=ceil(λ/log2(q)) to target failure at most 2^-λ (p.544). A geometric challenge x=[ρ,ρ²,…,ρⁿ] communicates one field element rather than n. Choosing t distinct nonzero secret values s_i and constructing rows [s_i,…,s_i^m] reduces storage of U from mt to t field elements. The authors state: “This reduces the storage on the client side from mt + n to only t + n field elements.” (§5.1, p.544).

For structured rows, the paper bounds incorrect acceptance by (m/q)^t and therefore specifies t=ceil(λ/(log2(q)−log2(m))) (§5.1, p.544; Theorem 7 proof, p.547). Algorithm 1 instead prints the earlier ceil(λ/log2(q)) formula (p.545). Inference: an implementation must resolve this discrepancy rather than use the uniform-row parameter with the structured-row proof. Rectangular matrices can reduce response size m by increasing n, client storage, and client work (§5.1; Table 11, p.553).

technique: extraction by Vandermonde recovery

Algorithm 5 receives e≥4n+24λ audit transcripts, more than half successful, selects n distinct successful challenges, builds X from challenges and Y from responses, and computes M=YX^-1 (§5.2–5.3, p.546). Theorem 7 assumes q≥16n+96λ. Its proof uses authenticity to obtain correct responses and a balls-and-bins argument to obtain enough distinct challenges. The authors explain: “For retrievability, we need to prove that Algorithm 5 succeeds with high probability on the last step of the security game from Definition 4.” (§5.3, p.547).

The prose reports extraction success at least 1−exp(−λ) (p.547), whereas Lemma 6’s statement prints “with probability at least exp(−λ)” (p.545). Inference: this statement and the proof’s concluding probability are inconsistent. Also, Algorithm 4 samples ρ from Fq, including zero; with powers starting at ρ¹, a zero challenge gives a zero column. Inference: the stated Vandermonde inversion argument needs n distinct nonzero challenges, which is stronger than Algorithm 5’s printed distinctness check. The paper describes Extract as a security-proof device; normal retrieval uses Read (§2, p.539).

technique: externalized controls and public verification

To reduce persistent client state to O(κ), encrypt V, store its ciphertext W and a second Merkle tree on the server, and retain the key, secret control seeds, and roots (§5.1–5.2, pp.544–545). The paper requires IND-CPA encryption with separate initialization vectors for columns. On a write, authenticate and decrypt the old control column, apply V′_j=V_j+U_i(M′_ij−M_ij), encrypt the updated column, and update its tree (Algorithm 3). An audit fetches and authenticates all W, decrypts it, and performs the linear check (Algorithm 4). This saves client storage at the expense of communication.

For public verification, replace ciphertext controls with W=g^V and publish K=g^U. Update W homomorphically and check K^y=W^x (§5.4, pp.547–548). Updated Merkle roots must be published over an authenticated, timestamped channel. Theorem 9 requires p≥max{16n+96λ, m·2^(2κ)} and LIP security in the chosen prime-order group. The server’s matrix-vector multiplication uses field arithmetic; the verifier performs group operations. Inference: Verus could check update equations under explicit field/group specifications, while the cryptographic security assumptions remain external.

evidence, limits, and VL threat

Private-mode experiments used a 57-bit prime, 7-byte input chunks, square matrices, and 8 KiB Merkle blocks hashed with SHA-512/224 (§6.1, p.549). Public mode used ristretto255, a 253-bit prime-order subgroup of Curve25519, with matrix dimensions based on 252-bit data elements. Its reported computational security parameter ranges from 117.78 to 120.2, depending on database size (pp.549–550).

On S1, one physical core with 7.5 GB RAM, private server audit time was 0.24 seconds for 1 GB and 529.90 seconds for 1 TB; public server time was 1.65 and 1725.75 seconds respectively (Tables 4–5, p.550). The 1 TB public timing was a single run; unstarred timings are medians over 11 runs after warm-up. On four-core S4, a private 1 TB audit took 278.37 seconds and cost 0.175 (Table 6, p.551). These parallel timings explain the abstract’s sub-five-minute claim. Table 7 reports 5906 KB and 1.80 seconds of communication for 1 TB on S4 (p.551). Costs are historical Google Cloud measurements, not current prices.

The authors attribute limited parallel speedup at 1 TB to roughly 4 GB/s disk throughput (§6.4, p.551). Their square-matrix cost table gives N+o(N) server storage, linear setup and server audit work, square-root audit communication and client work, and logarithmic read/write costs under its parameter choices (Table 3, p.550). Inference: for VL, useful candidates are matrix/Merkle update invariants and the interface between deterministic correctness and cryptographic arguments. The paper neither evaluates Verus nor establishes a comparative threat to VL; such an assessment would require evidence beyond this paper.

techniques for the catalog

  • Inference: matrix-vector PoR audit — maintain vᵀ=uᵀM and check uᵀy=vᵀx
  • Inference: Merkle range authentication — verify boundary paths and update the retained root
  • Inference: structured controls and challenges — reduce stored randomness and challenge communication
  • Inference: Vandermonde extraction — recover M from sufficiently many distinct nonzero successful challenges
  • Inference: encrypted externalization — move V to the server with encryption and a second Merkle tree
  • Inference: public homomorphic audit — verify exponentiated control equations using published roots and controls Checked 2026-10-16 against the full paper by a Codex agent (mid-paper quote: “The challenge, then, is to support equality testing for dot products of encrypted values, without decrypting.”): read the whole paper, including references; checked quotations, parameters, equations, algorithms, section/page references, and experimental settings; corrected chunk and block sizes, control-row parameters, extraction wording, externalized updates, timing attribution, and the paper link; added the storage-time bound and identified printed parameter/probability discrepancies and the zero-challenge issue; did not independently validate all security proofs, inspect source code, reproduce experiments, or verify Verus feasibility.

Last edited: