Aggregate compensation across companies and geographies using Fully Homomorphic Encryption. Your salary data stays encrypted from upload through computation to result.
Built on OpenFHE CKKS — peer-reviewed lattice-based cryptography
Capabilities
Privacy-preserving compensation analytics for organizations that cannot share plaintext salary data.
Salary values are encrypted on your premises using CKKS homomorphic encryption. The server computes aggregates on ciphertexts without ever decrypting them.
Up to 64 salaries packed into a single ciphertext using CKKS slot batching. EvalSum on the server reduces all slots homomorphically, cutting storage up to 58x.
Query by country, currency, department, and job title. The server filters metadata, loads matching encrypted cohorts, and aggregates — all without seeing salary values.
Sessions, encryption context, and encrypted cohorts stored in PostgreSQL. Server restarts preserve all state. No in-memory accumulation required.
Benchmarked with real encryption across 1k, 10k, and 100k records. All aggregation tests pass with zero error. Throughput scales from 30 to 570 records/sec.
Register crypto context once. Submit unlimited aggregate queries using a lightweight session reference. Server caches evaluation keys for fast repeated computation.
Architecture
The client holds the secret key. The server holds only public parameters and ciphertexts. Decryption is physically impossible on the server.
Client sends crypto context + evaluation keys. Server stores them. Happens once per session.
Client packs salaries into CKKS ciphertexts (64 per slot), uploads with plaintext metadata tags.
Client requests sum for a filter. Server loads matching chunks, applies EvalSum + EvalAdd, returns encrypted result.
Client decrypts result locally using its secret key. Server never knew the individual values or the aggregate.
Interface
Real metrics from automated benchmark campaign across three dataset scales.
| Cohort size | Chunks | Server compute | Round-trip | Status |
|---|---|---|---|---|
| 28 records | 1 | 165 ms | 190 ms | PASS |
| 57 records | 1 | 113 ms | 133 ms | PASS |
| 1,165 records | 19 | 2,122 ms | 2,142 ms | PASS |
| 2,782 records | 44 | 4,962 ms | 4,982 ms | PASS |
Security model
The trust model is enforced by mathematics, not policy. The server is structurally unable to decrypt.
The server receives only the crypto context and evaluation keys (public). The secret key never leaves client premises. Decryption is cryptographically impossible on the server.
OpenFHE CKKS is based on the Ring Learning With Errors (RLWE) problem. Conjectured secure against both classical and quantum adversaries at standard parameters.
The server uses EvalSum (slot rotation) and EvalAdd (ciphertext addition) to aggregate. These operations produce encrypted results that only the client can decrypt.
Metadata (country, department, title) and cohort sizes are visible to the server in plaintext. We document exactly what is and is not protected. No false claims of total privacy.
Integrations
Standard HTTP/JSON API. No proprietary SDK required. Any language that can POST JSON and handle base64 blobs can integrate.
Use cases
Aggregate salary data across client organizations without any client revealing individual compensation. Each client encrypts locally; the platform computes benchmarks on ciphertext.
Compare compensation across business units, geographies, and job families. Sensitive salary data stays encrypted throughout the analytical pipeline, satisfying data protection requirements.
Compute aggregate statistics required by EU Pay Transparency Directive or local regulations without exposing individual salaries to central reporting systems.
Acquirer and target compare compensation structures without either party revealing individual salary data before deal close.
Competing organizations contribute encrypted salary data to a neutral platform. Industry-level benchmarks are computed without any participant seeing another’s raw data.
Government agencies compare pay scales across departments without centralizing personally identifiable salary records in a single database.
Benchmark results
Every number below comes from actual FHE operations on actual ciphertexts. No simulations, no mocks, no plaintext shortcuts.
| Metric | 1,000 records | 10,000 records | 100,000 records |
|---|---|---|---|
| Metadata groups | 300 | 300 | 300 |
| Ciphertext chunks | 300 | 392 | 1,712 |
| Encryption time | 5.4 s | 6.5 s | 30 s |
| Upload time (HTTP + DB) | 27 s | 34 s | 146 s |
| Throughput | 30 rec/s | 246 rec/s | 570 rec/s |
| DB storage | 225 MB | 294 MB | 1,286 MB |
| Storage reduction | 3.3x | 25.5x | 58.4x |
| Server memory (RSS) | 2 MB | 2 MB | 2 MB |
| All tests | PASS | PASS | PASS |
Throughput improves 19x from 1k to 100k because larger cohorts fill more CKKS slots per ciphertext, amortizing encryption and I/O overhead.
Server RSS stays at 2 MB regardless of dataset size. All ciphertexts live in PostgreSQL, loaded on-demand per aggregation query. No in-memory accumulation.
~113 ms per chunk (EvalSum + DB load). A 2,782-record cohort (44 chunks) aggregates in ~5 seconds. Single-chunk cohorts return in <200 ms.
Technical appendix
Live demo
Select a position below to trigger a real homomorphic aggregation on encrypted salary data. The server computes the sum without ever seeing the values.
HAMKEE Salary Benchmark is in early access. Contact us to discuss your compensation analytics use case.