The deterministic GSW encryption core #
This module constructs the actual public matrix, encryption with explicit binary coins, and
NAND operation of Gentry, Sahai and Waters. The modulus is 2 ^ w,
with w digits per secret coordinate and N = (n + 1) * w ciphertext rows and columns.
As documented in GSW.Gadget, this omits the paper's redundant top digit at this modulus.
Ciphertexts are Boolean matrices, so encryption and NAND preserve their dimensions and binary
entry invariant by construction. Integer errors witness the modular approximate-eigenvector
equations; their magnitudes are bounded separately.
The inputs to key construction and encryption are explicit. No distribution, computational security, native complexity bound, admissible parameter family or bootstrappability theorem is asserted here. In particular, the pointwise error bounds do not follow merely from a negligible probability of excessive noise.
Main definitions #
Ciphertext,secretVector,publicMatrix: the bit-matrix ciphertext and actual key formulas.encryptWithCoins,nand,decrypt: the actual deterministic algorithms.HasError: the modular equation witnessed by an explicit integer error vector.
Main results #
encryptWithCoins_hasError: the encryption error is the integer subset sumR * error.recomposeMatrix_encryptWithCoins: the public ciphertext recomposes toμ * G + R * A.encryptWithCoins_eq_decomposeMatrix: the ciphertext is the bit decomposition of that matrix.nand_hasError: the actual NAND operation has the stated propagated integer error.decrypt_eq_of_hasError: the decoder recovers a bit below its explicit noise threshold.decrypt_encryptWithCoins,decrypt_nand: correctness from input noise bounds.
References #
- [C. Gentry, A. Sahai and B. Waters, Homomorphic Encryption from Learning with Errors: Conceptually-Simpler, Asymptotically-Faster, Attribute-Based, Sections 3.1--3.4] [GSW13]
A square Boolean ciphertext with (n + 1) * w rows and columns.
Instances For
The actual ciphertext is the canonical decomposition of its message shift and subset sums.
Homomorphic NAND, with dimensions and binary output entries preserved structurally.
Instances For
The ciphertext's modular product equals the encoded message plus an explicit integer error. This relation does not impose a size bound on the error.
Instances For
Decode the highest digit of the leading secret coordinate. Width zero returns false.
Instances For
Recomposition exposes the exact public form used by the later security reduction.
Encryption with the actual public key has the exact integer error selected by its coins.
The actual NAND formula has error -μ₂ * error₁ - C₁ * error₂ over the integers.
Every Boolean ciphertext satisfying the actual modular equation decrypts correctly under the strict integer noise margin, whether it is fresh or produced by prior NAND operations.
Fresh encryption is correct whenever the sum bound on its integer errors fits below one quarter of the modulus. This holds for every binary choice of encryption coins.
NAND is correct under its actual propagated noise bound. The inputs can themselves be outputs of earlier operations, provided their integer error equations and bounds hold.