awslabs / awslabs/homomorphic-implementors-toolkit
Parameterize ciphertexts with an evaluator
- Dominant language
- C++
- Stars
- 72
- Forks
- 10
- PR merge metrics
- No merged PRs in 30d
Description
Ciphertexts are designed to be used with a *single* evaluator: they are encrypted via an evaluator, which packs the right information into the `CKKSCiphertext` object (either a plaintxt, a ciphertext, both, or neither).
This was brought up in a security review (how can we prevent accidentally sending a plaintext to an untrusted party), and it's also a problem in ciphertext deserialization: we don't know when to expect a raw_pt or seal_ct in a serialized object. For example, if we are trying to load a ciphertext for use with the Homomorphic evaluator, but the serialized object doesn't contain a SEAL ciphertext, then that should be an error. Currently, we happily load that ciphertext, and it will result in something horrible at runtime (most likely a SEAL error).
Contributor guide
Research direction
Start by tracing CKKSCiphertext construction, serialization and deserialization, then inspect how the Homomorphic evaluator uses raw_pt and seal_ct. Done means ciphertexts are tied to the intended evaluator and loading rejects serialized objects missing the representation that evaluator requires, while preventing accidental plaintext disclosure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cryptography, security
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100