awslabs / awslabs/homomorphic-implementors-toolkit

Parameterize ciphertexts with an evaluator

Open
#45 2 comments 0 reactions 0 assignees View on GitHub
priority-low
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.