Fully homomorphic encryption computes on data you cannot see. Zero-knowledge proofs prove statements without revealing why they are true. They are not interchangeable. They are complementary. Here is when to use each — and what happens when you combine them in one pipeline.
FHE and ZK proofs get grouped together under "privacy-preserving cryptography," and that grouping obscures a fundamental distinction. They protect different things at different stages of a computation.
FHE protects data during computation. You encrypt your inputs. A server computes on the ciphertexts. The server never sees the plaintext. The output is an encrypted result that only you can decrypt. The server did useful work on data it could not read.
ZK proofs protect data during verification. You have a fact you want someone to believe. You construct a proof that the fact is true. The verifier checks the proof. At no point does the verifier see the underlying data that makes the fact true. The verifier is convinced; the data remains private.
The difference is not subtle. FHE answers: "How do I compute on private data without exposing it?" ZK answers: "How do I prove a claim without revealing the evidence?" These are different questions. They arise at different stages of a pipeline. And the engineering requirements for each are radically different.
A simple test: If you need the server to produce a result from private inputs, you need FHE. If you need to convince a verifier that a result satisfies some condition, you need ZK. If you need both, you need both.
FHE is the right tool when you have sensitive data and need to compute on it without exposing it to the party performing the computation. The defining characteristic: the computation produces an encrypted result. Nobody in the pipeline — not the server, not the network, not the storage layer — ever sees the plaintext inputs or the plaintext output.
Concrete use cases where FHE is the correct choice:
The common thread: data stays encrypted through the entire computation. The output is encrypted. Decryption happens only at the endpoint that owns the key.
Zero-knowledge proofs are the right tool when you need to prove something to a verifier without revealing the underlying data. The defining characteristic: the verifier learns that a statement is true, and nothing else. Not the data. Not the computation path. Not any auxiliary information.
Concrete use cases where ZK is the correct choice:
The common thread: a verifier is convinced of a fact. The evidence for that fact remains hidden. No data is computed on — a pre-existing statement is proven.
Both FHE and ZK protect privacy. But they protect it at different stages. Understanding the overlap zone — where both are useful in the same pipeline — is where the real architectural insight lies.
Consider a practical scenario: encrypted credit scoring.
FHE protected the data during computation. ZK protected the result during verification. The attestation binds both stages into an auditable, tamper-evident record. Neither technology alone covers all three stages. Together, they close every gap in the pipeline.
The principle: FHE protects inputs and computation. ZK protects outputs and verification. Attestation binds the whole pipeline into a permanent, verifiable record. A complete privacy architecture needs all three.
H33 does not force you to choose. The platform routes operations to the appropriate cryptographic engine automatically. A single API call can involve FHE computation, ZK proof generation, and post-quantum attestation — the developer does not manage the transitions.
The production stack:
The concrete pipeline for encrypted biometric authentication:
The ZK layer adds less than 1 microsecond per authentication to the FHE pipeline. It is not a performance penalty. It is a verification guarantee at near-zero marginal cost.
Measured on AWS Graviton4 c8g.metal-48xl (192 vCPUs, 96 physical cores). All numbers from production builds, not benchmarks on developer hardware.
| Operation | Engine | Latency | Notes |
|---|---|---|---|
| Biometric auth (per user) | BFV (FHE) | 42µs | 32-user SIMD batch, full pipeline |
| CKKS dot product (64-dim) | CKKS (FHE) | 333ms | Full multiply + relin + rescale + rotation |
| CKKS multiply pipeline | CKKS (FHE) | 61ms | Multiply + relinearization + rescale |
| TFHE greater-than (8-bit) | TFHE (FHE) | 768 TPS | 96-channel Graviton4 |
| STARK prove (cached) | STARK (ZK) | 2.0µs | CacheeEngine cached lookup |
| STARK verify (cached) | STARK (ZK) | 0.2µs | CacheeEngine cached lookup |
| Batch attestation (32 users) | H33-74 | 391µs | SHA3 + Dilithium sign + verify |
FHE dominates the pipeline latency. That is expected — computing on encrypted data is inherently more expensive than proving a statement about plaintext. The ZK layer is three orders of magnitude faster than the FHE layer because it operates on hashes and commitments, not on encrypted polynomial rings.
This is why combining them works: the ZK overhead is invisible relative to the FHE cost. You get computation integrity verification for free, in performance terms.
Both FHE and STARKs are post-quantum secure, but for different reasons.
FHE (BFV, CKKS, TFHE): Based on the Ring Learning With Errors (RLWE) problem. The best known quantum algorithm for RLWE offers no significant advantage over classical algorithms. NIST's post-quantum standards (ML-KEM, ML-DSA) are built on the same lattice hardness assumptions. FHE inherits this security by construction.
STARKs: Based on collision-resistant hash functions (SHA3-256 in H33's implementation). Grover's algorithm reduces the effective security of hash functions by half — a 256-bit hash provides 128 bits of quantum security. This exceeds NIST's Level 1 threshold. No pairing-based mathematics. No elliptic curves. No trusted setup ceremony that could be compromised.
What H33 does NOT use: Groth16. BN254 pairings. Any SNARK construction that relies on the hardness of the discrete logarithm problem on elliptic curves. These constructions are efficient and widely deployed, but they are broken by Shor's algorithm. A post-quantum privacy stack cannot include non-post-quantum verification.
Every attestation in the H33 pipeline carries three independent post-quantum signature families: ML-DSA (lattice-based), FALCON (NTRU lattice-based), and SLH-DSA (hash-based). An attacker must break MLWE lattices, NTRU lattices, AND stateless hash functions simultaneously. Three independent mathematical bets.
Use this table when architecting a privacy-preserving system. The question is not "FHE or ZK?" The question is "What does each stage of my pipeline need?"
| I want to... | Technology | H33 Engine |
|---|---|---|
| Compute on private data without exposing it | FHE | BFV / CKKS / TFHE |
| Prove a statement without revealing evidence | ZK | STARK |
| Compute on private data AND prove the result | FHE + ZK | BFV/CKKS/TFHE + STARK |
| All of the above, post-quantum attested | FHE + ZK + Attestation | Full H33 pipeline + H33-74 |
| Match biometrics without seeing templates | FHE | BFV (42µs/auth) |
| Prove age without revealing birth date | ZK | STARK |
| Score credit risk on encrypted financials | FHE | CKKS (333ms dot product) |
| Prove score exceeds threshold without revealing it | ZK | STARK |
| Run encrypted ML and prove correctness | FHE + ZK | CKKS + STARK |
| Evaluate encrypted boolean conditions | FHE | TFHE (768 TPS 8-bit GT) |
The framework reduces to three questions:
Most production privacy pipelines need at least two of these three. Many need all three. The architecture that wins is the one where the developer does not have to stitch them together manually.
The industry conversation around "FHE vs ZK" frames them as competing technologies. They are not. They are complementary stages of a complete privacy pipeline. Asking "Should I use FHE or ZK?" is like asking "Should I use encryption or authentication?" The answer is yes. Both. For different purposes. In the same system.
FHE without ZK means you compute on encrypted data but cannot prove anything about the result without decrypting it. ZK without FHE means you can prove statements about data, but the data must exist in plaintext somewhere for the proof to be constructed. The combination — FHE computation followed by ZK verification — closes both gaps. The data is never plaintext during computation, and the result is never revealed during verification.
Add post-quantum attestation and the pipeline is complete: private computation, verifiable results, and a tamper-evident record that survives quantum computers. One API. Three cryptographic layers. Every gap closed.
The question is not FHE or ZK. The question is: where in your pipeline does each one belong? H33 answers that question with a router that selects the right engine for every operation, a STARK layer that proves every computation, and an attestation layer that commits every result. 42 microseconds per auth. Sub-microsecond verification. 74 bytes of permanent, post-quantum proof.