Exact row arithmetic for GSW decryption #
The expanded-secret product used by GSW.decrypt equals one recomposed ciphertext row
paired with the unexpanded secret. Its first coordinate is subtracted by the sum of the
remaining coordinates times the secret entries. For width at least two, decryption is
exclusive-or of the two highest bits of this residue.
These identities hold on every typed secret and Boolean ciphertext. They require no key generation, encryption support or noise hypothesis, as needed for a decryption circuit correct on all well-sized raw inputs. They do not yet construct that circuit or bound its depth.
Main definitions #
decryptionPhase: the recomposed row's modular inner product with the secret vector.
Main results #
decryptionPhase_eq_mulVec: the row expression equals the original expanded-secret product.decrypt_eq_decode_decryptionPhase: decryption uses the highest row of the leading coordinate.decrypt_eq_xor_highBits: the two highest bits determine decryption at width at least two.
References #
Row recomposition preserves the original multiplication by the expanded secret.
The total width-zero decryption routine returns false.
At width one, decryption is the sole bit of the selected row's phase.
At width at least two, all raw ciphertexts decrypt by exclusive-or of two phase bits.