Compact decryption for the leveled construction #
The actual leveled decryption algorithm decodes two secret endpoints, chooses one using the
ciphertext tag, and evaluates the base decryption circuit. Its circuit bound must include this
wrapper, not just the base circuit. We apply P ⊆ P/poly to the complete native algorithm and
fix the unary security parameter by a substitution. Framing the secret-key input and fixing the
parameter together cost four gates.
The resulting family depends only on the security parameter, not on the depth budget. It agrees
with decryption on all words of the prescribed lengths, including malformed secret-key encodings.
This establishes the common-decryption-circuit condition in Gentry's Definition 3. When the base
secret width is also computable in polynomial time in unary, exists_uniform_decrypt_circuits
compiles the native decryption algorithm via CircuitValue.exists_uniformCircuitFamily to provide
a native polynomial-time circuit generator.
Main results #
Cslib.Crypto.Homomorphic.Leveled.exists_decrypt_circuits: polynomial-size circuits for the complete tagged decryption algorithm, with one family shared by every depth budget.Cslib.Crypto.Homomorphic.Leveled.exists_uniform_decrypt_circuits: uniformly generated polynomial-size circuits for the complete tagged decryption algorithm whensecretWidthis computable in polynomial time in unary.Cslib.Crypto.Homomorphic.Leveled.exists_decrypt_parameter_bound: a native time and space bound depending only on the security parameter at the prescribed widths, shared by every budget.
References #
The native decryption computation has one time and space certificate for every depth budget. On all words of the derived widths, both resources are bounded by a polynomial in the security parameter alone. The native certificate itself covers arbitrary input words.
The actual decoder, tag selection and base-circuit evaluation have polynomial-size circuits
on the derived key and ciphertext widths. One circuit family works for every depth budget, and
its specification includes every word of those widths, without a support or validity premise.
This is nonuniform circuit existence, not a circuit-generation certificate; see
exists_uniform_decrypt_circuits when secretWidth is computable in polynomial time in unary.
When the base secret width is computable in polynomial time in unary, the actual decoder, tag
selection and base-circuit evaluation have a uniformly generated family of polynomial-size circuits
on the derived key and ciphertext widths. One circuit family and one native polynomial-time
generator work for every depth budget, and the specification covers all words of the prescribed
widths, without a support or validity premise. Since hD determines only the sum
secretWidth n + ciphertextWidth n, computing the wrapper arity
(3 * secretWidth n + 1) + (ciphertextWidth n + 1) and the split point between the secret key and
ciphertext uses hsecret.