Salary benchmarking
that never sees your data

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

What HAMKEE Salary Benchmark does

Privacy-preserving compensation analytics for organizations that cannot share plaintext salary data.

🔒

End-to-end encryption

Salary values are encrypted on your premises using CKKS homomorphic encryption. The server computes aggregates on ciphertexts without ever decrypting them.

CKKS packing

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.

🌐

Multi-dimensional filtering

Query by country, currency, department, and job title. The server filters metadata, loads matching encrypted cohorts, and aggregates — all without seeing salary values.

🗂

PostgreSQL persistence

Sessions, encryption context, and encrypted cohorts stored in PostgreSQL. Server restarts preserve all state. No in-memory accumulation required.

📈

Proven at 100k records

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.

🛠

Session model

Register crypto context once. Submit unlimited aggregate queries using a lightweight session reference. Server caches evaluation keys for fast repeated computation.

Trust boundary by design

The client holds the secret key. The server holds only public parameters and ciphertexts. Decryption is physically impossible on the server.

1. Register

Client sends crypto context + evaluation keys. Server stores them. Happens once per session.

2. Upload

Client packs salaries into CKKS ciphertexts (64 per slot), uploads with plaintext metadata tags.

3. Aggregate

Client requests sum for a filter. Server loads matching chunks, applies EvalSum + EvalAdd, returns encrypted result.

4. Decrypt

Client decrypts result locally using its secret key. Server never knew the individual values or the aggregate.

Benchmark dashboard

Real metrics from automated benchmark campaign across three dataset scales.

HAMKEE Benchmark — 100,000 Records

Upload throughput
570 rec/s
100k records • 176 sec total
Storage reduction
58.4x
1,712 chunks vs 100,000 per-record
Server memory
2 MB
Constant RSS • DB-backed
Aggregation error
0
All cohorts • CKKS approximate
Cohort size Chunks Server compute Round-trip Status
28 records1165 ms190 msPASS
57 records1113 ms133 msPASS
1,165 records192,122 ms2,142 msPASS
2,782 records444,962 ms4,982 msPASS

What the server cannot do

The trust model is enforced by mathematics, not policy. The server is structurally unable to decrypt.

🔑

No secret key on server

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.

🛡

Lattice-based security

OpenFHE CKKS is based on the Ring Learning With Errors (RLWE) problem. Conjectured secure against both classical and quantum adversaries at standard parameters.

📊

Computation without decryption

The server uses EvalSum (slot rotation) and EvalAdd (ciphertext addition) to aggregate. These operations produce encrypted results that only the client can decrypt.

🔎

Transparent limitations

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.

Fits your existing stack

Standard HTTP/JSON API. No proprietary SDK required. Any language that can POST JSON and handle base64 blobs can integrate.

HRIS / Workday
SAP SuccessFactors
BambooHR
ADP Workforce
Custom payroll
REST / JSON
PostgreSQL
nginx reverse proxy
7 HTTP endpoints
JSON request/response
Base64 ciphertext encoding
256 MB max payload

Who needs encrypted salary benchmarking

Compensation consulting

Multi-client salary surveys

Aggregate salary data across client organizations without any client revealing individual compensation. Each client encrypts locally; the platform computes benchmarks on ciphertext.

Enterprise HR

Internal equity analysis

Compare compensation across business units, geographies, and job families. Sensitive salary data stays encrypted throughout the analytical pipeline, satisfying data protection requirements.

Regulatory compliance

Pay transparency reporting

Compute aggregate statistics required by EU Pay Transparency Directive or local regulations without exposing individual salaries to central reporting systems.

M&A due diligence

Pre-deal compensation comparison

Acquirer and target compare compensation structures without either party revealing individual salary data before deal close.

Industry consortia

Sector-wide benchmarks

Competing organizations contribute encrypted salary data to a neutral platform. Industry-level benchmarks are computed without any participant seeing another’s raw data.

Government & public sector

Cross-agency compensation

Government agencies compare pay scales across departments without centralizing personally identifiable salary records in a single database.

Real numbers, real encryption

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 groups300300300
Ciphertext chunks3003921,712
Encryption time5.4 s6.5 s30 s
Upload time (HTTP + DB)27 s34 s146 s
Throughput30 rec/s246 rec/s570 rec/s
DB storage225 MB294 MB1,286 MB
Storage reduction3.3x25.5x58.4x
Server memory (RSS)2 MB2 MB2 MB
All testsPASSPASSPASS

Packing amortization

Throughput improves 19x from 1k to 100k because larger cohorts fill more CKKS slots per ciphertext, amortizing encryption and I/O overhead.

Constant server memory

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.

Aggregation cost model

~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.

Under the hood

FHE scheme
CKKS (approximate arithmetic)
Library
OpenFHE v1.2.3
Security level
128-bit (HEStd_128_classic)
Batch size
64 slots per ciphertext
Multiplicative depth
1 (sum-only operations)
Scaling technique
FLEXIBLEAUTO
Transport
HTTP/JSON + Base64
Database
PostgreSQL 16 (BYTEA blobs)
Language
C++17 (GCC 14)
Ciphertext size
~788 KB per chunk
Platform
Rocky Linux 8.10
API endpoints
7 (register, upload, aggregate, health)

Try it yourself

Select a position below to trigger a real homomorphic aggregation on encrypted salary data. The server computes the sum without ever seeing the values.

Records matched
Chunks processed
Server compute
Round-trip
Encrypted result (only the key holder can decrypt)
This is the base64-encoded CKKS ciphertext returned by the server. The server computed EvalSum + EvalAdd on 0 chunks but cannot read the salary values or the aggregate. Only the client holding the secret key can decrypt this into a plaintext number.
Available cohorts in database (0 groups)

Ready to benchmark without exposing data?

HAMKEE Salary Benchmark is in early access. Contact us to discuss your compensation analytics use case.