Integer noise witnesses for GSW encryption #
The modular ciphertext equations use explicit integer errors. A binary matrix sends an error vector to a subset sum in each row. Fresh encryption therefore has error at most the sum of the input magnitudes. For NAND, the first ciphertext multiplies the second error, and the second message multiplies the first error. These bounds use the structural Boolean-entry invariant.
Main definitions #
encryptionError: the integer subset sums selected by the encryption coins.nandError: the exact propagated integer error for the NAND operation.
Main results #
encryptionError_natAbs_le:merrors bounded byBgive fresh error at mostm * B.nandError_natAbs_le: errors bounded byB₁,B₂give NAND error at mostB₁ + N * B₂.
References #
- [C. Gentry, A. Sahai and B. Waters, Homomorphic Encryption from Learning with Errors: Conceptually-Simpler, Asymptotically-Faster, Attribute-Based, Sections 3.1 and 3.3] [GSW13]
theorem Cslib.Crypto.Homomorphic.GSW.nandError_natAbs_le {ι : Type u_1} [Fintype ι] (C₁ : Matrix ι ι Bool) (μ₂ : Bool) (error₁ error₂ : ι → ℤ) {bound₁ bound₂ : ℕ} (herror₁ : ∀ (i : ι), (error₁ i).natAbs ≤ bound₁) (herror₂ : ∀ (i : ι), (error₂ i).natAbs ≤ bound₂) (i : ι) :
NAND increases error from B₁, B₂ to at most B₁ + N * B₂.