Fhe-Simons-Institute
Notes from this video intro.
Properties and Limitations
- Chosen-ciphertext security: HE is malleable by design, so this cannot be achieved - But weaker notions, like CCA1 can be achieved.
 
- Multi-hop: Can we apply - Evalto previously evaluated ciphertexts?- Yes, but not always.
 
- Function privacy: Does hide ? - Usually you can achieve this
 
- Obfuscation: FHE does not do this. 
- RAM: FHE does not do random access. - RAM can compute some functions much faster.
- In general random access isn't possible on encrypted data (not surprising).
- Possible to do Oblivious RAM which is interactive between client/server.
 
- Multi-Key: FHE does not do multi-key automatically - Some schemes can achieve this however.
 
- Public Key Scheme: - Theorem: There's an easy black-box transformation from secret-key HE to public-key HE.
 
Construction
Two necessary pieces:
- Express function as a circuit of addition and multiplication of bits.
- Encryption that supports addition and multiplication of bits (hard part).
Note: this isn't a true ring homomorphism:
- Otherwise zero-encryption form a linear subspace; how would you hide this?
Noise
Technique: ciphertext has noise that hides the message.
Example: SWHE over integers
- Secret: large odd integer
- Public key: .
- You can add ciphertexts  - But noise grows with each add/multiply/polynomial operation.
- Once noise grows past , decryption fails.
 
We'll focus on Gentry-Sahai-Waters scheme, HE based on LWE.
Regev's Encryption Scheme
- : - Choose secret key .
- Public key: random but restricted to "small" modulo .
 
- : - Pick random
- Output .
 
- : - Recover as the most significant bit of modulo .
 
- Properties: - If decision-LWE is hard, ciphertext are indistinguishable from uniform vectors over .
- Supports homomorphic addition.
- What about multiplication of ciphertext vectors? - We could take the tensor product... but there are problems there.
- Instead, turn the ciphertexts into matrices and use matrix multiplication.
 
 
Matrix version
- : same as above - Choose secret key .
 
- : - Choose such that each row is a Regev-encryption of and is small.
- Output .
 
- : - Set
- Output 0 if is small, 1 if is close to .
 
- Note: is an approximate eigenvector of .
- Multiplication works but you get a large error term: - where is a large term we'd like to get rid of.
 
Gadgets
To constraint the noise, we use a gadget matrix. It essentially takes a matrix of given dimension with large values, and transforms it into a higher dimensional matrix with smaller sized values.
such that
- is small
To use this, now the encryption of is a matrix such that
So for  we set  instead of .
 The result: instead of a  error term, we end up with , which is a much smaller term.
We end up with something somewhat homomorphic: supporting circuits with levels.