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

Mirror: Enabling Proofs of Data Replication and Retrievability in the Cloud

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

scope and formal-verification relevance

Mirror is a cryptographic protocol for proving that a cloud provider stores an encrypted file and a specified number of replicas. The paper defines protocol interfaces, security games, correctness conditions, and extraction arguments (Sections 2–4, pp. 1053–1061). Inference: these can inform a formal verification effort; the paper reports a Scala prototype, not a verified Rust implementation.

The paper’s objective is to remove client-side replica construction while retaining verifiable retrievability. Its abstract says, “In this paper, we address this problem and propose a novel solution for proving data replication and retrievability in the cloud, Mirror, which allows to shift the burden of constructing replicas to the cloud provider itself” (Abstract, p. 1051.)

technique 1: a compositional PoR² specification

Inference: use this model when a service must prove both the original file and provider-created replicas. The paper extends proof of retrievability (POR) with explicit replica generation and checking.

  1. Define Store(κ,D̃) → (D,τ,Π), where D̃ is the input file, D is the outsourced representation, τ is the verification tag, and Π contains copy parameters. In concrete Mirror, encryption and erasure coding precede Store; the secret verification tag τ is distinct from the uploaded block authentication values σ_i (Section 2.1, p. 1053; Section 3.3, pp. 1057–1058).
  2. Define Replicate [V:τ,Π; S:D,Π] → [V:τ; S:D(1),…,D(r),τ*]. The general model allows verifier involvement and an updated τ; the provider receives r replicas and a copy tag τ*. Mirror assigns replica construction to the provider (Section 2.1, p. 1053; Section 3.3, p. 1058).
  3. Define CheckReplica, which lets the provider validate a replica through a protocol with the verifier. Mirror omits it because the provider itself creates replicas (Section 2.1, pp. 1053–1054; Section 3.3, p. 1058).
  4. Define Verify [V:τ,Π; S:D,D(1),…,D(r)] → [V:dec], where dec is accept or reject (Section 2.1, p. 1054).
  5. State three separate security goals: extractability (the original file can be recovered), storage allocation (the provider commits enough storage), and correct replication (replicas are valid copies) (Section 2.4, p. 1054).

The separation matters. “The CheckReplica procedure allows the service provider S to check if the replicas have been correctly generated and hence protects against a malicious customer who misuses the replicas for storing additional data at lower costs.” (Section 2.1, p. 1054.) Verify instead protects the user against a rational provider (same section and page). The paper defines ε-extractability using an extractor that recovers D from any ε-admissible provider and defines (δ,ε)-binding as negligible acceptance probability when an ε-admissible rational provider allocates a storage ratio ρ < δ, where ρ = |ST|/(|D|+∑_k |D(k)|) (Definitions 1 and 2, p. 1055). Correct replication additionally requires file recovery from any replica and tag/copy-parameter sizes independent of file size; CheckReplica requires honest acceptance with probability 1 and false acceptance at most ε* (Section 2.4, pp. 1055–1056).

Inference: In Verus, represent each protocol state as a datatype or struct and make transitions explicit proof functions. requires can express valid security parameters, distinct safe-prime assumptions as trusted cryptographic axioms, and correctly sized block arrays; ensures can describe the structure of copy parameters for r replicas and preservation of block indices by Replicate. A Verus proof can check deterministic state transitions and tag equations, but not the computational hardness of RSA, PRF unpredictability, or negligible probabilities without axiomatized cryptographic assumptions. The protocol’s separation suggests separate lemmas for extraction, storage allocation, and replica correctness rather than one undifferentiated postcondition.

technique 2: RSA puzzle plus LFSR provider-side replication

Inference: use this when provider bandwidth is expensive and the provider can spend cheaper computation. Mirror sends only the original file, tags, and compact puzzle parameters. The paper argues that a provider which reconstructs missing replica sectors must spend enough computation to remove its storage-cost advantage when parameters satisfy Equation 14 (Section 4.2, pp. 1060–1061).

  1. Encrypt and erasure-code the input before Store. Generate RSA modulus N=pq with safe primes. Split D into n blocks of s sectors d_i,j ∈ Z_N; operations use the invertible elements Z_N*. Embed a characteristic bit pattern to distinguish roots during extraction; the text proposes a pattern longer than log₂(ns) bits (Store specification, Section 3.3, p. 1057; footnote 4, p. 1060).
  2. Sample a PRF key and nonzero ε_j ∈ Z_φ(N), then compute each block tag σ_i = ∏_j d_i,j^{ε_j}; upload D and all σ_i (Equation 3, p. 1057).
  3. Generate public elements g and h of hidden orders p′ and q′, where p=2p′+1 and q=2q′+1. Choose one short secret feedback polynomial over each of Z_p′ and Z_q′, and longer public multiples of those polynomials, with integer coefficients. Require α1* ≥ 2 and secret length λ with |F|^λ > ns for each field F. For each replica, choose independent initial states for the two secret LFSRs (Section 3.3, pp. 1057–1058).
  4. Give the provider the public recurrence coefficients and initial group elements g^{a_t^(k)} and h^{b_t^(k)} for 1 ≤ t ≤ λ*, not the secret exponents. The provider extends these sequences by exponentiation and multiplication. For each replica sector, compute d_i,j^(k) = d_i,j · g_i,j^(k) · h_i,j^(k), using the g sequence forward and the h sequence backward (Equations 4–6, p. 1058).
  5. To verify, sample ℓ random block/coefficient pairs (i_c,ν_c) and a nonempty subset R of replicas. The provider computes μ_j = ∏_c d_i_c,j^{ν_c} from original sectors and σ = ∏_c (σ_i_c · ∏_j ∏_{k∈R} d_i_c,j^(k))^{ν_c} from block tags and replica sectors (Equations 7–9, pp. 1058–1059).
  6. The verifier reconstructs blinding factors from secret LFSRs, cancels them in σ̃ (Equation 10), derives ε_j from the PRF, and accepts iff ∏_j μ_j^{ε_j+|R|}=σ̃ (Equation 11, p. 1059).

The paper treats modular exponentiation as sequential and expects negligible benefit from parallelization; the user exploits the RSA trapdoor (Section 3.2, pp. 1056–1057). The paper states, “Without knowing these secrets, this requires to perform modular exponentiation. Modular exponentiation is an inherently sequential process.” (Section 3.2, p. 1056.) The LFSR construction lets a user generate exponents directly while forcing the provider to operate on RSA group elements. The paper’s correctness argument cancels the blinding factor and reduces the response to the original sectors; replicas are therefore copies and Equation 11 holds (Section 3.3, p. 1059).

Inference: A Verus model can verify array dimensions, modular multiplication identities under an abstract group specification, and that the response equation follows from the replica equation. Use spec fn for mathematical group operations and proof fn lemmas for cancellation; keep actual RSA, PRF, and random sampling behind trusted external specifications. Avoid claiming that a Verus proof establishes RSA hardness.

technique 3: extraction and rational-provider binding

Inference: use this when a provider might store only a fraction of replicas and reconstruct missing sectors on demand. Mirror’s extractor collects enough valid responses to solve for block expressions, then uses exponent inversion and the embedded characteristic pattern to recover sectors (Section 4.1, pp. 1059–1060). Erasure coding supplies recovery when only fraction δ of the file is stored; the paper explicitly delegates parameter choices to the underlying POR construction (Section 4.1, p. 1059).

For binding, the provider’s missing blinding factors are products of independent forward and reverse LFSR values. Valid relations among public sequence elements must satisfy ∏_i g_i^{v_i}=1 (Equation 12, Section 4.2, p. 1060). The authors argue that the first nonzero entry in a valid-relation vector is a multiple of α1*, yielding a lower bound of ⌈log₂(α1*)⌉ on at least one exponent size. If less than δ of a replica is stored, a challenge of ℓ blocks and s sectors requires at least 2ℓs(1−δ) recomputations in expectation under the paper’s model. The resulting condition is ⌈log₂(α1*)⌉ ≥ T_thr/(3ℓs(1−δ)T_mult) (Equation 14, p. 1061). Multiple challenges, linear in κ, make avoiding recomputation negligible for bounded parallelism (Section 4.2, p. 1061).

Inference: A Verus implementation can prove the accounting identity for an expected-count calculation after supplying a probability model for challenged missing values. It can prove that a configured threshold implies a stated lower-bound expression under axiomatized cost units, but not that an adversary cannot factor N or parallelize faster than assumed. The paper limits concurrent threads and assumes storage/computation costs drive provider behavior (Section 2.3, p. 1054). Its binding claim does not cover arbitrary non-rational providers: “The reason is that a non-rational service provider could always store D only and run the Replicate procedure over and over again when needed.” (Section 2.4, p. 1055.)

technique 4: reduce verifier work with group projection and LFSR matrices

Appendix C (pp. 1067–1068) describes two implemented optimizations. First, randomly choose whether to check the g or h component at the start of verification. When checking g, raise the response equation to q′, eliminating h because its order is q′. Cancel only the g factors and check Equation 17. The authors say, “This approach incurs two additional exponentiations but completely eliminates the need to compute the expressions for the values h.” (Appendix C, p. 1067.)

Second, represent each secret LFSR by its companion matrix M. Equation 18 gives M^t A1 = A(t+1). Combine sums over challenge indices, sector positions, and replica initial states as in Equation 20. Precompute the sector-position matrix sum, which is challenge-independent. With small secret length λ, optionally precompute the initial-state sum for every nonempty replica subset, using λ(2^r−1) additional sectors. If λ does not divide the sector count s, include Equation 21’s remainder contribution. Inference: these caches trade verifier storage for arithmetic, and an implementation must handle remainder sectors. Equations 20–21 give the paper’s proposed computation; their summation bounds have not been independently proved here.

Inference: a Verus implementation could prove the companion-matrix recurrence and the distribution of matrix multiplication over these sums before connecting cached values to the original verification equation. A proof must cover both group projections and the remainder branch; the paper provides no Verus implementation.

evidence, assumptions, and limitations

The prototype was written in Scala and compared with MR-PDP. The setup used two 24-core Intel Xeon E5-2640 machines, a 100 Mbps switch, and NetEm traffic shaped to a Pareto distribution with reported mean 20 ms and variance 4 ms; each plot point averaged 10 independent measurements and sometimes showed 95% confidence intervals (Section 5.1, p. 1061). Default parameters were 64 MB files, 2048-bit RSA, 40 challenges, secret LFSR length 2, public length 15, δ=0.9, and r=2 (Table 2, p. 1062).

For 64 MB files and two replicas, the authors estimate that |α1*|=70 and at least one daily challenge of ℓ=40 remove the provider’s cost advantage from misbehavior. The estimated on-the-fly computation cost per challenge is 0.42 per hour; the storage comparison uses S3 pricing (Table 3 and Section 5.2, p. 1063). Inference: this conclusion depends on those prices, the reconstruction-cost model, and the challenge frequency.

Mirror’s honest provider throughput was about 6 verification operations per second versus almost 12 for MR-PDP; Mirror added about 800 ms of client latency compared with MR-PDP for 64 MB files (Section 5.2, pp. 1063–1064). Mirror’s provider verification overhead was almost twice MR-PDP’s and client verification took almost 1 second (p. 1064). Replicating eight additional 64 MB replicas incurred almost 765 seconds at the provider (p. 1063). Inference: these results describe the evaluated configuration and do not establish universal performance limits.

The argument relies on RSA-related hardness and PRF assumptions, erasure coding, random challenges, a reconstruction-cost model, and bounded provider parallelism (Sections 3.2–4.2, pp. 1056–1061). The paper states, “We assume that an erasure coding is applied to the file to ensure the recovery of file contents from any fraction δ of the file.” (Section 4.1, p. 1059.) The protocol does not provide confidentiality itself: the paper assumes the user encrypts before Store (Section 2.4, p. 1054). It also assumes files and replicas cannot be further compressed (Section 2.4, p. 1055). Characteristic padding disambiguates roots probabilistically: footnote 4 allows more than one matching root and chooses padding to make the expected number of incorrectly reconstructed sectors less than 1 (pp. 1057, 1060). Inference: this is not an unconditional unique-decoding theorem.

techniques for the catalog

  • compositional PoR² model — specify Store, Replicate, CheckReplica, Verify, extractability, storage allocation, and correct replication as separate interfaces and properties
  • RSA/LFSR provider replication — combine sequential RSA puzzles with secret/public multiple LFSRs so providers build replicas without client re-upload
  • compact batch verification — challenge blocks and a subset of replicas, cancel reconstructible blinding factors, and check one multiplicative equation
  • verifier projection and matrix precomputation — eliminate one group component and combine LFSR state sums, including remainder sectors
  • extraction and rational binding — recover sectors from enough responses and choose LFSR coefficients so on-demand reconstruction costs more than storage

Last edited: