Post-Quantum Lattices · 21 min read

Lattice-Based Cryptography:
The Foundation of Post-Quantum Security

From abstract geometry to deployed infrastructure—how hard lattice problems protect your data against both classical and quantum adversaries, enable computation on encrypted data, and underpin every NIST post-quantum standard.

FIPS 203/204
Standards
~50µs
Per Auth (H33)
128-bit
PQ Security
1996–2024
Research Span

Every finalized NIST post-quantum cryptography standard—ML-KEM (FIPS 203), ML-DSA (FIPS 204), and even the upcoming FN-DSA (FIPS 206)—is built on lattice-based mathematics. This is not a coincidence. Lattice problems offer a rare combination of properties: hardness against both classical and quantum algorithms, efficient implementation on commodity hardware, versatile construction of advanced primitives like fully homomorphic encryption, and decades of sustained cryptanalytic scrutiny. Understanding lattice cryptography is understanding the mathematical bedrock of post-quantum security.

This article provides a comprehensive introduction: what lattices are, why certain lattice problems are believed to be hard, how those problems connect to encryption schemes, and why H33's production stack—from BFV FHE to Dilithium attestation—is built entirely on lattice foundations.

What Is a Lattice?

A lattice is the set of all integer linear combinations of a collection of linearly independent vectors in n-dimensional space. If you pick a set of basis vectors b1, b2, ..., bn, the lattice L is every point you can reach by adding and subtracting whole-number multiples of those basis vectors:

Lattice Definition

L(B) = { z1b1 + z2b2 + ... + znbn : zi Z }
B Basis matrix whose columns are the basis vectors zi Integer coefficients (any whole number, positive or negative) L(B) The resulting lattice — a discrete, regularly spaced set of points

Visual Intuition: The 2D Case

In two dimensions, a lattice looks like an infinite grid of dots. Take two non-parallel arrows (basis vectors), and stamp a dot at every point you can reach by walking whole-number steps along those arrows. The grid of dots is the lattice.

2D Lattice — Points Formed by Integer Combinations of Basis Vectors

Green = basis vectors  ·  Red = target point (CVP)  ·  Each dot is a lattice point

The critical insight: the same lattice can be described by infinitely many different bases. Some bases are "nice"—short, nearly orthogonal vectors that make it easy to find nearby points. Others are "bad"—long, nearly parallel vectors that obscure the lattice structure. In low dimensions (2D, 3D), finding a good basis from a bad one is easy. In hundreds or thousands of dimensions, it becomes computationally intractable. This gap is what makes lattice cryptography work.

Why High Dimensions Matter

Human intuition breaks down completely in high-dimensional geometry. In 2D, a lattice basis reduction algorithm (like Gauss reduction) solves the shortest vector problem instantly. In 500 dimensions, the best known algorithms require time that grows exponentially with the dimension. Cryptographic lattices typically operate in dimensions of 256 to 4096, placing the problems firmly in the intractable regime for any known classical or quantum algorithm.

The Hard Problems: SVP, CVP, LWE, and Variants

Lattice cryptography's security rests on a family of problems that have resisted efficient algorithms for decades. These problems have been studied since the 1980s, and their hardness has been established through rigorous worst-case to average-case reductions.

Shortest Vector Problem (SVP)

Given a lattice basis B, find the shortest non-zero lattice vector. In two dimensions, this is trivial. In n dimensions, the best known algorithms (lattice sieving, BKZ) require time 2^(0.292n) for exact SVP, making it exponentially hard as dimension grows.

Closest Vector Problem (CVP)

Given a lattice basis B and a target point t (not on the lattice), find the lattice point closest to t. CVP is at least as hard as SVP, and is the geometric analog of the decoding problem in error-correcting codes.

Learning With Errors (LWE)

Introduced by Oded Regev in 2005, the Learning With Errors problem is the computational backbone of most lattice-based encryption schemes. LWE is not stated as a geometric lattice problem, but Regev proved it is as hard as worst-case lattice problems (specifically, quantum reductions from GapSVP and SIVP).

LWE Problem Statement

Given:

The challenge: given A and b, recover s.

Without the error term e, this is trivial linear algebra—Gaussian elimination solves it instantly. The small errors make it a provably hard problem, equivalent to solving worst-case lattice problems in dimension n.

The elegance of LWE is that it transforms a geometric problem (finding short vectors in a lattice) into an algebraic one (solving noisy linear equations) that is natural to build cryptosystems from. The error term e is what makes the problem hard, and the size of the error relative to the modulus q determines the security-correctness tradeoff.

Ring-LWE

Standard LWE has large key sizes because the matrix A is fully random. Ring-LWE, introduced by Lyubashevsky, Peikert, and Regev in 2010, replaces the random matrix with a structured one derived from polynomial rings—specifically, the ring Zq[x]/(xn + 1). Each "row" of the matrix is a cyclic rotation of a single polynomial, reducing key sizes from O(n²) to O(n).

Ring-LWE is the foundation of H33's BFV fully homomorphic encryption scheme. The polynomial ring structure is what makes FHE computationally feasible: polynomial multiplication in rings can be done efficiently using the Number Theoretic Transform (NTT), and the algebraic structure enables homomorphic addition and multiplication.

Module-LWE

Module-LWE sits between standard LWE and Ring-LWE. Instead of a single polynomial (Ring-LWE) or a fully unstructured matrix (LWE), Module-LWE uses a small matrix of polynomials—typically a k × k matrix where each entry is a polynomial in Zq[x]/(xn + 1). The module dimension k provides a security/efficiency knob that pure Ring-LWE lacks.

Module-LWE is the basis of both ML-KEM (Kyber, FIPS 203) and ML-DSA (Dilithium, FIPS 204)—the two most important NIST post-quantum standards. H33's production attestation layer uses Dilithium, operating at ~240µs for sign+verify.

ProblemStructureKey SizeUsed In
LWEUnstructured matrixO(n²)Theoretical constructions, FrodoKEM
Ring-LWESingle polynomial ringO(n)BFV/BGV/CKKS FHE, NewHope
Module-LWEk×k matrix of polynomialsO(kn)ML-KEM (Kyber), ML-DSA (Dilithium)

Why Lattice Problems Are Believed Quantum-Resistant

Shor's algorithm devastates RSA and elliptic curve cryptography because those systems rely on problems with hidden algebraic structure—integer factorization and discrete logarithms in cyclic groups—that Shor's quantum Fourier transform can exploit. Lattice problems are fundamentally different.

No Hidden Periodicity

Shor's algorithm works by encoding a mathematical problem into a periodic quantum state, then using the quantum Fourier transform to extract the period. Integer factorization reduces to period finding (the order of a mod N). Discrete logarithms reduce to period finding in a group. Lattice problems do not have this periodic structure. The error vectors in LWE are sampled from Gaussian distributions, and the underlying geometry of high-dimensional lattices does not exhibit the cyclic structure that quantum Fourier transforms exploit.

Grover's Algorithm: Only a Quadratic Speedup

The other major quantum algorithm, Grover's search, provides at most a quadratic speedup for unstructured search problems. For a lattice problem with 2128 classical security, Grover's algorithm would reduce this to roughly 264 quantum operations. This is easily countered by increasing the lattice dimension modestly—doubling the security parameter. No exponential quantum speedup has been found for lattice problems.

30 Years of Cryptanalysis

Lattice problems have been studied by mathematicians since at least the 1980s (Lenstra, Lenstra, and Lovasz's LLL algorithm, 1982) and by cryptographers since Ajtai's foundational work in 1996. Despite intense scrutiny from the world's top cryptanalysts—including researchers specifically trying to find quantum attacks—no efficient quantum algorithm for SVP, CVP, or LWE has been discovered. This is not proof of hardness, but three decades of failed attacks provides strong evidence.

Key Distinction

RSA was broken by quantum algorithms after ~20 years of study (Shor, 1994, following Rivest-Shamir-Adleman, 1977). Lattice problems have withstood ~30 years of quantum cryptanalysis with no efficient quantum attack found. The structural reason—absence of exploitable periodicity—suggests this resistance is fundamental, not merely a gap in current knowledge.

A Brief History of Lattice Cryptography

The field did not emerge overnight. It evolved through three decades of foundational results, each building on the last.

1982
LLL Algorithm (Lenstra, Lenstra, Lovasz)—First polynomial-time lattice basis reduction algorithm. Still the starting point for all lattice attacks. Efficient in low dimensions but degrades exponentially in high dimensions.
1996
Ajtai's Breakthrough—Miklos Ajtai proves that random instances of certain lattice problems are as hard as worst-case instances. This worst-case to average-case reduction was revolutionary: it meant cryptographic security could be based on the hardness of the hardest lattice, not just a random one.
1997
Ajtai-Dwork Cryptosystem—First lattice-based encryption scheme with provable security. Impractical, but proof-of-concept that lattice problems could underpin cryptography.
2005
Regev's LWE—Oded Regev introduces the Learning With Errors problem and proves quantum worst-case hardness reductions. LWE becomes the standard building block for lattice-based encryption. Regev later wins the 2024 ACM Turing Award partly for this work.
2009
Gentry's FHE Breakthrough—Craig Gentry constructs the first fully homomorphic encryption scheme, based on ideal lattices. Proves that computation on encrypted data is possible. Performance was impractical (minutes per operation), but opened the field.
2010
Ring-LWE (Lyubashevsky, Peikert, Regev)—Introduces structured lattices for efficient encryption. Key sizes drop by orders of magnitude. Enables practical lattice-based key exchange and signatures.
2012
BFV Scheme (Brakerski, Fan-Vercauteren)—Practical FHE scheme based on Ring-LWE. Supports both addition and multiplication on encrypted integers. Foundation of H33's FHE biometric authentication.
2017
CRYSTALS Suite—Kyber (key encapsulation) and Dilithium (digital signatures) submitted to NIST PQC competition. Both based on Module-LWE. Will ultimately become the winning standards.
August 2024
NIST Finalizes FIPS 203/204/205—ML-KEM (from Kyber) and ML-DSA (from Dilithium) become official federal standards. Every primary standard is lattice-based. The 28-year research arc from Ajtai to FIPS is complete.

NIST PQC Standards: All Lattice-Based

When NIST began its Post-Quantum Cryptography standardization process in 2016, submissions included schemes based on lattices, codes, multivariate polynomials, hash functions, and isogenies. After 8 years of evaluation, the primary standards that emerged are overwhelmingly lattice-based:

StandardAlgorithmTypeHardness AssumptionStatus
FIPS 203ML-KEM (Kyber)Key EncapsulationModule-LWEFinal
FIPS 204ML-DSA (Dilithium)Digital SignatureModule-LWE + SISFinal
FIPS 205SLH-DSA (SPHINCS+)Digital SignatureHash functionsFinal
FIPS 206FN-DSA (FALCON)Digital SignatureNTRU latticesDraft

FIPS 205 (SLH-DSA) is the only non-lattice primary standard—it is hash-based and serves as a conservative backup. Every other primary and near-primary standard (ML-KEM, ML-DSA, FN-DSA) is lattice-based. This is not favoritism; it reflects the fact that lattice-based schemes offered the best combination of security evidence, key sizes, performance, and implementation flexibility across all candidates.

What Happened to Non-Lattice Candidates?

SIKE/SIDH (isogeny-based) was broken in 2022 by Castryck and Decru, demonstrating the risk of less-studied mathematical foundations. Rainbow (multivariate) was broken by Ward Beullens. Classic McEliece (code-based) survived but has public keys exceeding 250KB, making it impractical for most applications. Lattice-based schemes were the only family that offered compact keys, fast operations, and survived cryptanalysis.

Security Parameter Selection

The concrete security of a lattice-based scheme depends on three interconnected parameters: the lattice dimension n, the modulus q, and the error distribution (typically a discrete Gaussian or centered binomial distribution with standard deviation σ).

Dimension (n)

The lattice dimension is the primary security parameter. Larger n means harder lattice problems. For 128-bit post-quantum security, ML-KEM-768 uses n = 256 with module dimension k = 3 (effective lattice dimension 768). H33's BFV FHE uses n = 4096 (required for the larger ciphertext space needed by homomorphic operations).

Modulus (q)

The modulus q determines the size of the algebraic space. Larger q allows more room for errors to accumulate during homomorphic operations (critical for FHE) but weakens security if not balanced with a larger dimension. For encryption-only schemes like ML-KEM, q = 3329 suffices. For FHE schemes like BFV, much larger moduli are needed—H33 uses a single 56-bit modulus in its optimized biometric_fast() mode.

Error Distribution

The error vectors must be "small enough" that decryption succeeds (the error doesn't overwhelm the message) but "large enough" that the LWE problem remains hard. ML-KEM uses a centered binomial distribution with η = 2 (each coefficient is the sum of 2 coin flips minus 2 coin flips, giving values in {-2, -1, 0, 1, 2}). The error-to-modulus ratio σ/q is the fundamental security-correctness knob.

SchemeDimension (n)Modulus (q)Error Dist.PQ Security
ML-KEM-512256, k=23329CBD(η=3)~128-bit (cat. 1)
ML-KEM-768256, k=33329CBD(η=2)~192-bit (cat. 3)
ML-KEM-1024256, k=43329CBD(η=2)~256-bit (cat. 5)
ML-DSA-65256, k=6, l=58380417Uniform(η=4)~192-bit (cat. 3)
H33 BFV (biometric_fast)409656-bit primeDiscrete Gaussian~128-bit (cat. 1)

Concrete Security: The BKZ Algorithm

The best known classical attack against lattice-based schemes uses the Block Korkin-Zolotarev (BKZ) algorithm with lattice sieving as a subroutine. BKZ works by iteratively applying an exact SVP solver to blocks of dimension β within a larger lattice basis, progressively improving the basis quality.

The Core Cost Model

The cost of running BKZ with block size β is dominated by the SVP oracle calls. The best known SVP sieving algorithms (e.g., BDGL16) have classical time complexity 20.292β and quantum time complexity 20.265β (using Grover-accelerated sieving). The required block size β to recover the secret from an LWE instance depends on the dimension, modulus, and error size.

BKZ Attack Cost (Simplified)

Tclassical 20.292β   ·   Tquantum 20.265β
β BKZ block size required to solve the LWE instance 0.292 Best known classical sieving exponent (BDGL16) 0.265 Quantum sieving exponent (Grover-accelerated, NIST estimate)

For ML-KEM-768, NIST estimates the required block size at β ≈ 740, giving a classical attack cost of roughly 2216 and a quantum attack cost of roughly 2196—both far beyond feasibility. For ML-KEM-512 (the lowest security level), β ≈ 440 yields classical cost 2128 and quantum cost 2117.

These estimates incorporate not just the SVP oracle cost but also memory requirements (sieving requires 20.2075β memory), polynomial overhead for BKZ iterations, and the gap between the LWE "primal attack" embedding dimension and the actual lattice dimension. The NIST PQC team has spent 8 years refining these estimates across multiple rounds of analysis.

Structured Lattices: Why Ring and Module Variants Win

Standard (unstructured) LWE is provably hard but impractical. A public key for n = 768 would require storing an m × n random matrix—hundreds of kilobytes. Structured variants exploit algebraic structure to compress everything while (so far) maintaining security.

The Polynomial Ring

Ring-LWE and Module-LWE operate over the polynomial ring Rq = Zq[x]/(xn + 1). Elements of this ring are polynomials of degree less than n with coefficients modulo q. The quotient by xn + 1 means polynomial multiplication wraps around: xn = -1. This creates a negacyclic structure that is both algebraically rich and computationally efficient.

Performance Advantages

NTT: The Engine of Fast Lattice Cryptography

The Number Theoretic Transform is the finite-field analog of the Fast Fourier Transform. It converts polynomial multiplication from O(n²) coefficient-wise operations to O(n log n) pointwise multiplications. Every practical lattice-based scheme—from ML-KEM to BFV FHE—depends on NTT for performance.

Input
Coefficients
Forward NTT
O(n log n)
Pointwise Mul
O(n)
Inverse NTT
O(n log n)
Output
Product

How NTT Works

The NTT operates over Zq where q is a prime satisfying q ≡ 1 (mod 2n). This ensures that Zq contains a primitive 2n-th root of unity ψ, which serves the same role as the complex root of unity in the FFT. The forward NTT evaluates a polynomial at n powers of ψ; the inverse NTT interpolates back.

The butterfly structure of the NTT (Cooley-Tukey for forward, Gentleman-Sande for inverse) creates a tree of independent operations that modern CPUs execute extremely efficiently. H33's production NTT uses a radix-4 Montgomery implementation with Harvey lazy reduction, keeping intermediate values in the range [0, 2q) between butterfly stages to avoid expensive division operations.

Rust src/fhe/ntt.rs (simplified)
// Montgomery radix-4 NTT butterfly — no division in hot path
pub fn forward_radix4_mont(a: &mut [u64], q: u64, twiddles: &[u64]) {
    let n = a.len();
    let mut m = n;
    while m > 1 {
        let half = m / 2;
        for i in (0..n).step_by(m) {
            for j in 0..half {
                let u = a[i + j];
                // Montgomery multiplication — single REDC, no division
                let v = mont_mul(a[i + j + half], twiddles[half + j], q);
                // Harvey lazy reduction: result in [0, 2q), not [0, q)
                a[i + j]        = u + v;            // may exceed q
                a[i + j + half] = u + 2 * q - v;    // stays in [0, 2q)
            }
        }
        m = half;
    }
}

This implementation avoids all modular division (the expensive operation), replaces it with Montgomery REDC (a multiply-and-shift), and defers final reduction to after all butterfly stages complete. On H33's production Graviton4 hardware, a full BFV encrypt (including parallel NTT across all moduli) runs in ~1,375µs for a 32-user batch.

Connection to FHE: Why Lattices Enable Homomorphic Computation

The deepest connection between lattice cryptography and practical security is Fully Homomorphic Encryption (FHE)—the ability to compute on encrypted data without ever decrypting it. This is not a coincidence of algorithm design; it is a structural consequence of how lattice-based encryption works.

The Noise Budget Intuition

In BFV (and other lattice-based FHE schemes), a ciphertext is a pair of polynomials (c0, c1) that satisfy c0 + c1 * s ≈ Δ * m (mod q), where s is the secret key, m is the message, and Δ = q/t is a scaling factor. The "≈" hides a small error term. Decryption computes c0 + c1 * s (mod q), rounds to remove the error, and recovers m.

Here is why homomorphic operations are possible:

The lattice structure is what makes this possible. The error terms live in a small region of the lattice, and the algebraic operations (polynomial addition and multiplication in the ring) preserve the lattice structure while keeping errors bounded. No other cryptographic family has this property at practical efficiency levels.

H33's BFV Stack: Ring-LWE in Production

H33's biometric authentication uses BFV encryption with the following parameters:

H33 BFV Production Configuration

  • Ring dimension: N = 4096
  • Plaintext modulus: t = 65537
  • Ciphertext modulus: Single 56-bit Q
  • SIMD batching: 32 users/ciphertext
  • FHE batch latency: ~1,375µs (32 users)
  • Per-auth latency: ~50µs
  • NTT: Montgomery radix-4 + Harvey lazy
  • Throughput: ~1.2M auth/sec (Graviton4)

The entire biometric matching pipeline—inner product computation, threshold comparison—executes in the FHE domain. The plaintext biometric template never exists on the server, making harvest-now-decrypt-later attacks meaningless: even a quantum adversary who breaks the encryption decades from now gets encrypted templates, not plaintext biometrics. And since BFV is Ring-LWE-based, breaking the FHE itself would require solving SVP in a 4096-dimensional lattice—well beyond any projected quantum capability.

H33's Lattice Stack: BFV + Dilithium

H33's production authentication pipeline uses two distinct lattice-based schemes in a single API call:

FHE Batch
BFV (Ring-LWE)
ZKP
STARK Lookup
Attestation
Dilithium (Module-LWE)

BFV (Ring-LWE) handles the biometric matching. 32 user templates are packed into a single ciphertext via SIMD batching. The inner product is computed as a series of NTT-domain polynomial multiplications followed by a single INTT—all on encrypted data. Ring-LWE provides the algebraic structure that makes homomorphic multiplication possible.

Dilithium (Module-LWE) handles the attestation signature. After the FHE computation and ZKP proof, a Dilithium signature attests to the result's integrity. Module-LWE provides the "Fiat-Shamir with Aborts" framework that Dilithium uses: the signer samples a masking vector, computes a challenge, and verifies that the response doesn't leak the secret key. The ~240µs sign+verify latency is achieved through batch attestation—one signature per 32-user batch.

Why Two Different Lattice Problems?

Ring-LWE (for BFV) and Module-LWE (for Dilithium) serve different purposes. Ring-LWE's maximally structured polynomial ring is what enables efficient homomorphic multiplication—essential for FHE. Module-LWE's additional matrix structure provides the flexibility needed for the Fiat-Shamir digital signature framework. Both reduce to hard lattice problems, but their algebraic structures are optimized for different cryptographic primitives.

Key Sizes and Performance: The Real-World Tradeoff

The primary practical cost of lattice-based cryptography is larger keys and signatures compared to classical algorithms. This is the price of quantum resistance, and it is modest:

SchemePublic KeySecret KeyCiphertext / SignatureClassical Equivalent
ML-KEM-7681,184 B2,400 B1,088 B (CT)X25519: 32 B pk
ML-DSA-651,952 B4,032 B3,309 B (sig)Ed25519: 32 B pk, 64 B sig
FN-DSA-512897 B1,281 B666 B (sig)Ed25519: 32 B pk, 64 B sig

Yes, ML-KEM-768 public keys are 37x larger than X25519. But 1,184 bytes is trivial in the context of a TLS handshake (which already exchanges multi-kilobyte certificate chains) or a REST API call. The computational overhead is equally modest: ML-KEM key generation, encapsulation, and decapsulation are all sub-millisecond operations on commodity hardware.

For H33's use case, the latency that matters is the full-stack per-authentication cost: ~50µs including FHE biometric matching, ZKP verification, and Dilithium attestation. This is faster than a typical database query and supports sustained throughput of ~1.2 million authentications per second on a single Graviton4 instance.

Common Misconceptions

Lattice cryptography is sometimes misunderstood, both by those who overestimate its risks and those who underestimate its maturity. Here are the most common misconceptions we encounter.

"Structured lattices (Ring-LWE) might be weaker than unstructured LWE"

This concern was legitimate in the early 2010s but has not materialized. Despite intense study, no attack has been found that exploits the ring structure of Ring-LWE or Module-LWE to achieve better than a polynomial speedup over attacks on unstructured LWE. The NIST PQC evaluation process specifically investigated this question across 8 years and concluded that the structured variants offer adequate security margins.

"Lattice-based crypto is too new and untested"

Ajtai's foundational work was published in 1996—30 years ago. LWE was introduced in 2005—21 years ago. The CRYSTALS suite (Kyber/Dilithium) was submitted to NIST in 2017 and survived 7 years of public evaluation before standardization. By comparison, RSA was 17 years old when it became widely deployed (1977 paper, ~1994 widespread TLS adoption), and AES was 6 years old at standardization (1997 submission, 2001 FIPS). Lattice cryptography is among the most scrutinized mathematical foundations in cryptographic history.

"Quantum computers will eventually break lattice problems too"

This is possible in principle but unsupported by evidence. Every exponential quantum speedup discovered so far (Shor's, Harrow-Hassidim-Lloyd, certain simulation algorithms) exploits algebraic structure (periodicity, unitarity, commutativity) that lattice problems lack. Proving that no quantum algorithm can solve lattice problems efficiently is an open problem in computational complexity, but the same is true for every cryptographic assumption, including the classical hardness of factoring. The evidence strongly favors lattice hardness.

"FHE is too slow for production use"

This was true in 2009 when Gentry's original scheme required minutes per gate operation. It is not true in 2026. H33's production BFV stack runs at 1.2 million authentications per second with FHE biometric matching in the critical path. The key innovations that made this possible: SIMD batching (32 users per ciphertext), NTT-domain computation (O(n log n) polynomial multiplication), Montgomery arithmetic (no division in the hot path), and hardware-aware optimization (Graviton4's flat memory model with 96 parallel workers).

"You need to choose between lattice-based encryption and lattice-based signatures"

These are complementary, not competing. A well-designed post-quantum stack uses lattice-based encryption (ML-KEM or BFV) for confidentiality and lattice-based signatures (ML-DSA) for authenticity—just as a classical stack uses ECDH for key exchange and ECDSA for signatures. H33 uses both in a single API call: BFV for encrypted biometric computation and Dilithium for attestation of the result.

"Larger key sizes make lattice crypto impractical for IoT/embedded"

ML-KEM-512 public keys are 800 bytes. ML-DSA-44 public keys are 1,312 bytes. These fit comfortably in the memory constraints of modern microcontrollers (even low-end Cortex-M0+ devices with 32KB SRAM). The computational cost is also manageable: ML-KEM encapsulation runs in under 1ms on a Cortex-M4 at 168MHz. The NIST PQC evaluation explicitly included embedded performance as a selection criterion.

Looking Ahead: The Lattice Foundation Is Set

Lattice-based cryptography has completed its journey from pure mathematics (Ajtai 1996) to federal standard (FIPS 203/204, August 2024) to production deployment (H33, Google, Cloudflare, Signal, and others). The theoretical foundations are deep. The cryptanalytic evidence is strong. The implementations are fast. The standards are final.

The remaining work is adoption: migrating existing systems from RSA/ECDH/ECDSA to ML-KEM/ML-DSA before harvest-now-decrypt-later collection renders today's encrypted data permanently vulnerable. NIST IR 8547 sets the deprecation timeline: classical public-key crypto deprecated after 2030, disallowed after 2035. The lattice-based replacements are ready. The question is whether organizations will deploy them in time.

For applications that need not just quantum-resistant encryption but quantum-resistant computation—biometric matching, financial analytics, medical data processing without exposing plaintext—lattice-based FHE is the only proven path. The same mathematical hardness (Ring-LWE, high-dimensional SVP) that protects ML-KEM key exchange also protects BFV homomorphic operations. One mathematical foundation. One security assumption. The entire post-quantum stack.


H33's production stack is built entirely on lattice mathematics: BFV (Ring-LWE) for FHE biometric authentication, Dilithium (Module-LWE) for post-quantum attestation, and Kyber (Module-LWE) for key exchange. Every component is quantum-resistant by construction—not by policy, not by configuration, but by the hardness of finding short vectors in thousand-dimensional lattices. One API call. ~50µs. 1.2M auth/sec.

Build With Post-Quantum Security

Enterprise-grade FHE, ZKP, and post-quantum cryptography. One API call. Sub-millisecond latency. Lattice-based by construction.

Get Free API Key → Read the Docs
Free tier · 10,000 API calls/month · No credit card required